使用R中的readOGR读取慢速GML(地理标记语言)文件

时间:2017-06-15 16:55:54

标签: r gis rgdal gml-geographic-markup-lan sf

我有很多GML文件在R中循环,但它们都不是非常重(最大文件大小为600 Mb,但通常它们的范围在10-60 Mb之间)。我的问题是来自{rgdal}包的readOGR函数需要太长时间才能读取它们,并且它会大大减慢循环速度。阅读单个文件需要3分钟到30分钟......

我已经通过.shp文件循环,他们不会花太多时间阅读。

所以我的问题实际上是两个:

  • R中有更快的功能来读取GML文件吗?到目前为止还没找到一个
  • 如果没有更快的阅读功能,是否有可能快速将GML文件转换为.shp?

我的readOGR代码:

llayer<-ogrListLayers(gmls)[1]
a<- readOGR(dsn=gmls, layer=llayer, encoding = "UTF-8", disambiguateFIDs = T)

1 个答案:

答案 0 :(得分:1)

正如@LoBu在评论部分所说,sf::st_read()比readOGR快得多。要记住的唯一问题是,现在您使用sf个对象,您必须使用sf包执行操作,或者将sf对象转换为as(file, "Spatial")的SpatialPolygonsDataframe。 / p> 对于使用工作笔记本电脑的人来说,

警告:正如我在评论部分提到的那样,可能会出现错误。确保您使用的是具有完全管理许可的笔记本电脑