https://gkukan.jp オープンデータを活用して、地理情報システム(GIS)についてわかりやすく解説するサイトです。初心者から上級者まで、GISの活用方法や便利なツールを学べる情報を提供します。地域情報の可視化や地図データの使い方について知識を深めたい方におすすめです。

Pythonでボロノイ図作成

Pythonでボロノイ図作成






Pythonでボロノイ図作成

  • トップ ›   日記/一般 日記/一般|  浜松市| 
  • 新規登録ログイン

Pythonでボロノイ図作成


Pythonを使ってボロノイ図を作成する方法についてご紹介します。
前回の記事「ボロノイ図を使った最寄り医療機関の可視化」では、ボロノイ図を用いた医療機関の可視化を紹介しましたが、今回はそのボロノイ図をPythonでどのように作成するか、ソースコードの解説を行います。



入力ファイルについて


ボロノイ図を作成するためには、「緯度」「経度」という特定のカラム名が含まれたCSVファイルが必要です。
このカラム名は漢字で固定されており、入力データに必ずこの名称で情報が存在していなければなりません。
以下のようなCSVファイル形式が適しています。


入力ファイルの例



経度,緯度
139.6917,35.6895
135.5023,34.6937
140.1234,36.5678


ソースコードの解説


以下に、Pythonを使ってボロノイ図を生成し、GeoJSON形式で出力するスクリプトの全体を示します。
このスクリプトでは、特定の形式に従ったCSVファイル(「緯度」と「経度」カラムを持つ)を読み込み、そのデータをもとにボロノイ分割を行います。



必要なライブラリ


pip install pandas geopandas scipy shapely chardet


CSVファイルの読み込み


def load_csv(file_path):
with open(file_path, 'rb') as f:
result = chardet.detect(f.read())
encoding = result['encoding']
df = pd.read_csv(file_path, encoding=encoding)
return df


ボロノイポリゴンの生成


def generate_voronoi(df):
points = df[['経度', '緯度']].values # 「経度」と「緯度」のカラムを使用
vor = Voronoi(points)
polygons = []
for region in vor.regions:
if not region or -1 in region:
continue
polygon = [vor.vertices[i] for i in region]
polygons.append(Polygon(polygon))
return polygons


GeoJSONへのエクスポート


def export_to_geojson(polygons, output_file):
gdf = gpd.GeoDataFrame(geometry=polygons)
gdf.to_file(output_file, driver='GeoJSON', encoding='utf-8')


メイン処理


def main():
script_path = os.path.dirname(os.path.abspath(__file__))
csv_file = os.path.join(script_path, 'input.csv')
geojson_file = os.path.join(script_path, 'output.geojson')

df = load_csv(csv_file)
polygons = generate_voronoi(df)
export_to_geojson(polygons, geojson_file)
print(f"GeoJSONファイルが{geojson_file}に保存されました。")


結論


Pythonを使って「緯度」と「経度」カラムを持つCSVファイルを基にボロノイ図を作成する方法を紹介しました。
カラム名は固定ですが、データさえ整備されていれば、このスクリプトを使用することで、簡単に領域分割が可能です。
応用例として、最寄り施設の表示や地域分析など、幅広い分野で活用できるでしょう。



#Python #データサイエンス #GIS #ボロノイ図 #プログラミング #データ可視化 #GeoJSON #地理情報





同じカテゴリー(オープンデータ)の記事
今日は冬至です
今日は冬至です(2024-12-21 05:06)

コメント

名前
上の画像に書かれている文字を入力して下さい
削除
Pythonでボロノイ図作成
    コメント(0)