我需要将一些坐标从数据帧插入到映射中。对于这项任务,我使用的是地质标准。
这是我的代码:
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)