緯度・経度情報を単独に持った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を使っています。
Leave a Reply