Я пытаюсь создать новое поле в моей таблице атрибутов и ввести значения из другого поля после преобразования из символа в целое число, но не могу получить правильный синтаксис. Я запускаю это как shell-скрипт в MSYS.
cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/
myfile=extr_and_app.shp
name=${myfile%.shp}
ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num int(3)"
ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CONVERT(code_06 As int(3))"
Сообщение об ошибке (MSYS):
Kay@KAY-PC /c/users/kay/desktop/bash
$ sh calc_field_shp.sh
Warning 6: Unsupported column type 'int'. Defaulting to VARCHAR
INFO: Open of `extr_and_app.shp'
using driver `ESRI Shapefile' successful.
ERROR 1: SQL Expression Parsing Error: syntax error
INFO: Open of `extr_and_app.shp'
using driver `ESRI Shapefile' successful.
Редактировать - еще один переход с SQLite:
cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/
myfile=extr_and_app.dbf
name=${myfile%.dbf}
ogrinfo $myfile -sql "ALTER TABLE $name DROP COLUMN code_num"
ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num integer(3)"
ogrinfo $myfile -dialect SQLite -sql "UPDATE $name SET code_num = CAST(code_06 As integer(3))"
Сообщение об ошибке:
Kay@KAY-PC /c/users/kay/desktop/bash
$ sh calc_field_shp.sh
INFO: Open of `extr_and_app.dbf'
using driver `ESRI Shapefile' successful.
INFO: Open of `extr_and_app.dbf'
using driver `ESRI Shapefile' successful.
ERROR 1: SQL Expression Parsing Error: syntax error
INFO: Open of `extr_and_app.dbf'
using driver `ESRI Shapefile' successful.
Ответы:
Поскольку UPDATE не поддерживается в OGR SQL , как вы указали в комментарии, вы должны обновить таблицу, используя диалект SQLite SQL, доступный в GDAL> = 1.10, с поддержкой SQLite и SpatiaLite :
источник
Вы можете попробовать использовать оператор CAST, поскольку dmci уже упоминал
Диалект SQL, поддерживаемый OGR, не имеет CONVERT, если он вызывается правильно. Вы можете проверить документы для получения дополнительной информации. Удачи!
источник
UPDATE
, не поддерживается, см. Здесь: osgeo-org.1560.x6.nabble.com/… Однако, это должно быть на диалекте SQLite, но мне тоже не повезло с этим ..