Как переименовать имена полей в шейп-файле из командной строки?

20

Мне нужно переименовать имена полей (атрибуты) в шейп-файл. Есть ли простой способ сделать это из командной строки?

rudivonstaden
источник

Ответы:

31

Вы можете использовать утилиту ogr2ogr, которая поставляется с инструментами командной строки gdal . Используйте -sqlопцию следующим образом:

ogr2ogr outputfile.shp inputfile.shp -sql "SELECT oldfield1 AS newfield1, oldfield2 AS newfield2 from inputfile"

В качестве дополнительного бонуса вы можете одновременно конвертировать данные в другой формат или фильтровать свои данные, указав условие where. Обратите внимание, что вам нужно будет указать все выходные поля, если вы используете этот метод (любые поля, не включенные в оператор SELECT, будут удалены из выходного файла).

rudivonstaden
источник
2
Вы также можете перечислить имена полей с помощьюogrinfo -so inputfile.shp inputfile
Mike T
Примечание: этот метод работает только при преобразовании шейп-файлов. Например, если вы используете формат данных GeoJSON, вам необходимо сначала преобразовать его в шейп-файл, а затем выполнить другое преобразование, используя -sqlфлаг.
Кленрик
Также вы должны добавить опцию -dialect SQLITE, иначе ogr2ogr выдаст ошибку 6: output_file.shp должен содержать хотя бы одно поле атрибута 1
Дмитрий Литвинов