def write(self, outfile, format="ESRI Shapefile", overwrite=True):
(outfilepath, outfilename) = os.path.split(outfile)
basename = os.path.splitext(outfilename)[0]
driver = ogr.GetDriverByName(format)
if os.path.exists(outfile):
if overwrite:
driver.DeleteDataSource(outfile)
else:
raise IOError("file already exists")
outdataset = driver.CreateDataSource(outfile)
outlayer = outdataset.CreateLayer(self.layername, geom_type=self.geomType)
outlayerdef = outlayer.GetLayerDefn()
for fieldDef in self.fieldDefs:
outlayer.CreateField(fieldDef)
for feature in self.layer:
outFeature = ogr.Feature(outlayerdef)
outFeature.SetGeometry(feature.GetGeometryRef())
for j in range(0, self.nfields):
outFeature.SetField(self.fieldnames[j], feature.GetField(j))
# add the feature to the shapefile
outlayer.CreateFeature(outFeature)
outFeature.Destroy()
srs_out = self.srs.Clone()
srs_out.MorphToESRI()
with open(os.path.join(outfilepath, basename+".prj"), "w") as prj:
prj.write(srs_out.ExportToWkt())
outdataset.Destroy()
评论列表
文章目录