读取和减少.kmz

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

我是地理空间使用R的新手。

工作.kmz:https://www.cnrfc.noaa.gov/ - 从地图窗格下方的第二个下拉标题为“下载叠加文件”,我已下载并且我正在使用“Drainage Basins”kml,应下载为“basins.kml”

library(rgdal)
library(tidyverse)

通过在文本编辑器中查看.kml,看起来KML图层名称为“cnrfc_09122018_basins_thin”,因此请阅读:

cnrfc_basins <- readOGR("basins.kml", "cnrfc_09122018_basins_thin")

给了我一个“Large SpatialPolygonsDataFrame”。

为了能够绘制,看起来我需要“强化它”(?),并制作一个更普通的data.frame,所以从我遇到的其他一些帖子:

cnrfc_basins_fortify <- merge(broom::tidy(cnrfc_basins), 
                        as.data.frame(cnrfc_basins), by.x="id", by.y=0)

用这个绘图:

ggplot() + geom_path(data = cnrfc_basins_fortify, aes(x=long, y=lat, group = group))  +
           coord_quickmap()

给我我期待的数据:

enter image description here

但是,对于这些大约一百个左右的多边形,我有数十万个data.frame行。如何减少这些,所以每个多边形只有一行?(每个多边形代表一个特定的盆,在“名称”列中已经有一个唯一的五位数ID)。当我将数据连接到这些独特的多边形时,拥有更少的行似乎可以更轻松地处理文件并加快连接。

任何建议都非常感谢。

r geospatial tidyverse rgdal
1个回答
0
投票

您所需要的就是直接提取SpatialPolygonsDataFrame中包含的@data

poly = cnrfc_basins@data

这应该为您提供339行data.frame,其中包含您需要的唯一标识符(没有几何元数据)

> head(poly)
   Name
0 EFBC1
1 CSKC1
2 CMIC1
3 FMDC1
4 NMFC1
5 NFDC1
© www.soinside.com 2019 - 2024. All rights reserved.