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


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

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.
впипкт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.