見出し画像

Pythonで市区町村名からタイルマップを作成する方法:ウェブスクレイピングと地理情報の処理

1.タイルマップ計算Pythonコードの解説

タイルマップとは?

タイルマップとは、地理情報を表示するために使用される技術の一つで、地図を小さな画像タイルに分割して表示する方法です。これにより、大規模な地図を効率的に扱うことができます。タイルマップの利点は、高速な表示速度とスムーズなズーム操作が可能なことです。

タイルマップの詳細説明

タイルマップは、ズームレベルごとに異なる解像度のタイルを使用して地図を表示します。ズームレベルが高くなるほど、タイルの数が増え、より詳細な地図を表示できます。各タイルはx座標とy座標で指定され、ズームレベルとともに特定の地理情報を示します。

参考URL


では、市区町村名からタイルマップを計算するPythonプログラムについて簡単に説明します。

import requests
from bs4 import BeautifulSoup
import pandas as pd
from math import log, tan, pi
import json

データの取得と前処理

次に、指定されたURLからデータを取得し、BeautifulSoupを使用してHTMLを解析します。

url = "https://qiita.com/ELIXIR/items/5567cde8e16aa1d47996"
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
soup1 = soup.find(class_="code-frame").getText()
  • requests.get(url): 指定したURLからHTMLコンテンツを取得します。

  • BeautifulSoup(res.content, 'html.parser'): 取得したHTMLコンテンツをBeautifulSoupで解析します。

  • soup.find(class_="code-frame").getText(): 特定のクラスcode-frameを持つ要素からテキストを抽出します。

3. データの前処理

取得したデータを適切な形式に変換し、リストに格納します。

soup1 = soup1.replace('\n', ',').split(',')
n = 6
listloca = []
for i in range(0, len(soup1), n):
    listloca.append(soup1[i: i+n])
  • replace('\n', ','): 改行文字をカンマに置換します。

  • split(','): カンマで文字列を分割し、リストに変換します。

  • listloca: 各データを6つの要素ごとにリストに分割し、listlocaに追加します。

4. データフレームの作成と結合

データフレームを作成し、必要な列を結合します。

dfloca = pd.DataFrame(listloca[1:], columns=['市番', '県', '市or郡', '地名', '緯度', '経度'])
dflocaname = dfloca['県'].str.cat(dfloca['市or郡']).str.cat(dfloca['地名'])
  • pd.DataFrame(): データフレームを作成します。

  • str.cat(): 列を文字列として結合します。

5. 地理情報の計算

地理情報(緯度・経度)をタイル座標に変換します。

list_con = []
for i in range(len(dfloca['緯度'])-1):
    list_con.append([dfloca['市番'][i], dflocaname[i], dfloca['緯度'][i], dfloca['経度'][i]])

listtile = [['市番', '県+市or郡+地名', '緯度', '経度', 'x', 'y', 'ズーム']]
z = 15
for i in range(len(list_con)):
    x = int((float(list_con[i][3]) / 180 + 1) * 2**z / 2)
    y = int(((-log(tan((45 + float(list_con[i][2]) / 2) * pi / 180)) + pi) * 2**z / (2 * pi)))
    listtile.append([list_con[i][0], list_con[i][1], list_con[i][2], list_con[i][3], x, y, z])
  • listtile: 各地理情報をタイル座標に変換し、リストに追加します。

  • タイル座標計算: 地理情報(緯度・経度)をタイル座標(x, y)に変換します。

6. APIリクエストとデータの出力

最後に不動産情報ライブラリにて、各市町村に対応したタイルマップ座標から地価を出します。

外部APIにリクエストを送り、取得したデータを出力します。

ここから先は

2,558字

¥ 200

この記事が気に入ったらサポートをしてみませんか?