[OSGeoJapan-discuss] Re: 【質問】QGISでの新しいラベル機能について

arctic_tern @ mf-atelier.sakura.ne.jp arctic_tern @ mf-atelier.sakura.ne.jp
2012年 1月 25日 (水) 09:26:16 EST


喜多様

山手と申します。
先ほどのアンダースコアは関係なさそうです。申し訳ありません。

おそらく文字列型をロードしようとされているかと思われますが、
文字列はシングルクォーテーションで囲むべきとありました。

http://www.dbonline.jp/sqlite/type/index4.html

一応ソースコードも確認してみましたが、最後の文字がシングルクォーテーションであれば文字列とされるように見えます。
そのほか、不正トークンとなるケースで関係がありそうなのが、数字+文字列の場合のようです。
上記のようにシングルクォーテーションで囲めば問題ありませんが、囲んでいない場合は先頭文字を見て数値型と認識するようです。

以上、ご参考になれば幸いです。


> 山手様 みなさま
> アンダースコアを外しても同じでした。
> そのほかに何か原因があるのでしょうか。
> 
> 喜多耕一
> 
> 前のメールは名前を書き忘れていました。すみません。
> 
> 
> 2012年1月25日22:17 <arctic_tern @ mf-atelier.sakura.ne.jp>:
> 
> > 喜多様
> >
> > はじめまして、山手と申します。
> > エラーを拝見しましたが、おそらくアンダースコアが含まれているのが原因ではないかと思われます。
> > Shapeファイルのロードは内部ではSQLで実行されています。
> > アンダースコアはSQLiteでは'%'等と同様に特殊文字なので、構文解析でエラー「認識されないトークン」が出たものと思われます。
> >
> > 以上、ご参考になれば幸いです。
> >
> > > かやまさま みなさま
> > >
> > > spatialite-guiで、ShapefileをSpatialiteにロードしようとすると、
> > > 添付ファイルのようなエラーが出ます。
> > > これは何がいけないのでしょうか?
> > >
> > > パス名、属性データのフィールド名などはすべて半角英数文字です。
> > > 測地系はJGD2000平面直角座標系13系 ID:2455です。
> > >
> > > みんなの地球地図のデータ等はロードすることは出来ます。
> > > 職場で使っている山のデータがなぜかロードできません。
> > >
> > > よろしくお願いします。
> > >
> > > 2012年1月19日5:49 Yoichi Kayama <yoichi.kayama @ gmail.com>:
> > >
> > > > 喜多さん
> > > > みなさん
> > > >
> > > > とりあえずブログ http://d.hatena.ne.jp/yoichi_46/ にまとめるつもりですが
> > > > ロードだけですとそんなにもったいぶったもんでもないので簡単に書いて
> > > > おきます。
> > > >
> > > > spatialite-guiというプログラムをダウンロードして使うとShapefileをSpatialite
> > > > にロードできます。
> > > >
> > > > http://www.gaia-gis.it/gaia-sins/
> > > >
> > > >
> > > > ここのページにソースありますがWindowsの場合ですとバイナリがあります。
> > > > バイナリをダウンロードすると、インストールしなくても spatialite_gui.exe を
> > > > ダブルクリックするとプログラム起動します。(Winの場合)
> > > >
> > > > 新規にspatialite のファイルを作成する場合は Filesメニューの Creating a New(empty) SQLite
> > > > DB, 既存のファイルを利用する場合は Connecting an existing SQLite DB を
> > > > 選択して下さい。 New の場合はファイルのパス名を指定して下さい。
> > > >
> > > > ファイルに接続するとメニューに Adbancedという項目ができますので、そこでLoad Shapefile
> > > > を選択するとファイル選択ダイアログが表示されるので、そこで Shapefileを指定してファイル
> > > > をロードしてみてください。
> > > > ダイアログでファイルを指定するとロード時のパラメータを指定するダイアログが表示されます。
> > > > ここで指定すべきことは元ファイル内の文字コード(CP932か) SRID(空間参照系の番号、
> > > > 多分元ファイルの座標系のEPSGコード JGD2000の平面直角X?系の場合は2455)の指定。
> > > > あと下部のチェックボックスでは With Spatial Index(R*Tree) の指定。あと Table name
> > > > のとこはファイル内の既存テーブル名とだぶらないようにしてください。
> > > >
> > > > 一応入力Shapeファイル名に日本語はいれないでやってみました。日本語はいった場合
> > > > うまくいくかどうかは未確認です。
> > > >
> > > > これでOKボタンクリックでデータのロードできます。
> > > >
> > > > QGISのほうではレイヤメニューの Spatialiteテーブルの追加で指定をすることで、ここで
> > > > ロードしたテーブルを利用できます。
> > > > 初めてそのSpatialiteファイルを利用する場合は Spatialiteテーブルの追加ダイアログで
> > > > 新規 ボタンをクリックした後に表示されるファイル選択ダイアログで作成したファイルを選択
> > > > して下さい。
> > > >
> > > > そうするとそのファイルへの接続エントリがダイアログのドロップダウンリストに表示される
> > > > ので、以後そのSpatialiteデータベースファイルを利用する場合はドロップダウンリストで
> > > > 選択を行った後に接続ボタンをクリックすると、そのファイル内のジオメトリがあるテーブル
> > > > が表示されるので選択すると通常のレイヤとして利用できます。
> > > >
> > > > あと文字表示用に追加したカラムのアップデートですが
> > > >
> > > > テーブル名 syouhan  ジオメトリカラム名が Geometry だとして
> > > >
> > > > select X(centroid(Geometry)),Y(centroid(Geometry)) from syouhan
> > > >
> > > > このようなSQLを発行するとテーブルsyouhan内の各ポリゴンの中心点
> > > > 座標のXとYの値を取得できます。
> > > >
> > > > たとえばラベル表示位置の座標を格納するカラム名が x と y  とした場合
> > > >
> > > > update syouhan set x=X(centroid(Geometry)), y=Y(centroid(Geometry))
> > > > というようなSQLを実行するとカラムx,yの値をそれぞれのポリゴンの中心点
> > > > の座標で更新することができます。
> > > >
> > > > SQLは spatialite_gui の右上の領域に入力を行った後、メニュー->Advanced->Execute SQL Script
> > > > を選択すると実行できます。
> > > > またはSQL入力領域の右側にあるアイコンをクリックしても実行できます。
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > 2012年1月18日21:39 喜多耕一 <kou35tochas @ gmail.com>:
> > > > > spatialite へのデータロード方法は大変興味があります。
> > > > > ぜひよろしくお願いします。(出来るだけ簡単にお願いします。)
> > > > >
> > > > >
> > > > > 2012年1月17日9:06 Yoichi Kayama <yoichi.kayama @ gmail.com>:
> > > > >
> > > > >> 喜多さん
> > > > >> みなさん
> > > > >>
> > > > >> spatialiteについてデータロードとSQL使った座標値の設定ができました。
> > > > >> 手順をあとでまとめてみますので、ちょいとお待ちください。
> > > > >>
> > > > >
> > > >
> > >
> > >
> >
> 
>


OSGeoJapan-discuss メーリングリストの案内