SQLite3のDBにgeometry型のカラムを追加してQGISで使ってみる


緯度・経度情報を単独に持ったSQLite3のデータベースファイルを使ってみます。

(端からMySQLやPostGIS、SpatiaLiteなどを使える環境をお持ちなら以下の記述は不要です)

 

SQLIte3は空間情報を扱えるデータ型(geometry)を持っていないので、この型を使えるSQLiteの拡張版SpatiaLiteにデータを移行してQGISで表示してみます。

DBファイルをダウンロードしてWindowsのSpatiaLite_guiで読み込んで、geometry型カラムを追加した後で、緯度・経度データをgeometry型に変換してQGISで使ってみます。

 


データとして新型コロナウィルスが確認された場所を使ってみます。

COVID-19のデータをCSVで取得する場合
GitHubのサイトで取得できます。

CSVを読んでSQLite3でDBを作成する方法はネット上にいっぱいあるので割愛。

作成したサンプル(Location.sqlite)は2020/02/12時点のものです。
感染が確認された場所の名前と位置情報、日本語名のレコードです。

 

WindowsでGUI版のSpatiaLiteをインストールする場合は以下を参照
SpatiaLiteで国土交通省の<災害・防災>避難施設データを読み込んでDB作成

 

サンプルをダウンロードしてSpatiaLiteに読み込みます。

SQLite3でデータベースを作成したので、SpatiaLiteが管理するメタデータを作成しておきます。

SELECT InitSpatialMetaData();

geometry型のカラムを追加します。

SELECT AddGeometryColumn(
‘LatLonTable’,
‘geom’,
4326,
‘POINT’,
‘XY’
);

引数の意味は上から順に
●テーブル名
●カラム名
●4326は空間参照系識別子 (SRID)で、WGS 84系の地理座標である経度と緯度を使用することを意味しています
●POINTはgeometryの型
●XYはgeometryの次元

 

1が表示されていれば成功です。
テーブル名で右クリックしてメニュからrefreashを実行してカラムが追加されているのを確認。

追加したgeomカラムに値として、緯度(lat)と経度(lon)を使ったgeometry型の位置情報を入れておきます。

UPDATE LatLonTable SET geom = GeomFromText(‘POINT(‘||”lon”||’ ‘||”lat”||’)’,4326) WHERE id >= 1 and id <= 81;

 

テーブルを参照してみます。

select * from LatLonTable;

 

Spatialiteを終了してQGISに読み込んでみます。

WindowsでQGISをインストールする場合は以下を参照
QGIS入門編

 

メニュー>データベースー>DBマネージャー>新しい接続

読み込みます。

「キャンバスに追加」でQGISに表示します。

背景地図にOpenStreetMapを使っています。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*