Удалить ненужные столбцы из файла географических данных?

10

У меня есть некоторые данные GML, в которых есть ненужные столбцы. Я хотел бы удалить эти столбцы, чтобы уменьшить размер файла. (Чтобы уточнить: я имею в виду, что файл имеет много точек, и к каждой из этих точек прикреплены некоторые метаданные, и мне не нужны все метаданные.)

Я также хотел бы сделать это из командной строки, так как у меня много файлов.

Я могу конвертировать файлы GML в разные форматы, используя ogr2ogrмой вопрос, так что мой вопрос: какой самый простой способ удалить столбец из файла географических данных из командной строки?

Я программист на Python, поэтому мой инстинкт должен был преобразовать файл в GeoJSON, а затем использовать методы анализа JSON Python для чтения и перезаписи файла 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
user30184
источник
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.
впипкт