web-dev-qa-db-ja.com

Python 3.6でCSVから緯度経度をプロットします

次の形式(1列目と2列目)で、マップ上のCSVファイルから多数の緯度経度値をプロットしようとしています。

enter image description here

python 3.6を使用しています(Basemapのような一部のライブラリはこのバージョンでは動作しません)。

どうやってやるの?

4
Tina J

ポイントデータを散布図としてプロットするだけの場合は、次のように簡単です。

import matplotlib.pyplot as plt
plt.scatter(x=df['Longitude'], y=df['Latitude'])
plt.show()

マップ上にポイントをプロットしたい場合は、マップのプロット方法により依存するため、面白くなっています。

簡単な方法は、shapelygeopandasを使用することです。以下のコードは、現在使用しているラップトップへのアクセスが制限されているためテストされていませんが、概念的なロードマップが提供されているはずです。

from shapely.geometry import Point
import geopandas as gpd
from geopandas import GeoDataFrame

df = pd.read_csv("Long_Lats.csv", delimiter=',', skiprows=0, low_memory=False)

geometry = [Point(xy) for xy in Zip(df['Longitude'], df['Latitude'])]
gdf = GeoDataFrame(df, geometry=geometry)   

#this is a simple map that goes with geopandas
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
gdf.plot(ax=world.plot(figsize=(10, 6)), marker='o', color='red', markersize=15);

レンダリングされた画像の例を以下に示します。

enter image description here

13
Xiaoyu Lu