ogr2ogrでの-skipfailuresの意図された動作は何ですか?


9

ogr2ogrを実行して、geojsonをシェープファイルに変換しようとしています。geojsonフィーチャのいずれかに無効なジオメトリがあるまで(たとえば、ポイントジオメトリの座標配列が空になるまで)、すべてが適切です。

-skipfailuresフラグを含めましたが、ogr2ogrが最初の無効な機能に到達するとすぐに終了します。ここで何か悪いことをしていませんか?

ogr2ogr呼び出しの例:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson

回答:


4

-nlt geometryogrスクリプトに追加してみてください:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson -nlt geometry

同じレイヤーにシングルパートフィーチャとマルチパートフィーチャの両方を含むデータセットを変換するためにogr2ogrを使用して説明する問題を経験しました。たとえば、POINTとMULTIPOINT、LINE AND MULTILINE、POLYGONとMULTIPOLYGONなどです。

デフォルトでは、OGRは慣例に従い、データセットごとに1つの機能タイプのみを使用することを求めています。ルールに違反すると、OGRは一般的なエラーをスローし、-skipfailuresフラグを推奨します。これは、実際の問題が同じレイヤー内のジオメトリの混合/一致である場合、誤解を招く可能性があります。

ESRIシェープファイルは同じレイヤー内の単一/マルチパートフィーチャを許可するため、有効なジオメトリがある場合でも、OGRがこのエラーをスローする可能性があることを認識する必要があります。そのシナリオでは、2つのオプションがあります。1)マルチパートフィーチャをシングルパートに変換します(-explodecollectionsフラグはogrで実行できます)、または2)-nltフラグを使用GEOMETRYしてオプションとして指定します。この-nlt GEOMETRYオプションを使用すると、フィーチャタイプの混合を同じレイヤーに組み合わせることができます。もちろん、結果として、OGRはベストプラクティスを保護しません。

GeoJSONファイルがESRIシェープファイルとして「開始された」場合、そのデータセットにPOINT機能とMULTIPOINT機能の両方が含まれている可能性があります。その場合、有効なポイントでもこの問題が発生する可能性があります。


2
 -skipfailures: Continue after a failure, skipping the failed feature.

発生している動作の1つの説明は、geoJSONファイルのすべての機能が壊れている可能性があります。QGISの「ジオメトリの有効性をチェックする」など、それらの有効性をテストしましたか


他の機能はすべて有効です。元の投稿で説明した1ポイントジオメトリを修正すると、他のすべてのgeojsonポイントが出力シェープファイルに追加されます。
user890 2011

1

私が理解している意図された動作は、無効な機能が検出された場合、スキップされ、変換が停止するのではなく、次の有効な機能で続行されることです。

あなたはすべてを適切に行っているようですので、何が悪いのかわかりません!それが機能するかどうかを確認するためだけに別の形式に行ってみましたか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.