郵便番号から 緯度経度 算出
サーバー移転に伴うHTMLファイル出力時のURL変更について (2021/4/20) 90年代まで、住所を元に地図上に位置を示すことはたいへん労力のかかる作業でした。 しかし2000年代になり、インターネット上で住所から緯度経度に変換する「アドレスマッチングサービス」「ジオコーディングサービス」が無償で利用できるようになってきました。 中でも、2006年に日本語でのサービスが開始されたGoogle Maps APIは、精度が高く施設名や郵便番号からもジオコーディングできるため、Google Maps APIを利用して住所から緯度経度に変換するページはたくさん作られました。 2010年に公開した本サイトでは、Google Maps APIのジオコーディングサービスを利用して、地図化していましたが、2018年7月から、Yahoo! JavaScriptマップAPIを利用したものに変更しました。2018年11月からは、表示される地図もLeafletを使用したものに変更し、Googleのサービスは使用しなくなりました。さらに 2021年1月からは、Yahoo!
- 無料で使える「住所マスターデータ」公開、表記統一や緯度経度への変換に活用可能 - INTERNET Watch
- 緯度経度での郵便番号情報検索 | いつもNAVI API 3.0 マニュアル
- 郵便番号から緯度経度を計算|Mikio Kubo|note
無料で使える「住所マスターデータ」公開、表記統一や緯度経度への変換に活用可能 - Internet Watch
7811833, "lon":139. 6523667}, "parts":["東京都", "板橋区", "大門", ""], "kana":"トウキヨウトイタバシクダイモン", "kanaParts":["トウキヨウト", "イタバシク", "ダイモン", ""], "distance":421. 2}, "address":{"text":"東京都板橋区赤塚8丁目", "code":"13119002008", "point":{"lat":35. 7803333, "lon":139. 6488833}, "parts":["東京都", "板橋区", "赤塚", "8丁目"], "distance":484}]} [検索結果が0件の例] JSZxxxxxxxxxx|xxxxx &if_auth_type=ip&latlon=35. 7032983, 138. 2820319
緯度経度での郵便番号情報検索 | いつもNavi Api 3.0 マニュアル
JPからは郵便番号一覧が配布されており、国土交通省からは住所と緯度経度一覧が配布されている。これを合わせて、郵便番号から緯度経度を引けるようにした。国土交通省のデータ方が多いので、マッチングして出た点の緯度経度の平均をとる。 JPのデータを読む関数はこんな感じだ。 def read_zip (file_name): name =[ "code", "zip5", "zip7", "yomi1", "yomi2", "yomi3", "name1", "name2", "name3", "other1", "other2", "other3", "other4", "other5", "reason"] zipcode = ad_csv(file_name, names=name, encoding= 'cp932') zipcode = zipcode[ [ "zip7", "yomi3", "name1", "name2", "name3"]] pat1 = r"(. +)$" pattern1 = mpile(pat1) zipcode[ "大字"] = zipcode[ "name3"]. replace(pattern1, '', regex= True) pat1 = r"(\d+-\d+チヨウメ)" zipcode[ "丁目"] = zipcode[ "yomi3"](pattern1) return zipcode Pandasで読んだ後に正規表現で大字と丁目データを追加している。 国土交通省のデータは以下の関数で読む。 def read_df (file_name): df = ad_csv(file_name, encoding= 'cp932') pat2 = r"[一二三四五六七八九十壱弐参拾百千万萬億兆〇]+丁目$" pattern2 = mpile(pat2) df[ "大字"] = df[ "大字町丁目名"]. 緯度経度での郵便番号情報検索 | いつもNAVI API 3.0 マニュアル. replace(pattern2, '', regex= True) df[ "丁目"] = df[ "大字町丁目コード"]% 100 return df これも正規表現で大字を抽出し、丁目番号をコードから生成しただけだ。 2つのデータをマッチングさせて緯度経度を計算し、郵便番号のデータフレームに保管する。 def compute_lat_lng (zipcode, df): count = 0 lat_column, lng_column = [], [] for row in ertuples(): try: cyoume = row.
郵便番号から緯度経度を計算|Mikio Kubo|Note
{"status":{"code":"0000", "text":"OK"}, "info":{"hit":5}, "item":[{"zipcode":"1750084", "address":{"text":"東京都板橋区四葉2丁目", "code":"13119056002", "point":{"lat":35. 7772944, "lon":139. 6560389}, "parts":["東京都", "板橋区", "四葉", "2丁目"], "kana":"トウキヨウトイタバシクヨツバ", "end":null, "bounds":null, "kanaParts":["トウキヨウト", "イタバシク", "ヨツバ", ""], "level":"azc"}, "distance":272. 3},... ]} [通常出力例] JSZxxxxxxxxxx|xxxxx &if_auth_type=ip&latlon=35. 7773116, 139. 6529444&radius=500 {"status":{"code":"0000", "distance":272. 3}, {"zipcode":"1750092", "address":{"text":"東京都板橋区赤塚7丁目", "code":"13119002007", "point":{"lat":35. 7748972, "lon":139. 郵便番号から緯度経度を計算|Mikio Kubo|note. 6510222}, "parts":["東京都", "板橋区", "赤塚", "7丁目"], "kana":"トウキヨウトイタバシクアカツカ", "kanaParts":["トウキヨウト", "イタバシク", "アカツカ", ""], "distance":310. 8}, "address":{"text":"東京都板橋区赤塚6丁目", "code":"13119002006", "point":{"lat":35. 7750583, "lon":139. 6492889}, "parts":["東京都", "板橋区", "赤塚", "6丁目"], "distance":403. 4}, {"zipcode":"1750085", "address":{"text":"東京都板橋区大門", "code":"13119028000", "point":{"lat":35.
丁目( "-")
start, finish = int(cyoume[ 0]), int(cyoume[ 1][: -4])
except:
start, finish = 0, 0
extract = df[ (df[ "都道府県名"] == me1) & (df[ "市区町村名"]me2) & (df[ "大字"]==row. 大字)]
if len(extract)== 0:
extract = df[ (df[ "都道府県名"] == me1) & (df[ "市区町村名"]me2) & (df[ "大字"]== "大字" +row. 大字)]
lat_list, lng_list = [], []
if len(extract)> 0:
for row2 in ertuples():
if start ということで、PowerBIでesriのパーツが使いたかっただけなのだけれども、GoogleのジオコーディングAPIにゆるゆると問い合わせる以外になんかあるかなと探していたら
東京大学の空間情報科学研究センター さんで国土交通省のデータを基にした、変換サービスを提供されていた。
なもんで、 郵便局のダウンロードページ から落としてきたKEN_ALLデータから
都道府県+市区町村レベルまで結合した住所に緯度経度を当ててみた。
ファイルは こちらからダウンロード してください。
使用にあたっては、上記の空間情報科学研究センターの当該プロジェクトを一読してから活用ください。ありがたいことに自己責任の上で商用もOKです。(投稿時点)
具体的には、"東京都千代田区"に対して"139. 75354 35. 69393″とあたるくらいで
日本全国の地図に対して、1900程度をポイントすることが可能です。
正直それ以上ポイントすると何が何やら(@q@
これを郵便番号の各番号レベルに割り当ててしまうと、124, 178というポイントになるので、あえて上記に絞り込んでいる。あくまでもPowerBIで見たいだけ。
renz
飲食・リテール・流通の業務用途における先端系のプロトタイピングをよくやっています。
記事内容は、執筆時点での情報ですから、特に設定等をそのままコピペは避けてください。責任持てないです^q^