PostGISインストール

2014/11/08
地図情報を外部へ提供し、JavaScriptやQGIS等と連携させるために、PostgreSQLでジオメトリ情報が扱えるように拡張するPostGISを使用する。

インストールと初期設定
# yum install postgis postgresql-server # postgresql-setup initdb Initializing database ... OK # passwd postgres ユーザー postgres のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
外部からのサーバへの接続を許可する # firewall-cmd --permanent --add-service=postgresql # firewall-cmd --add-service=postgresql
/var/lib/pgsql/data/pg_hba.conf
: : # IPv4 local connections: host all all 127.0.0.1/32 ident host all all 192.168.1.0/24 md5 : :
# vi /var/lib/pgsql/data/postgresql.conf
: : #listen_addresses = 'localhost' # what IP address(es) to listen on; listen_addresses = '*' # comma-separated list of addresses : :
サービスの起動と動作確認 # systemctl start postgresql # systemctl enable postgresql # su - postgres $ echo "select * from postgis_version();" | psql gis postgis_version --------------------------------------- 2.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
DBの作成 $ createdb gis -E UTF-8 $ psql -d gis -c "CREATE EXTENSION postgis;" $ psql -d gis -c "CREATE EXTENSION postgis_topology;" $ psql -d gis -c "ALTER USER postgres PASSWORD '********';"
pgAdmin3をインストールする。
pgAdmin: Download - Windows ™

shapeファイルのコンバータをプラグインとして利用する。PostGISの本体に入っている。

Windows版のzipをダウンロードして、binの下のpostgisguiディレクトリをpgAdmin3のインストールディレクトリにコピーする。
Index of /postgis/windows

C:\Program Files (x86)\pgAdmin III\1.18\plugins.d\plugins.iniに下記を追加する。
; ;PostGIS shp2pgsql-gui (Windows): ; Title=PostGIS Shapefile and DBF loader Command="$$PGBINDIR\postgisgui\shp2pgsql-gui.exe" -h "$$HOSTNAME" -p $$PORT -U "$$USERNAME" -d "$$DATABASE" -W "$$PASSWORD" Description=Open a PostGIS ESRI Shapefile or Plain dbf loader console to the current database. KeyFile=$$PGBINDIR\postgisgui\shp2pgsql-gui.exe Platform=windows ServerType=postgresql Database=Yes SetPassword=Yes
pgAdmin3を起動して、[ファイル]-[オプション]で、PG binパスを確認する。


PostGISに接続する。


 プラグインを起動する。


[Add File]をクリックして、読み込むShapeファイルを選択する。


日本語のファイル名は読み込めないので、下記を参考にリネームしておく。
海岸線 CstLine
街区の代表点 SBAPt
街区線 SBBdry
基準点 GCP
軌道の中心線 RailCL
建築物 BldA
建築物の外周線 BldL
行政区画 AdmArea
行政区画界線 AdmBdry
行政区画代表点 AdmPt
水域 WA
水涯線 WL
水部構造物線 WStrL
水部構造物面 WStrA
町字の代表点 CommPt
町字界線 CommBdry
等高線 Cntr
道路縁 RdEdg
道路構成線 RdCompt
標高点 ElevPt

[Options]をクリックし、エンコーディングをCP932(or SHIFT-JIS)指定する。


[Import]をクリックすると読み込みが始まる。完了するとテーブルができている。


動作確認はQGISでやるとよい。
データの格納と表示 — Let's Postgres
Read more ...

GeoTiffからGeopaparazzi用のタイルを作成する

2014/11/05
住宅地図を既存地図に重ねる」で作成したGeoTiffを、Android用のフィールド調査アプリGeopaparazziで読み込めるように変換する。
OSGeo4W Shellを起動する。

gdal2tiles.bat -z 10-21 D:\Desktop\yogo2_modified.tif D:\Desktop\yogo2 で変換開始。


yogo2フォルダに下記のファイルができる。openlayers.htmlを開くと、ブラウザでマップが確認できる。このyogo2フォルダを、外部メモリモードで接続したAndroidのmapsディレクトリにフォルダごとコピーする。

mapsディレクトリに下記のyogo2.mapurlファイルを作成する。centerの値はtilemapresource.xmlのBoundingBoxの値から中心を計算して設定する。
url=yogo2/ZZZ/XXX/YYY.png minzoom=10 maxzoom=21 center=132.73221620 33.8093724916 type=tms
mapsフォルダの中は下記になっているはず。

Geopaparazziを起動して、右上の設定メニューから「タイルソースの選択」をクリックし、転送したyogo2を選択する。

完成。赤い線はGPSトラッキング。
Read more ...

住宅地図を既存地図に重ねる

2014/11/05
地図の取り込みは、ほとんどの画像フォーマットをサポートしている。PDFもOK。地図の変形と座標合わせにはQGISを使用する。基盤情報地図を参照して合わせるので、対象の地区の地図をロードしておく。
QGISを起動して、メニューの[プラグイン]-[プラグインの管理とインストール]から「GDALジオリファレンサー」プラグインをインストールする。

メニューの[ラスタ]-[Georeferencer]-[Georeferencer]から起動する。

メニューの[ファイル]-[ラスタを開く]からファイルを開く。今回は住宅地図をスキャンした画像を使用したが、航空写真などでもよい。この時、空間参照システムを選択する必要がある。リファレンスに使用する「基盤地図情報」は、「JGD2000/Japan Plane Rectangular CS IV(EPSG:2446)」(中国・四国地区)なので、同じ座標系を設定する。
ちなみに、今回使用したスキャン画像は13000X11000ピクセルのPNGフォーマット。この時点でファイルサイズは4MBある。リファレンス後に出力されるGeoTiffファイルは500MB程度になるので、HDDに十分な空きのある環境で行うこと。

住宅地図を基本地図に投影するためのリファレンスになる点をプロットしていく。ジオリファレンサーの住宅地図側のマップをクリックすると地図座標入力のダイアログが開くので、「マップキャンバスより」をクリックして、基本地図側の対応する場所を指定する。

OKで決定する。リファレンスは多いほうがよい。四隅と中央あたりの最低でも6点は欲しい。

入力が完了したら、[ファイル]-[ジオリファレンシングの開始]から変換を開始する。変換タイプは下記で指定してみた。

変換が終わったら読み込んでみる。シェイプファイルと同じように、変換後のGeoTiffファイルをレイヤーにドラッグアンドドロップする。レイヤーは一番下がよいでしょう。

完成。
Read more ...

QGISで基盤地図情報を使う

2014/11/04
国土地理院のサイトから地形データを取ってくる(アカウントが必要)。
基盤地図情報ダウンロードサービス

データフォーマットをQGISで読める形式に変換する必要があるので、下記をダウンロードしておく。
基盤地図情報ビューア

今回使用する地図情報は「基盤地図情報基本項目-JPGIS(GML)形式」。


2次メッシュごとに細かく分割されていて、地図から選択すると割とめんどくさいので、リストから対象市区町村を選択して一気にダウンロードするとよい。


ダウンロードしたファイルを展開すると下記のようなファイルが入っている。フォーマットの変換はzipファイルのままで行うので展開しなくてよい。

松山市街のメッシュコードは下記。他の地区のメッシュコードは「地図上で標準地域メッシュを確認するページ」で確認できる。

ダウンロードしておいた「基盤地図情報ビューア」をインストールして起動する。変換したい地区のファイルをドラッグアンドドロップする。メニューの[エクスポート]-[エクスポート]を選択。変換種別は「シェープファイル」。取りあえず全部変換する。出力先フォルダの指定も忘れずに。


QGISを起動して、出力先フォルダを開き、変換したシェープファイル(拡張子.shp)を全て選択する(CTRLかSHIFTを押しながら)。

選択したファイルを、真下のレイヤウインドウにドラッグアンドドロップすると地図が表示される。



必要ないレイヤーを非表示にしたり、色を変えたり、町名や街区を表示したりして、満足できる地図ができたら、[プロジェクト]-[名前を付けて保存]から設定をセーブする。
Read more ...