【问题标题】:Plot points from a csv file onto a geopandas map将 csv 文件中的点绘制到 geopandas 地图上
【发布时间】:2020-12-03 09:44:06
【问题描述】:

在第一步中,我已经从多边形shapefile创建了一个绘图,这里的gpd指的是geopandas,代码如下:

data = gpd.read_file('data.shp')
fig, axes = plt.subplots(figsize=(10,8))
data.plot(ax = axes, color = "white", edgecolor = "black")
plt.plot()

在此之后,我有一个多边形图,现在我有另一个包含坐标信息的 csv 文件,我想将这些点绘制到以前的多边形图上,我尝试使用以下代码来访问坐标信息:

lat=[]
lon=[]
with open('data.csv') as csvfile:
    reader = csv.reader(csvfile,delimiter=',')
    for data in reader:
        lat.append(float(data[2]))
        lon.append(float(data[3]))

我检查了纬度和经度,没问题,但是接下来我应该怎么做才能同时显示点和多边形?

【问题讨论】:

  • 您已经有axes 用于绘图。只需重新使用它,只需尝试 axes.scatter(lon, lat) 并告诉我们您得到了什么。

标签: python pandas csv gis geopandas


【解决方案1】:

您需要了解并协调在 shape 文件和 .csv 中使用的 CRS(坐标参考系统)

你可能会得到形状文件的crs

    data.crs

假设你的输出是这样的:

<Geographic 2D CRS: EPSG:4326>
Name: WGS 84
Axis Info [ellipsoidal]:
- Lat[north]: Geodetic latitude (degree)
- Lon[east]: Geodetic longitude (degree)
Area of Use:
- name: World
- bounds: (-180.0, -90.0, 180.0, 90.0)
Datum: World Geodetic System 1984
- Ellipsoid: WGS 84
- Prime Meridian: Greenwich

所以形状文件的 CRS 是 4326 - 现在您必须找出 .csv 的 CRS,或者可能是最可能的 CRS。您可以通过一般搜索来获得它,或者使用这样的参考: https://www.nceas.ucsb.edu/sites/default/files/2020-04/OverviewCoordinateReferenceSystems.pdf

假设您查看了该 .pdf 并认为这听起来像您的 .csv:

预计(东/北)UTM,第 10 区(EPSG:32610)第 10 区用于太平洋西北部

所以你需要先用 32610 初始化你的数据,然后重新投影到 4326

    from shapely.geometry import Point
    from geopandas import GeoDataFrame
    import pandas as pd

    df = pd.read_csv("data.csv")
    geometry = [Point(xy) for xy in zip(df[2], df[3])]
    gdf = GeoDataFrame(df, geometry=geometry, crs= 32610) 
    gdf = gdf.to_crs(4326)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2019-04-24
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多