フィールドに値を追加する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のもう1つの例:

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にエラーメッセージを追加しました。
ケイ

CONVERTではなくCASTを試しましたか?
dmci 2013年

私は成功しませんでした..
ケイ

回答:


13

コメントで述べたように、UPDATEはOGR SQLではサポートされていないため、GDAL> = 1.10で利用可能なSQLite SQLダイアレクトとSQLiteおよびSpatiaLiteサポートを使用してテーブルを更新する必要があります。

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 2013年

私はgdal-17を使用しています
Kay

1
SQLite方言にはGDAL / OGR 1.10が必要です。
2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.