【要約】指定した座標から半径15km圏内をhtmlで見やすく表示するPython [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者が引っ越し先の検討にあたり、指定座標からの半径15km圏内を視覚的に把握したいと考えた。しかし、単なる円の描画だけでは以下の課題に直面した。
- ・円の描画のみでは市区町村の境界が不明瞭で、具体的な地理的把握が困難。
- ・行政区域データをそのまま扱うと、ファイルサイズが肥大化しブラウザでの表示が困難になる。
// Approach
データサイズの肥大化を解決するため、GeoPandasを用いたジオメトリの簡略化を採用した。具体的な手順は以下の通りである。
1.GeoPandasで国土数値情報のShapefileを読み込み、結合する。
2.
simplify(100)メソッドを用いて、形状を維持しつつ頂点数を削減する。3.座標系をEPSG:4326に変換し、軽量なGeoJSON形式でエクスポートする。
4.foliumを用いて、簡略化した境界線と半径を示す円を地図上に重ねて描画する。
// Result
データの軽量化に成功し、実用的な可視化を実現した。具体的な成果は以下の通りである。
- ・データサイズを約60MBから4MBへと大幅に削減した。
- ・ブラウザ上でのスムーズな地図表示と、市区町村境界の明確な把握を両立した。
Senior Engineer Insight
> プロトタイプ開発におけるデータ軽量化の重要性を示している。
simplifyによる精度とサイズのトレードオフ管理は実務でも必須だ。ただし、商用環境で大規模なポリゴンを扱うなら、GeoJSONの配布ではなくベクトルタイルの採用を検討すべきである。