使用Geopandas将数据帧数据插入地图



我需要将一些坐标从数据帧插入到映射中。对于这项任务,我使用的是地质标准。

这是我的代码:

gdf = gpd.GeoDataFrame(DF, geometry=gpd.points_from_xy(DF.pickup_longitude, DF.pickup_latitude))

我得到了以下信息:

Unnamed: 0  DOLocationID  ...  time                    geometry
0           0           NaN  ...     0.380278  POINT (-74.01576 40.71555)
1           1           NaN  ...     0.390833  POINT (-73.98205 40.76276)
2           2           NaN  ...     0.350556  POINT (-73.97941 40.75543)
3           3           NaN  ...     0.503056  POINT (-73.77679 40.64509)
4           4           NaN  ...     0.618333  POINT (-73.78806 40.64167)
[5 rows x 31 columns]

然后我使用以下代码创建地图:

df = gpd.read_file(gpd.datasets.get_path('nybb'))
df = df.to_crs(epsg=3857)
ax = df.plot(figsize=(10, 10), alpha=0.5, edgecolor='k')
ctx.add_basemap(ax)

所以我的问题是:如何将几何体列绘制到地图中?

PD:我在最后一行之前尝试了gdf.plot(ax=ax, color='red'),因为我理解地理标准会自动引用列geometry。然而,我做的时候地图变了。我做错了什么?

重新投影后,gdf与df位于不同的CRS中。我假设gdf位于lon/lat坐标中,即epsg 4326。因此,您首先必须将它设置为您的gdf,然后像对另一个一样重新编程为3857。

gdf.crs = 4326
gdf = gdf.to_crs(3857)

然后你可以按照你已经尝试过的方式进行绘图。

df = gpd.read_file(gpd.datasets.get_path('nybb'))
df = df.to_crs(epsg=3857)
ax = df.plot(figsize=(10, 10), alpha=0.5, edgecolor='k')
gdf.plot(ax=ax, color='red')
ctx.add_basemap(ax)

最新更新