我们从Python开源项目中,提取了以下2个代码示例,用于说明如何使用osgeo.ogr.wkbLineString25D()。
def export_shp_breaklines(self, outshp): from osgeo import ogr # Now convert it to a shapefile with OGR driver = ogr.GetDriverByName('Esri Shapefile') ds = driver.CreateDataSource(outshp) layer = ds.CreateLayer('', None, ogr.wkbLineString25D) # Add one attribute layer.CreateField(ogr.FieldDefn('id', ogr.OFTInteger)) fieldLineType = ogr.FieldDefn('LineType', ogr.OFTString) fieldLineType.SetWidth(4) layer.CreateField(fieldLineType) defn = layer.GetLayerDefn() ## If there are multiple geometries, put the "for" loop here for id, line in self.breaklines.iteritems(): # Create a new feature (attribute and geometry) feat = ogr.Feature(defn) feat.SetField('id', int(id)) feat.SetField('LineType', line['linetype']) # Make a geometry, from Shapely object geom = ogr.CreateGeometryFromWkb(line['geometry'].wkb) feat.SetGeometry(geom) layer.CreateFeature(feat) feat = geom = None # destroy these # Save and close everything ds = layer = feat = geom = None
def DumpReadableGeometry( poGeometry, pszPrefix, options ): if pszPrefix == None: pszPrefix = "" if 'DISPLAY_GEOMETRY' in options and EQUAL(options['DISPLAY_GEOMETRY'], 'SUMMARY'): line = ("%s%s : " % (pszPrefix, poGeometry.GetGeometryName() )) eType = poGeometry.GetGeometryType() if eType == ogr.wkbLineString or eType == ogr.wkbLineString25D: line = line + ("%d points" % poGeometry.GetPointCount()) print(line) elif eType == ogr.wkbPolygon or eType == ogr.wkbPolygon25D: nRings = poGeometry.GetGeometryCount() if nRings == 0: line = line + "empty" else: poRing = poGeometry.GetGeometryRef(0) line = line + ("%d points" % poRing.GetPointCount()) if nRings > 1: line = line + (", %d inner rings (" % (nRings - 1)) for ir in range(0,nRings-1): if ir > 0: line = line + ", " poRing = poGeometry.GetGeometryRef(ir+1) line = line + ("%d points" % poRing.GetPointCount()) line = line + ")" print(line) elif eType == ogr.wkbMultiPoint or \ eType == ogr.wkbMultiPoint25D or \ eType == ogr.wkbMultiLineString or \ eType == ogr.wkbMultiLineString25D or \ eType == ogr.wkbMultiPolygon or \ eType == ogr.wkbMultiPolygon25D or \ eType == ogr.wkbGeometryCollection or \ eType == ogr.wkbGeometryCollection25D: line = line + "%d geometries:" % poGeometry.GetGeometryCount() print(line) for ig in range(poGeometry.GetGeometryCount()): subgeom = poGeometry.GetGeometryRef(ig) from sys import version_info if version_info >= (3,0,0): exec('print("", end=" ")') else: exec('print "", ') DumpReadableGeometry( subgeom, pszPrefix, options) else: print(line) elif 'DISPLAY_GEOMETRY' not in options or EQUAL(options['DISPLAY_GEOMETRY'], 'yes') \ or EQUAL(options['DISPLAY_GEOMETRY'], 'WKT'): print("%s%s" % (pszPrefix, poGeometry.ExportToWkt() )) return