えー、お久しぶりです、ぴねこです。
皆さんはGeoJSONをご存知でしょうか…?
名前から予想した方もいると思いますが、GeoJSONは地図にマーキングができるJSONファイルです。
点だけでなくベクターデータも作れるので、GeoJSONの派生としてTopoJSONというものがあったりします。
僕はIF世界の市町村とかを作るのが好きなのでその地図データに使えたらなと思って扱い始めました。
今回はこれについて書いていきます。
まずはGeoJSONの構造を見ていこう!
というわけで、まずは構造を見ていきます。
出雲大社(北緯35.402035/東経132.685456)の点のコード
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "出雲大社"
},
"geometry": {
"type": "Point",
"coordinates": [
132.685456,
35.402035
]
}
}
]
}
propertiesのところはお好みで…
座標はcoordinatesというところに東経→北緯の順で書かれているみたいです。
続いてはE132,N35/E132,N36/E133,N36/E133,N35の四点をつないで図形を作ってみましょう。
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "四角形"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
132,
35
],
[
132,
36
],
[
133,
36
],
[
133,
35
],
[
132,
35
]
]
]
}
}
]
}
うわ改行多っ…
JSONなので別に改行はなくて大丈夫です。
typeをPolygonに変え、coordinatesは一周するように四点+最初の点を指定すればいいみたいです。
今はまだ簡単なものだからいいけど…
いまやったのはすごく簡単なものなのでこれでいいかもしれませんが、実用的に使うのであればこんな感じでいちいち書いていると多大な時間がかかります。
geojson.ioのようにGeoJSONをGUIで作れるものもありますが、それでも時間がかかってしまいます。
でも大丈夫!GeoJSONではないですが、国交省さんがベクターデータを作ってくれてるんです!!
じゃあこのデータをどうしろと…?
ここで疑問を持った方も多いと思います。
GeoJSONじゃないものをどうやってGeoJSONにしろと?手作業か?と。
でも大丈夫、ちゃんとそんなソフトあるんです。
QGISというものが。
QGISを入れたらダウンロードしたベクターデータを読み込んで…
そしたらレイヤ>名前をつけて保存を選び、GeoJSONを選んでファイル名を書き込んで…
あとは保存するだけです。
保存すると長過ぎるGeoJSONが生成されます。
そうです、国交省さんがデータ形式としてGeoJSONを使わないのはこんな理由があるからです。
でも流石にデータが多すぎるので使うものだけを取り出しましょうか。
データの取り出しにはjqを使います。
jqの使い方に関しては色んな所に転がっていると思うのでここでは書きません。
そしてコードいじったりなんなりしてできたのがこちらです。(は?
今回はただ秋鹿郡のデータだけが欲しかったのでこんな感じになりました。
JSONなのでそんなにいじるのは大変じゃないかなと思ってましたが結合のところでかなり時間かかりましたね…
扱ってみて
GeoJSONはJSONベースなので扱いやすさは最高でした。
ただ、さっき書いた通り細かいデータは長さが非常に長くなってしまうのでIF世界の市町村とかには向いてないと思います。シェープファイルを使いましょう。
なんかのポイントをマーキングしたりそっちのほうには最適です。
では。