行政区画の境界のポリゴン抽出する
Linked Open Addresses Japan が提供する JSON データから境界ポリゴンを抽出する。
階層
階層は下記の通り。
├─prefecture_polygon.py
├─README.md
├─areas
│ 東京都.json
│ 東京都世田谷区.json
│ 東京都中央区.json
│ ...
└─extracted_polygons
東京都.json
東京都世田谷区.json
東京都中央区.json
東京都中野区.json
...
areas
Linked Open Addresses Japan から取得した JSON ファイルを設置する。
extracted_polygons
境界ポリゴンが下記の JSON ファイルで保存される。
[
{
"lat": 24.284078400000002,
"lng": 153.97357438
},
{
"lat": 24.28297405,
"lng": 153.97858222
},
{
"lat": 24.282955490000003,
"lng": 153.97858711
},
...
]
prefecture_polygon.py
areas 内のファイルから境界ポリゴンを抽出加工し extracted_polygons に保存する。
import json
import os
import re
target_file_names = os.listdir(path='./areas')
for target_file_name in target_file_names:
result = []
json_open = open(f"./areas/{target_file_name}", "r", encoding="utf-8")
prefecture_dict = json.load(json_open)
for url in prefecture_dict.values():
for statuses in url.values():
for status in statuses:
if "POLYGON" in status["value"]:
polygon = status["value"]
coordinates = polygon.split(",") # ['POLYGON((139.81666667000002 35.74978875', '139.81667097 35.74978311'...]
for coordinate in coordinates:
coordinate = re.findall("\d+\.\d+", coordinate)
latlng = {
"lat": float(coordinate[1]),
"lng": float(coordinate[0]),
}
result.append(latlng)
with open(f"./extracted_polygons/{target_file_name}", "w") as file:
json.dump(result, file, indent=4)
ディスカッション
コメント一覧
まだ、コメントがありません