如何使用R语言将.json文件转换为.shp文件?
用R语言将GeoJSON转换为SHP文件的方法
首先得明确:只有GeoJSON格式的文件(带空间几何信息的JSON)才能转换为SHP,普通JSON文件因为没有空间属性,无法直接转成SHP。下面是具体步骤:
安装并加载空间数据处理包
sf(这是R中处理空间数据的主流工具):# 首次使用先安装 install.packages("sf") # 加载包 library(sf)读取GeoJSON文件:
# 替换为你的GeoJSON文件路径 geo_data <- st_read("path/to/your/file.geojson")运行后会显示读取的数据信息,包括几何类型、字段等。
导出为SHP文件:
# 替换为你想要输出的SHP文件路径 st_write(geo_data, "path/to/output/file.shp")执行后会自动生成SHP所需的配套文件(.shx、.dbf、.prj等),无需手动创建。
注意事项
- 如果遇到中文乱码问题,导出时可以指定编码:
st_write(geo_data, "path/to/output/file.shp", encoding = "UTF-8") - 如果你的JSON不是GeoJSON,需要先提取空间几何信息(比如经纬度字段),用
st_sfc()和st_sf()将其转换为sf对象,再导出为SHP。举个简单例子:# 假设普通JSON里有lon(经度)和lat(纬度)字段 library(jsonlite) # 读取普通JSON raw_data <- fromJSON("path/to/your/non_geo_json.json") # 创建空间几何对象 geometry <- st_sfc(st_point(c(raw_data$lon, raw_data$lat))) # 转换为sf对象 sf_data <- st_sf(raw_data, geometry = geometry) # 导出为SHP st_write(sf_data, "path/to/output/file.shp")
内容的提问来源于stack exchange,提问作者walle_eva
相关产品推荐
相关产品推荐

