需要帮助创建具有geom类型wkbGeometryCollection的层吗

2024-06-01 02:22:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有困难创建一个层与geom类型作为几何集合。因此,我无法输出到shapefile。我附上下面的代码。dstLayer为空。如果geom type是polygon或multilinestring或任何其他类型,则不会发生这种情况。在

spatialReference = osr.SpatialReference()
spatialReference.SetWellKnownGeogCS('WGS84')
driver = ogr.GetDriverByName("ESRI Shapefile")
dstPath = os.path.join("common-border", "border.shp")
dstFile = driver.CreateDataSource(dstPath)
dstLayer = dstFile.CreateLayer("layer", spatialReference, ogr.wkbGeometryCollection)

任何帮助都将不胜感激。在

谢谢


Tags: 代码类型typedriver情况shapefilepolygongeom
2条回答

我通过将集合转换为其单独的组件,然后将其打印到图层中,解决了这个问题。因为shapefile不支持集合,所以没有其他方法。因为我的目标是把它绘制到shapefile上,这对我很有用。在

ESRI Shapefile驱动程序支持每层一个几何体类型,这不能是几何体集合类型。在

所以看起来像这样:

# this will create a directory with 1 or more shapefiles
dst = driver.CreateDataSource("common-border")
# create common-border/points.shp
pointLayer = dst.CreateLayer("points", spatialReference, ogr.wkbPoint)
# create common-border/polygons.shp
polygonLayer = dst.CreateLayer("polygons", spatialReference, ogr.wkbPolygon)
# ... as needed
dst.GetLayerCount()  # 2 layers / shapefiles

您需要将每个几何体类型添加到适当的层。也许你可以用字典做一些非常聪明的事情来做映射,如果几何体类型的键不存在,它可以创建所需的层,等等

相关问题 更多 >