地理データファイルから不要な列を削除しますか?


10

不要な列が含まれているGMLデータがあります。ファイルサイズを小さくするために、これらの列を削除します。(明確にするために:ファイルには多くのポイントがあり、これらのポイントのそれぞれにメタデータが添付されていることを意味します。メタデータのすべてが必要なわけではありません。)

多くのファイルがあるので、コマンドラインからもこれを実行します。

GMLファイルをを使用してさまざまな形式に変換できるogr2ogrので、私の質問は次のとおりです。コマンドラインから地理データファイルから列を削除する最も簡単な方法は何ですか。

私はPythonプログラマーなので、本能はファイルをGeoJSONに変換し、PythonのJSON解析メソッドを使用してJSONファイルの読み取りと再書き込みを行うことです。

しかし、GDALツールなどを使用するより直接的な方法があるかもしれません。

回答:


10

一時ファイル形式としてのシェープファイルは不要であり、GMLデータも変更する可能性があります(属性名を短くする、文字列を最大255文字にカットする、DATETIMEをDATEに変更するなど)。

不要な属性を削除するのではなく、必要な属性を選択してogr2ogrを使用します。SQLite SQL方言は、デフォルトのOGR方言よりも標準的です。そのため、このクエリでは不要であっても、これを使用しています。

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml

9

OGR SQLを使用してフィールドを削除し、フィールドの削除をサポートするOGR形式を選択できます。残念ながら、GMLはこれをサポートしていないため、SHPなどの別の形式を通過する必要があります。

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp

私は、GeoJSONドライバーを使用して、より単純で類似したことを行うことができました。 ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" ALTERのテーブルとしてファイル名を使用していることに注意してください。
vpipkt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.