どうも、ニッパチです。
今、業務で地理情報システム関連のシステムを構築しています。
そこでうまくいかなかったことがあったのでそれについて書いていこうと思います。
QGISで新規レイヤを作成する
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-11.png)
作成されたテーブルはこちら
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-12-1024x613.png)
いろいろテーブルが作られていますが、テストテーブルの構造を見てみます。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-13-1024x613.png)
geometryという名前のカラムがPOINTという型で作成されているのがわかります。
このカラムに座標情報が登録されます。
QGISでポイントを追加してどのようなデータが入ったのか確認します。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-14-1024x613.png)
geometryには何も表示されていません。
単純にselectしただけではダメで拡張機能のmod_spatialiteを読み込んでAsText関数で座標情報が取得できます。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/qqq.png)
簡単なQGISおよびspatiliteの説明は以上にして本題に入ります。
カラム名を変更する
sqliteではカラム名変更ができないため再度テーブルを作成し直す必要があります。
名前カラムをnameカラムへ変更します。
alter table テスト rename to tmp_テスト;
create table テスト (
pkuid integer primary key autoincrement,
name text,
geometry POINT);
insert into テスト(name, geometry)
select 名前, geometry from tmp_テスト;
QGISファイルを開いてカラム名が反映されているか確認してみます。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-18-1024x865.png)
カラム名が名前の状態のままです。
コマンドプロンプトを開いてsqliteにログインし次のコマンドを実行します。
select load_extension('mod_spatialite');
select RecoverGeometryColumn('テスト', 'geometry', 4326, 'POINT');
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2021/11/image-19-1024x865.png)
カラム名が変更されました。
めでたしめでたし。
感想
sqliteでカラム名変更ができないのが一番びっくりしました。