是否有一种(未弃用的)方法来确定我导入到 R 的该形状文件的多边形内的坐标?

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

我已经下载了加拿大联邦区的形状文件。当我将文件加载到命名空间中时,它是一个 SpatialPolygonsDataFrame。检查单个多边形,我可以看到以下内容:

enter image description here

我可以看到这些都在UTM系统中。我希望能够使用十进制单位将它们转换为正常的经度/纬度系统。 SPDF 对象具有属性:数据、多边形、绘图顺序、边界框和 proj4string。

我尝试过,例如:

sf::st_as_sf(MAP_HERE, coords = c('lon', 'lat'), crs = 4326)

在生成的 sf 数据框中,我无法找到一种方法来访问长/纬度对中的新对象的坐标。当我在生成的数据帧上运行 st_coordinates() 时,我可以看到这些没有改变。

理想情况下,我想访问原始 SPDF 中边界框的坐标,并使用它们来计算各个多边形的质心。

有办法做到这一点吗?

r gis spatial
1个回答
0
投票

您应该从 shapefile 将数据读入

sf
对象并跳过
SpatialPolygonsDataFrame
步骤:

library(sf)
map = st_read("./path/to/mymapdata.shp")

然后使用

st_transform
转换为经纬度,即 epsg 代码 4326:

map_trans = st_transform(map, 4326)

那么如果您想查看完整的坐标:

st_coordinates(map_trans)

给你这样的东西:

             X        Y L1 L2 L3
[1,] -81.47276 36.23436  1  1  1
[2,] -81.54084 36.27251  1  1  1
[3,] -81.56198 36.27359  1  1  1
[4,] -81.63306 36.34069  1  1  1
[5,] -81.74107 36.39178  1  1  1
[6,] -81.69828 36.47178  1  1  1

其中

L1
对数据中的每个要素(行)进行分组,
L2
L3
对这些要素中的多个多边形和孔进行编码。

© www.soinside.com 2019 - 2024. All rights reserved.