Ich versuche, ein neues Feld in meiner Attributtabelle zu erstellen und Werte aus einem anderen Feld einzugeben, nachdem ich von Zeichen in Ganzzahlen konvertiert habe, kann aber nicht die richtige Syntax erhalten. Ich führe dies als Shell-Skript in MSYS aus.
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))"
Fehlermeldung (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.
Bearbeiten - Ein weiterer Schritt mit 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))"
Fehlermeldung:
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.
Antworten:
Da UPDATE in OGR SQL nicht unterstützt wird , wie Sie in einem Kommentar angegeben haben, sollten Sie die Tabelle mit dem in GDAL> = 1.10 verfügbaren SQLite SQL-Dialekt mit SQLite- und SpatiaLite- Unterstützung aktualisieren :
quelle
Sie können versuchen, den CAST-Operator zu verwenden, wie dmci dies bereits erwähnt hat
Der von OGR unterstützte SQL-Dialekt verfügt bei korrektem Rückruf nicht über CONVERT. Sie können die Dokumente für weitere Informationen überprüfen . Viel Glück!
quelle
UPDATE
wird dies nicht unterstützt, siehe hier: osgeo-org.1560.x6.nabble.com/… Es sollte jedoch im SQLite-Dialekt sein, aber ich hatte auch kein Glück damit.