在 Geopandas 中转换 shapefile 的坐标

Posted

技术标签:

【中文标题】在 Geopandas 中转换 shapefile 的坐标【英文标题】:Convert the coordinates of a shapefile in Geopandas 【发布时间】:2018-04-22 13:41:32 【问题描述】:

我是空间分析的新手,但我在任何地方都找不到这个答案。

我有 CRS 坐标、纬度和经度的邮政编码列表,以及 OSN 坐标中的伦敦自治市镇形状文件,我想将它们映射在一起,但这就是发生的情况。这是邮政编码的负责人

london_post_codes.head()
Out[81]:
postcode    latitude    longitude
0   WD6 1GS 51.658021   -0.255663
1   WD17 1LA    51.660366   -0.397525
2   WC2N 6LE    51.509413   -0.121676
3   WC2N 6NA    51.508363   -0.124454
4   WC2N 6ND    51.508216   -0.123829

虽然这是在 geopandas 中读取的形状文件

borough = gpd.read_file('London_Borough_Excluding_MHW.shp')
borough.head()
borough.head()

NAME    GSS_CODE    geometry
0   Kingston upon Thames    E09000021   POLYGON ((516401.6 160201.8, 516407.3 160210.5...
1   Croydon E09000008   POLYGON ((535009.2 159504.7, 535005.5 159502, ...
2   Bromley E09000006   POLYGON ((540373.6 157530.4, 540361.2 157551.9...
3   Hounslow    E09000018   POLYGON ((521975.8 178100, 521967.7 178096.8, ...
4   Ealing  E09000009   POLYGON ((510253.5 182881.6, 510249.9 182886, ...

我们可以看到多边形的坐标与邮政编码的坐标有何不同。我和当我将它们绘制在一起时,我得到了

fig, ax = plt.subplots()
borough.plot(ax = ax)
borough = gpd.read_file('statistical-gis-boundaries-london/ESRI/London_Borough_Excluding_MHW.shp')
london_post_codes.plot(kind='scatter',s=10, x='longitude', y='latitude',ax=ax)

有什么建议吗?

【问题讨论】:

【参考方案1】:

解决方案只是更改 CRS (Coordinate Reference System)。这些通过代码进行,称为EPSG。 WSG84 lat/long CRS 的 EPSG 代码为 4326。因此

borough = gpd.read_file('London_Borough_Excluding_MHW.shp')
borough = borough.to_crs(epsg=4326)

然后是其余的。

【讨论】:

以上是关于在 Geopandas 中转换 shapefile 的坐标的主要内容,如果未能解决你的问题,请参考以下文章

将 csv 和 shapefile 与 geopandas 合并

将 Geopandas 数据框直接导出到压缩的 shapefile

使用 GeoPandas/Fiona 从 shapefile 读取 M 值

如何从 GeoPandas DataFrame 创建 shapefile?

Shapefile 缩放以使用 geopandas 进行绘图

用 shapefile 或 geopandas 绘制蒙面的南极洲