풋 값을 필드에 추가하는 GDAL SQL 구문


9

속성 테이블에 새 필드를 만들고 문자를 정수로 변환 한 후 다른 필드의 값을 입력하려고하지만 올바른 구문을 얻을 수 없습니다. 나는 이것을 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.

어떤 오류가 발생합니까?
RK

@RK, 나는 op 메시지에 오류 메시지를 추가했다.
Kay

CONVERT 대신 CAST를 사용해 보셨습니까?
dmci

나는 성공하지 못했습니다 ..
Kay

답변:


13

UPDATE는 OGR SQL 에서 지원되지 않으므로 주석에서 언급 한 바와 같이 SQLite 및 SpatiaLite를 지원하는 GDAL> = 1.10 에서 사용 가능한 SQLite SQL 언어를 사용하여 테이블을 업데이트해야합니다 .

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 가 언급했듯이 CAST 연산자를 사용해 볼 수 있습니다.

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

올바르게 재 호출하면 OGR에서 지원하는 SQL 언어에 CONVERT가 없습니다. 자세한 내용 은 문서확인할 수 있습니다 . 행운을 빕니다!


1
겉으로보기 UPDATE: 지원되지 않습니다 여기를 참조 osgeo-org.1560.x6.nabble.com/...이 중 .. 그러나, SQLite는 방언에 있어야하지만 난 그와 운이 없었다
케이

어떤 GDAL 버전을 사용하고 있습니까?
RK

저는 gdal-17을 사용하고 있습니다
Kay

1
SQLite 방언에는 GDAL / OGR 1.10이 필요합니다 .
scruss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.