使用Geopandas将数据框数据插入到地图中

问题描述 投票:0回答:1

我需要从数据框向地图插入一些坐标。为此,我使用的是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。但是,地图在我做的时候就改变了。我在做什么错?

pandas plot geopandas
1个回答
0
投票

重新投影后,您的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)
© www.soinside.com 2019 - 2024. All rights reserved.