Geoscience Reference
In-Depth Information
else:
import ogr
import argparse
usage='usage: buffer <infile> <outfile> <distance>'
parser = ArgumentParser()
parser.add_argument("-i","--input", help="Name of input
file", dest="inputname", required=True,type="string")
parser.add_argument("-o","--output", help="Name of
output file", dest="outputname", required=True,
type="string")
parser.add_argument("-d","--distance", help="Buffer
distance in map units", dest="distance", required=True,
type="string")
args = parser.parse_args()
inputname = args.inputname
outputname = args.outputname
distance = args.distance
if buffer(inputname, outputname, distance):
print 'Buffer succeeded!"
sys.exit(0)
else:
print'Buffer failed!'
sys.exit(1)
We then write a function buffer that accepts the three inputs:
def buffer(infile,outfile,buffdist):
try:
ds_in=ogr.Open( infile )
lyr_in=ds_in.GetLayer( 0 )
drv=ds_in.GetDriver()
if os.path.exists( outfile ):
drv.DeleteDataSource(outfile)
ds_out = drv.CreateDataSource( outfile )
layer = ds_out.CreateLayer(
lyr_in.GetLayerDefn().GetName(), \
lyr_in.GetSpatialRef(), ogr.wkbPolygon)
n_fields = lyr_in.GetLayerDefn().GetFieldCount()
for i in xrange ( lyr_in.GetLayerDefn().GetFieldCount()
):
field_in = lyr_in.GetLayerDefn().GetFieldDefn( i )
fielddef = ogr.FieldDefn( field_in.GetName(),
field_in.GetType() )
layer.CreateField ( fielddef )
featuredefn = layer.GetLayerDefn()
#here we loop through features in the layer
for feat in lyr_in:
geom = feat.GetGeometryRef()
feature = feat.Clone()
 
 
Search WWH ::




Custom Search