千家信息网

如何最优雅的操纵json地图数据

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章给大家分享的是有关如何最优雅的操纵json地图数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。知道最近在leaflet社区浏览
千家信息网最后更新 2025年12月02日如何最优雅的操纵json地图数据

本篇文章给大家分享的是有关如何最优雅的操纵json地图数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

知道最近在leaflet社区浏览案例的时候,发现大神已经提供了很好的json数据解析方案里,起码有两个(保守估计)以上的包可以完胜这个任务,而且是直接调用现成的函数,无需自己编写方案。

以上所说的解决方案就是利用成熟的json接口(I/O)工具:

geojsonio包和rgdal包:

这两个包可以在主流的空间格式数据之间进行无缝转换。

下面以世界地图为例,演示数据的转换过程。

library("jsonlite")

library("ggplot2")

library(plyr)

library(dplyr)

library(geojsonio)

library(rgdal)

如果还是停留在使用jsonlite包手工提取数据时代,你可能需要经历以下不可描述的代码环节:

setwd("D:/R/mapdata/State")

###

world_data <- fromJSON("world.json")

world_city_data<-world_data$features$properties[,1:2]

world_city_data<-world_data$features$properties[,c("NAME","NAME_LONG","BRK_A3","POP_EST","GDP_MD_EST")]

world_data$features$geometry$coordinates[[1]][,,1]

world_data$features$geometry$coordinates[[1]][,,2]

###

而且以上代码还不能保证每次都好用,可能每遇到一个新的素材,随着josn内部层级嵌套结构的变化,你都需要随之更改代码,工作量那是杠杠的~

可是如果你掌握了以下两个工具,那么josn数据操纵起来基本就没烦恼了,就跟之前操纵shp数据一样,这两个工作就是将json直接导入成控件格式数据,方便使用者进一步提取内部信息。

world_Map1<-geojson_read("world.json",what="sp") #geojsonio包导入

world_Map2<-readOGR("world.json","OGRGeoJSON") #rgdal包导入

world_Mapdata1<-world_Map1@data%>%.[,c("NAME","NAME_LONG","BRK_A3","POP_EST","GDP_MD_EST")]%>%rename(region=NAME)

world_Mapdata1$id<-rownames(world_Mapdata1)

world_MapdataPloygon1<-fortify(world_Map1)%>%left_join(.,world_Mapdata1[,c(6,1,4)])

ggplot(world_Mapdata1,aes(map_id=region))+

geom_map(aes(fill=POP_EST),map=world_MapdataPloygon1)+

expand_limits(x=world_MapdataPloygon1$long,y=world_MapdataPloygon1$lat)+

scale_fill_gradient2(low="#33A15A",high="#BB0126",mid="#FCFFB7",midpoint=mean(world_Mapdata1$POP_EST))+

coord_map("ortho",orientation=c(0,120,0))+

scale_y_continuous(breaks=(-6:6)*15) +

scale_x_continuous(breaks=(-12:12)*15)+

theme_minimal()+

theme(axis.text=element_blank(),axis.title=element_blank())

一个案例应用(来自plotly官网社区,本来是用于展示plot_ly函数应用,这里借用一下)

air <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv')

flights <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_aa_flight_paths.csv')

flights$id <- seq_len(nrow(flights))

CairoPNG("D:/world_map.png",1000,900)

showtext.begin()

ggplot()+

geom_polygon(data=world_MapdataPloygon1,aes(x=long,y=lat,group=group),fill="grey95",col="grey")+

geom_segment(data=flights,aes(x=start_lon,y=start_lat,xend=end_lon,yend=end_lat),col="red",size=.2)+

geom_point(data=air,aes(x=long,y=lat,size=cnt),shape=21,fill="#D73434",col="grey",alpha = 0.5)+

scale_y_continuous(breaks=(-6:6)*15) +

scale_x_continuous(breaks=(-12:12)*15)+

scale_size_area(max_size=15)+

coord_map("ortho",orientation=c(25,-100,0))+

theme_minimal()+

theme(axis.text=element_blank(),axis.title=element_blank())

showtext.end()

dev.off()

最新版的ggplot2中已经出现了一个新的图层函数--geom_sf,专门用于处理空间数据格式,这样算起来,ggplot系统中已经有至少三个可以处理空间数据的函数了,geom_polygon\geom_map\geom_sf(如果不算ggmap这种外接函数的话)。

以上就是如何最优雅的操纵json地图数据,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

数据 函数 两个 地图 代码 就是 方案 格式 空间 工作 优雅 工具 更多 案例 知识 社区 篇文章 处理 应用 成熟 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何安排软件开发时间 网络安全性关闭怎么办 华为成研所通用软件开发 软件开发公司需要什么架构 服务器安全配置总结 简单地数据库语言 中科软网络安全工程师学院 福州市第二医院数据库招标 龙岩公安网络安全课 杨浦区网络技术开发行业标准 杭州java软件开发服务费 软件开发哪个大专好一点湖南的 S2501串口服务器配置方法 用八开素描纸画网络安全手抄报 即墨区电商软件开发外包公司 数据库宏显示取消 软件开发现状调研报告内容 专科计算机网络技术文科 网络安全包含哪些部分 你发布的商品因请选择服务器 进入服务器被人打 数据库序列比对 福州市第二医院数据库招标 网络安全 工作计划 网络安全法规定关键信息的 杭州市网络安全协会 提供网络技术支持违法吗 公安局信息网络安全培训会 软件开发相关的书籍 网络安全审查法中被审查主体为
0