如何使用GeoPandas绘制多个图层

6

我正在尝试使用geopandas在地图上绘制一些信息。首先要做的是上传纽约市的shape文件:

nyc_boroughBoundaries = geopandas.read_file ("nybb_19b2")

这将返回一个地理数据框:

type (nyc_boroughBoundaries)

geopandas.geodataframe.GeoDataFrame

并且有一个几何列:

geometry

(POLYGON ((1012821.805786133 229228.2645874023...
(POLYGON ((970217.0223999023 145643.3322143555...
(POLYGON ((1029606.076599121 156073.8142089844...

我正在重复同样的过程,加载有关纽约市新建筑物的一些信息。
geo_df_NB_2018["Coordinates"]

POINT (40.62722 -73.969634)
POINT (40.764575 -73.955421)
POINT (40.525584 -74.166414)
POINT (40.742845 -73.89083100000001)
POINT (40.679859 -73.93992

然后我尝试将两个地理数据框绘制在同一张地图上,方法如下:

fig, ax = plt.subplots (figsize = (15,15))
geo_df_NB_2018.plot(ax = ax, alpha = 0.7, color = "pink")
nyc_boroughBoundaries.plot(ax = ax)

然而,它们被显示在图形的不同部分。

enter image description here

谢谢!


1
你的代码看起来没问题,但是你应该交换线并将点绘制在多边形的顶部。同时,似乎你可能错误地转换了点坐标并尝试交换经度和纬度。 - steven
谢谢您的回答。您是指这个代码吗:fig, ax = plt.subplots (figsize = (15,15)) nyc_boroughBoundaries.plot(ax = ax, alpha = 0.7, color = "pink") geo_df_NB_2018.plot(ax = ax)如果是的话,我仍然遇到了同样的问题。 - Diego
我不太确定您所说的“切换线并在多边形顶部绘制点”的意思。 - Diego
1
你从哪里得到这些点的?你是自己转换的吗?如果是的话,交换经度和纬度再试一次? - steven
@Steve 谢谢!现在它可以工作了。 - Diego
2个回答

6

您有不同的投影。它们需要相同才能一起绘制。看看您的坐标,它们明显是不同的。此外,正如@steven指出的那样,您已经交换了纬度和经度。首先修复这个问题,然后重新投影:

# convert CRS to the same as nyc_boroughBoundaries has
geo_df_NB_2018 = geo_df_NB_2018.to_crs(nyc_boroughBoundaries.crs)

fig, ax = plt.subplots(figsize=(15, 15))
geo_df_NB_2018.plot(ax=ax, alpha=0.7, color="pink")
nyc_boroughBoundaries.plot(ax=ax)

3
这也是可能的,因为.plot返回一个轴对象。
import geopandas as gpd

file1 = r"C:\GIS\data\data1.gpkg"
file2 = r"C:\GIS\data\data2.gpkg"
admin = gpd.read_file(file1, layer="admin")
set_asides = gpd.read_file(file2, layer="protected_areas")

ax = admin.plot(color="palegreen", edgecolor="green", figsize=(20, 10))
set_asides.plot(ax=ax, color="red")

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接