0

ジオメトリ コレクションとしてジオメトリ タイプのレイヤーを作成できません。したがって、シェープファイルに出力できません。以下にコードを添付しました。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)

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

0

ESRI シェープファイルドライバーは、レイヤーごとに 1 つのジオメトリ タイプをサポートしますが、これをジオメトリ コレクション タイプにすることはできません。

したがって、次のようになります。

# 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

また、各ジオメトリ タイプを適切なレイヤーに追加する必要があります。辞書を使用してマッピングを行うことができる非常にスマートな方法がおそらくいくつかあります。ジオメトリ タイプのキーが存在しない場合は、必要なレイヤーなどを作成できます。

于 2014-04-28T21:59:03.853 に答える
0

コレクションを個々のコンポーネントに変換してから、レイヤーにプロットすることで問題を解決しました。シェープファイルはコレクションをサポートしていないため、他の方法では不可能でした。私の目的はそれをシェープファイルにプロットすることだったので、これは私にとってはうまくいきました。

于 2014-05-19T07:28:51.103 に答える