とある経緯度から半径1キロの所にあるもの

やりたい事は、まず、「経緯度を使った点の座標から半径1キロのところにあるものをリスト化」するという命題。

これが思った以上に簡単にできるのがPostGISです。

25756 | 南陽郵便局                   | 140.162193 |  38.05075 |   311.2796898711
 26529 | 花見児童遊園                 | 140.161999 | 38.049111 | 473.659944924118
 25641 | 赤湯幼稚園                   | 140.164721 | 38.048722 | 621.461738381496
 24455 | 南陽市結城豊太郎記念館     | 140.165224 | 38.048773 | 644.531730550616
 24559 | 山形地方検察庁赤湯区検察庁   | 140.162749 | 38.047417 | 672.693579686628
 24494 | 南陽市立図書館               | 140.166596 |  38.04917 | 699.114893204092
 24649 | 山形家庭裁判所赤湯出張所     | 140.162749 | 38.047139 | 702.228254185821
 24650 | 山形地方裁判所赤湯簡易裁判所 | 140.162749 | 38.047139 | 702.228254185821
 26829 | 赤湯乳幼児保育センター       | 140.162305 | 38.046861 |  722.24623981089
 25413 | 市立赤湯中学校               |  140.16136 | 38.046306 | 769.758428840306
 26382 | 南陽市老人いこいの家         | 140.165443 | 38.047389 | 778.829898166033
 26533 | 桜木児童遊園                 | 140.151166 | 38.050389 | 875.335122740613
 26830 | 赤湯保育園                   | 140.159499 |    38.045 | 914.913923312114
 26097 | 赤湯駅前簡易郵便局           | 140.151639 | 38.047972 | 969.441393534143
 26534 | 赤湯児童遊園                 | 140.169359 | 38.047806 | 983.097675472704

ほらね。select文一つでこれ。折角なので距離をはじき出し、近い順にソートしてみました

私が知る限りmysqlのgiometory形式でやるには、対角線の両端から範囲にしてこの中にあるものという検索は可能です。確かに今のご時世でだと、Google Map APIで引っ張ってきた地図でえいやっとプロットしてやればそれで事足りるし、同様にAndroidSQL Liteでもそれをやる程度であればいいのだけれども、とりあえずのデータを作っていくにあたり、国土数値情報ダウンロードサービスなるものを使う事にしました。

 

手順としては、postgresqlをインストールして、postgisをインストールして、db作って、extensionを読み込み、shapeファイルをsqlに変換して流し込むという事なわけですが、これだけで半日かかると思います。

全く技術者が読んでも意味がないとは思いますが、非技術者の方々が無理難題ではないということをまず知って頂きたいのもありますので、提示してみました。この程度の情報であればどこぞのAPIで、ぴやーっとJSONで返してきそうではありますが、私のポリシーとしてインターネットは分散してなんぼの世界とも思いもあるのでそれもちょいと頭に入れておきます。