【问题标题】:need help creating layer with geom type wkbGeometryCollection需要帮助创建几何类型 wkbGeometryCollection 的图层
【发布时间】:2014-06-09 21:00:50
【问题描述】:

我在创建几何类型为几何集合的图层时遇到问题。因此我无法输出到 shapefile。我在下面附上了代码。 dstLayer 为空。如果 geom 类型是多边形或多线串或任何其他类型,则不会发生这种情况。

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)

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 不可能,因为 Shapefile 不支持集合。

标签: python gis esri gdal shapely


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我通过将集合转换为其单独的组件然后将其绘制到图层中来解决了这个问题。由于 shapefile 不支持集合,因此不可能有任何其他方式。因为我的目标是将它绘制到对我有用的 shapefile 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2011-08-02
      相关资源
      最近更新 更多