空间矢量数据保存为GeoJSON、PDF等文件格式

文章介绍了R语言中处理空间矢量数据的不同格式,如Shapefile、Geodatabase和GeoJSON。Shapefile由多个文件组成,而Geodatabase是ArcGIS的新型文件格式,可存储多个矢量文件。sf包支持加载Geodatabase但无法保存。GeoJSON则是一个单一文件格式。文章提供了加载和保存这些格式的示例代码。
摘要由CSDN通过智能技术生成

专注系列化高质量的R语言教程

推文索引 | 联系小编 | 付费合集


我们使用的空间矢量数据一般是Shapefile格式的,它在ArcGIS、R语言中都能加载,但是这种数据格式在使用时也有不便:它是由多个文件构成的,一般有.shp.shx.dbf.prj等,此外还可能有.sbx.cpg.shp.xmlatx.sbn等。尽管在加载时通常只需要关注.shp文件,但是太多的组成文件还是会对数据管理造成不便。

本篇主要介绍一些空间矢量存储的格式,目录如下:

  • Shapefile

  • Geodatabase

  • GeoJSON

  • PDF

  • 其他

Shapefile

一般情况下我们会用sf工具包中的st_read()st_write()函数来分别加载和保存Shapefile文件。

nc.shpsf工具包自带的文件,通过下面代码可以得到它在本地的位置:

library(sf) 
path = system.file("shape/nc.shp", package = "sf")
path
## [1] "D:/R-4.2.1/library/sf/shape/nc.shp"

加载和保存shapefile文件:

nc <- st_read(path)

st_write(nc, "E:/nc.shp", delete_layer = T)
  • 设置delete_layer = TRUE可以使保存文件的代码多次运行,它表示在保存时先删除地址中已存在的同名文件。

保存后的文件如下,共有4个子文件:

ebcee6704645603cf6bea093b1a231c9.png

Geodatabase

Geodatabase是ESRI从ArcGIS 10开始推出的新型文件格式,后缀为.gdb。它本质上是个文件夹,可以储存一个或多个矢量文件。

sf工具包目前可以加载这种文件格式,但是不能将矢量文件保存为这种格式

这里,学堂君事先准备了一份Geodatabase文件(后台发送关键词“示例数据”获取,文件名“204.nc.gdb”)。

在加载之前,可以使用st_layers()函数查看它的图层:

st_layers("E:/204.nc.gdb")
## Driver: OpenFileGDB 
## Available layers:
##     layer_name geometry_type features fields crs_name
## 1           nc Multi Polygon      100     16    NAD27
## 2          nc2 Multi Polygon      100     16    NAD27
## 3 北卡罗来纳州 Multi Polygon      100     16    NAD27

可以看出,它共有3个图层。加载它们的方法是:

nc1 <- st_read(dsn = "E:/nc.gdb", layer = "nc")

nc2 <- st_read(dsn = "E:/nc.gdb", layer = "nc2")

nc3 <- st_read(dsn = "E:/nc.gdb", layer = "北卡罗来纳州")

GeoJSON

将矢量文件保存为GeoJSON文件,需要选择对应的驱动器(driver)。通过st_driver()函数可以查看所有可用的驱动器。

## 查看矢量文件的驱动器
driver <- st_drivers(what = "verctor")
driver

GeoJSON文件的驱动器是GeoJSON

st_write(nc, "E:/nc.json", driver = "GeoJSON",
         delete_layer = T)
  • 保存到本地后只有一个子文件。

加载GeoJSON文件:

ncjson <- st_read("E:/nc.json")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值