SpatiaLiteで逆ジオコーディング
国土数値情報-行政区域-SHAPEの全国分行政区域のデータをSpatiaLiteでSQLiteへ取り込む。そんなんあるなら国土数値情報XMLファイルから日本全国分のshapeファイルを作る - 泥縄トラップとか要らねーよ、って奴は甘い。蜂蜜を煮詰めたより甘い。
上記リンク先のファイルだとトップページに「利用上の注意」とやらが書かれており、元になる国土交通省によるXMLファイルよりも若干制限が厳しくなっている。現状、シェアウェア開発のための作業ではないので特に問題はないが、私のゴーストが「好きに使いたいなら材料は自分で用意しなさい」と囁いているので、上記ファイルはSQL文の練習にだけ用いる。
spatialite-gui操作手順
ダウンロード手順は割愛。
SQL文で逆ジオコーディング
カラム名は国土数値情報(行政区域) タグ名・内容対応 - 泥縄トラップ参照。
経度緯度から検索
新宿駅の経度・緯度を渡して検索。駅のデータがあればそういう検索もできるはず。
select pk_uid, prn, con, cn2 from "n03-09320-all" where within(makepoint(139.700258, 35.690921), geometry)
結果
pk_uid | prn | con | cn2 |
---|---|---|---|
21034 | 東京都 | 新宿区 | 空 |
SpatiaLite SQL functions reference listより
関数 | 内容 |
---|---|
MakePoint( x Double precision , y Double precision , [ , SRID Integer] ) : Geometry | 任意の座標を示すgeometry型を返す |
Within( geom1 Geometry , geom2 Geometry ) : Integer | 1が2に含まれるかどうかを返す。 |