先日(5/30)、小笠原諸島西方沖を震源とする地震がありましたが、そういや気象庁防災情報XMLで震源地や各地の震度情報なども配信していたなぁと思いだし...
震源地と各地の震度情報をOpenLayers3で表示するのを作ろう!と思い立ったのが4日前。
早速作ろうと色々データを集め始めたのですが、表示の際に一番必要な各地の座標(緯度,経度)は気象庁から公開されていません。
地震が発生したときに気象庁から送信されるXML電文は、震度速報、震源に関する情報、震源・震度に関する情報などがあり、例えば震源・震度に関する情報では...
(前略) <Pref><Name>東京都</Name><Code>13</Code><MaxInt>5+</MaxInt> <Area><Name>小笠原</Name><Code>359</Code><MaxInt>5+</MaxInt> <City><Name>小笠原村</Name><Code>1342100</Code><MaxInt>5+</MaxInt> <IntensityStation><Name>小笠原村母島</Name><Code>1342103</Code><Int>5+</Int></IntensityStation> <IntensityStation><Name>小笠原村父島西町</Name><Code>1342100</Code><Int>4</Int></IntensityStation> <IntensityStation><Name>小笠原村父島三日月山</Name><Code>1342101</Code><Int>4</Int></IntensityStation> </City> </Area> <Area><Name>東京都23区</Name><Code>350</Code><MaxInt>4</MaxInt> <City><Name>東京千代田区</Name><Code>1310100</Code><MaxInt>4</MaxInt> (後略)このようになっています。
ここで、Areaは気象庁が独自に分けた188区域を、Cityは総務省の市区町村コードをベースにした1898区域が指定されます。
参考:気象庁 | 震度情報や緊急地震速報で用いる区域の名称
このXMLには区域コードと区域名だけで、気象庁が公開している技術資料などにも各区域のコードと名称のリストはありますが、座標は無い...
というわけで、無いなら作りましょう。
今回はPostgreSQLと、その拡張でGISオブジェクを格納することができるPostGIS、GISの閲覧、編集、分析機能を持ったQGISを使って、国交省が公開している国土数値情報(行政区域データ)を扱ってみます。
1. PostgreSQL, PostGIS, QGISなどをインストール (Mac/homebrew)
まずはQGISをインストール
brew install pyqt brew install caskroom/cask/brew-cask brew cask install qgis
次に、PostgreSQLとPostGIS、pgAdmin3のインストール
brew install postgresql brew install postgis brew cask install pgadmin3
2. データベースの作成、データの読み込み
データベースを作ってログインします
postgres -D /usr/local/var/postgres createdb -E utf8 gis_dataset psql -U keiichiro -d gis_dataset
エクステンションを設定してPostGISを使えるようにします
CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;
PostGISが読み込めているか確認してみる
SELECT PostGIS_Version();
読めてたらpsqlを抜ける(\q)
国土数値情報 行政区域データ(全国)をダウンロードする
http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03.html
N03-140401_GML.zipを展開して、SQLに変換、UTF-8に変換する
unzip N03-140401_GML.zip cd N03-140401_GML shp2pgsql -W SHIFT-JIS -c N03-14_140401.shp shapes > N03-14_140401.sql nkf -W N03-14_140401.sql > N03-14_140401_UTF8.sql
先ほど作ったデータベースに読み込む
psql gis_dataset < N03-14_140401_UTF8.sql
3. QGISで見てみる
QGISを開き、レイヤ->レイヤの追加->PostGISレイヤの追加
[新規]をクリックして、ホスト(localhost)、先ほど作ったデータベース名、ユーザ名を入力して[OK]
先ほど取り込んだデータは、publicスキーマのshapesテーブルに入っているので、これを選択して[追加]
測地系を選択(WGS 84がデフォルトで選ばれているはず)して[OK]
これで、取り込んだ国土数値情報 行政区域データがレイヤとして追加され、画面に表示されるはず。
元となる行政区域データの準備が整ったので、次回は気象庁のデータを取り込んで、重心を求める計算をします。
NEXT→ PostGISで気象庁の細分区域&市町村等に対応する重心を求める
参考
http://qiita.com/nakamods/items/7f25aaaba950c8b8a458
http://morphocode.com/how-to-install-postgis-on-mac-os-x/
http://qiita.com/yellow_73/items/0845451b792f4bc33e90
0 件のコメント:
コメントを投稿
記事へのコメントはいつも確認している訳ではないので、お返事が遅れる場合があります。
ご質問やご意見は twitter@9SQ へお送り頂けると早くお返事できると思います。