Вставить данные Dataframe на карту, используя Geopandas - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно вставить некоторые координаты из кадра данных на карту. Для этой задачи я использую geo pandas.

Это мой код:

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') перед последней строкой, потому что я понял гео pandas автоматически ссылается на столбец geometry. Однако карта изменилась, когда я это сделал. Что я делаю не так?

1 Ответ

0 голосов
/ 25 марта 2020

Ваш gdf находится в другом CRS, чем df, как только вы перепроектируете его. Я предполагаю, что 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)
...