Alan a put değerleri eklemek için GDAL SQL sözdizimi


9

Özellik tablomda yeni bir alan yapmaya çalışıyorum ve karakterden tamsayıya dönüştürüldükten sonra başka bir alandan değerler koyuyorum, ancak doğru sözdizimini alamıyorum. Ben MSYS kabuk komut dosyası olarak çalıştırın.

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))"

Hata Mesajı (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.

Edit - SQLite ile başka bir gitmek:

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))"

Hata mesajı:

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.

Ne hatası alıyorsunuz?
RK

@RK, hata mesajını op'a ekledim.
Kay

CONVERT yerine CAST'ı denediniz mi?
dmci

Başarısız yaptım ..
Kay

Yanıtlar:


13

GÜNCELLEME içinde desteklenmediği için OGR SQL Size bir yorum da belirtildiği gibi, kullandığınız tablosunu güncelleştirmek gerekir SQLite SQL lehçesi mevcut GDAL> = SQLite ve SpatiaLite ile 1.10 desteği:

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))"

3

Dmci'nin belirttiği gibi CAST operatörünü kullanmayı deneyebilirsiniz

ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CAST(code_06 as int(3))"

Doğru hatırlanırsa, OGR tarafından desteklenen SQL lehçesinde CONVERT yoktur. Daha fazla bilgi için dokümanları kontrol edebilirsiniz . İyi şanslar!


1
Görünüşe UPDATEgöre desteklenmiyor, buraya bakın: osgeo-org.1560.x6.nabble.com/… Ancak, SQLite lehçesinde olmalı ama ben de bu konuda şansım olmadı ..
Kay

Hangi GDAL sürümünü kullanıyorsunuz?
RK

Gdal-17 kullanıyorum
Kay

1
SQLite lehçesi GDAL / OGR 1.10'a ihtiyaç duyar .
scruss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.