我需要从数据框向地图插入一些坐标。为此,我使用的是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')
,因为我理解geopandas自动引用了列geometry
。但是,地图在我做的时候就改变了。我在做什么错?
重新投影后,您的gdf
与df在不同的CRS中。我假设gdf在lon / lat坐标中,即epsg4326。因此,您首先必须将其设置为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)