PYTHON OGR
From DreamsteepWiki
import osgeo.osr
class osr.SpatialReference
def __init__(self,obj=None):
def ImportFromWkt( self, wkt ):
def ExportToWkt(self):
def ImportFromEPSG(self,code):
def IsGeographic(self):
def IsProjected(self):
def GetAttrValue(self, name, child = 0):
def SetAttrValue(self, name, value):
def SetWellKnownGeogCS(self, name):
def SetProjCS(self, name = "unnamed" ):
def IsSameGeogCS(self, other):
def IsSame(self, other):
def SetLinearUnits(self, units_name, to_meters ):
def SetUTM(self, zone, is_north = 1):
class CoordinateTransformation:
def __init__(self,source,target):
def TransformPoint(self, x, y, z = 0):
def TransformPoints(self, points):
RASTER
#! /usr/bin/python
from osgeo import gdal
import sys
import numpy
src_file = sys.argv[1]
dst_file = sys.argv[2]
out_bands = 3
# Open source file
src_ds = gdal.Open( src_file )
src_band = src_ds.GetRasterBand(1)
# create destination file
## driver.Create( outfile, outwidth, outheight, numbands, gdaldatatype)
dst_driver = gdal.GetDriverByName('GTiff')
dst_ds = dst_driver.Create(dst_file, src_ds.RasterXSize,
src_ds.RasterYSize, out_bands, gdal.GDT_Byte)
# create output bands
band1 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize])
band2 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize])
band3 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize])
# set the projection and georeferencing info
dst_ds.SetProjection( src_ds.GetProjection() )
dst_ds.SetGeoTransform( src_ds.GetGeoTransform() )
# read the source file
for iY in range(src_ds.RasterYSize):
src_data = src_band.ReadAsArray(0,iY,src_ds.RasterXSize,1)
col_values = src_data[0] # array of z_values, one per row in source
data
for iX in range(src_ds.RasterXSize):
z_value = col_values[iX]
[R,G,B] = MakeColor(z_value)
band1[iY][iX] = R
band2[iY][iX] = G
band3[iY][iX] = B
# write each band out
dst_ds.GetRasterBand(1).WriteArray(band1)
dst_ds.GetRasterBand(2).WriteArray(band2)
dst_ds.GetRasterBand(3).WriteArray(band3)
dst_ds = None
VECTOR
"""Merge a group of shapefiles into one new one."""
import sys
import glob
from osgeo import ogr
outfile = "merge.shp"
file_list = glob.glob("*.shp")
# CREATE OUTPUT FILE
out_driver = ogr.GetDriverByName( 'ESRI Shapefile' )
out_ds = out_driver.CreateDataSource(outfile)
out_srs = None
out_layer = out_ds.CreateLayer("trans", out_srs, ogr.wkbLineString)
fd = ogr.FieldDefn('name', ogr.OFTString)
out_layer.CreateField(fd)
fd = ogr.FieldDefn('kV', ogr.OFTInteger)
out_layer.CreateField(fd)
cont. on next slide
# READ EACH INPUT FILE AND WRITE FIELDS TO NEW FILE
for shapefile in file_list:
print shapefile
[filename, extension] = shapefile.split('.')
in_drv = ogr.GetDriverByName( 'ESRI Shapefile' )
in_ds = in_drv.Open(shapefile)
in_layer = in_ds.GetLayer(0)
in_feature = in_layer.GetNextFeature()
kV_field = in_feature.GetFieldIndex('kV')
counter = 1
while in_feature is not None:
name = filename + "_" + `counter`
kV = in_feature.GetField(kV_field)
out_feat = ogr.Feature(out_layer.GetLayerDefn())
out_feat.SetField('name', name)
out_feat.SetField('kV', kV)
out_feat.SetGeometry(in_feature.GetGeometryRef().Clone())
out_layer.CreateFeature(out_feat)
out_layer.SyncToDisk()
out_feat.Destroy()
in_feature.Destroy()
in_feature = in_layer.GetNextFeature()
counter += 1
out_ds.Destroy()
# GDAL
from osgeo import ogr, gdal
from osgeo.gdalconst import *
# sample data
data = [[3333317.0,5684892.0],[3333417.0,5684892.0],\
[3333317.0,5684992.0],[3333417.0,5684992.0]]
# Create Shapefile named "polygon.shp" for output
driver = ogr.GetDriverByName('ESRI Shapefile')
output = "polygon.shp"
datasource = driver.CreateDataSource(output)
layer = datasource.CreateLayer(output, geom_type=ogr.wkbPolygon)
feature = ogr.Feature(layer.GetLayerDefn())
wkt = "POLYGON(" + str(data[0][0]) + " " + str(data[0][1]) + "," + str(data[1][0]) + " " + str(data[1][1]) + "," + str(data[2][0]) + " " + str(data[2][1]) + "," + str(data[3][0]) + " " + str(data[3][1]) + ")"
polygon = ogr.CreateGeometryFromWkt(wkt)
layer.CreateFeature(feature)
# Clean up
feature.Destroy()
datasource.Destroy()
print "Feature <" + str(output) + "> successfully created."
del output
#Add feature.SetGeometry(polygon) before layer.CreateFeature(feature)
'ApproximateArcAngles' , 'BuildPolygonFromEdges' , 'CreateGeometryFromGML' , 'CreateGeometryFromJson' , 'CreateGeometryFromWkb' , 'CreateGeometryFromWkt' , 'DataSource' , 'DataSource_swigregister' , 'DontUseExceptions' , 'Driver' , 'Driver_swigregister' , 'Feature' , 'FeatureDefn' , 'FeatureDefn_swigregister' , 'Feature_swigregister' , 'FieldDefn' , 'FieldDefn_swigregister' , 'GeneralCmdLineProcessor' , 'Geometry' , 'Geometry_swigregister' , 'GetDriver' , 'GetDriverByName' , 'GetDriverCount' , 'GetOpenDS' , 'GetOpenDSCount' , 'Layer' , 'Layer_swigregister' , 'NullFID' , 'ODrCCreateDataSource' , 'ODrCDeleteDataSource' , 'ODsCCreateLayer' , 'ODsCDeleteLayer' , 'OFTBinary' , 'OFTDate' , 'OFTDateTime' , 'OFTInteger' , 'OFTIntegerList' , 'OFTReal' , 'OFTRealList' , 'OFTString' , 'OFTStringList' , 'OFTTime' , 'OFTWideString' , 'OFTWideStringList' , 'OJLeft' , 'OJRight' , 'OJUndefined' , 'OLCCreateField' , 'OLCDeleteFeature' , 'OLCFastFeatureCount' , 'OLCFastGetExtent' , 'OLCFastSetNextByIndex' , 'OLCFastSpatialFilter' , 'OLCRandomRead', 'OLCRandomWrite', 'OLCSequentialWrite', 'OLCStringsAsUTF8', 'OLCTransactions', 'Open', 'OpenShared', 'RegisterAll', 'SetGenerate_DB2_V72_BYTE_ORDER', 'UseExceptions', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'deprecation_warn', 'osr', 'wkb25Bit', 'wkb25DBit', 'wkbGeometryCollection', 'wkbGeometryCollection25D', 'wkbLineString', 'wkbLineString25D', 'wkbLinearRing', 'wkbMultiLineString', 'wkbMultiLineString25D', 'wkbMultiPoint', 'wkbMultiPoint25D', 'wkbMultiPolygon', 'wkbMultiPolygon25D', 'wkbNDR', 'wkbNone', 'wkbPoint', 'wkbPoint25D', 'wkbPolygon', 'wkbPolygon25D', 'wkbUnknown', 'wkbXDR']

