R可视化 | 地理信息空间(上)

2023-11-07 18:10

本文主要是介绍R可视化 | 地理信息空间(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


作者:张同学

来源:凹凸数据

第一版结果

1.1 地图的文件格式

shp数据结构:

1、分文件存储信息:

name.dbf name.shp name.shx

2、获取渠道

https://gadm.org/download_country_v3.html

3、导入工具

maptools rgdal
sf
json数据结构:

1、key-value形式的键值对结构

name.json

2、获取渠道

http://datav.aliyun.com/static/tools/atlas/

3、导入工具

rgdal
sf

个人使用下来的感受是阿里云的json文件使用起来会更加方便一点。

1.2 数据文件的读取

  • rgdal库的readOGR(dsn, layer,stringsAsFactors,encoding=NULL……)函数

    • 读入数据转换为sp数据模型

  • sf库的st_read(dsn, layer, stringsAsFactors)函数

    • 读入数据转换为sf数据模型

    • dsn:读入的文件名

    • layer:读入的层数(如果是多层地图的话)

    • stringsAsFactors:是否将读入文件中的字符串数据转换为因子数据

    • encoding:文件的编码格式

1.3 地理数据模型

  • SP(SpatialPolygonsDataFrame)格式

    • 数据描述层(data.frame):名称、ID、编号、简写、IOS编码等

    • 几何映射层(polygons):每一个行政区的多边形边界点(按order排序、按group分组)

    • 需要使用fortify函数将polygons数据转换为数据框格式。

  • SF(Simple feature list column)格式

    • 获取的是完整的数据框( data.frame )格式

    • 将每一个行政区对于的几何分界点封装成一个list对象

个人使用比较多的是SF格式的数据模型。

1.4 总结

文件格式与函数方法关系图

1.5 上手实战

设计目的:进行地理文件的加载、数据转换及基础处理,将地理信息数据与业务数据的融合(sp与sf数据模型),添加地理标签,应用地理坐标轴,最终完成一个地理空间可视化的小demo。

1、从阿里地图下载省级地图,加载并实现地图可视化,在绘图前先做一些准备工作:

library("ggplot2")
library("rgdal")
library("sf")
library("sp")
library("ggthemes")
library('dplyr')
library("data.table")  #fread函数用于读取CVS表格
library("ggrepel")rm(list = ls())
gc()
setwd("D:/空间可视化与地理基础")#指定读取文件的路径
  1. 某省级地图的地图实现

#rgdal包读入:
gansu_map <- readOGR("甘肃省.json",stringsAsFactors=FALSE)
Encoding(gansu_map@data$name) <- 'UTF-8'
frame_data = gansu_map@data
#frame_polygon = gansu_map@polygons
frame_polygon = fortify(gansu_map)  
ggplot(frame_polygon,aes(long,lat,group = group)) +geom_polygon(colour = 'white')
  1. 按市进行填充

division_data1 <- gansu_map@data 
division_data1 <- mutate(division_data1,id = row.names(division_data1))
division_data1 <- division_data1[,c("id","name")]    #行政区划层
#division_data <- china_map1@data %>% mutate(id = row.names(.)) %>% .[,c("id","NAME")]    #行政区划层polygons_data1 <- fortify(gansu_map)     #地理信息边界点数据
polygons_data1 <- polygons_data1[,c(1,2,7,3,6)]
#polygons_data <- fortify(china_map1)  %>% .[,c(1,2,7,3,6)]  division_data1$id <- as.numeric(division_data1$id)
polygons_data1$id <- as.numeric(polygons_data1$id)
final_mapdata1 <- left_join(polygons_data1,division_data1,by= 'id')ggplot(final_mapdata1,aes(long,lat,group = group)) +geom_polygon(aes(fill=name),colour = 'white')+coord_map("polyconic")

运行效果如下:

  1. 添加市级的标签

ggplot() +geom_polygon(data=final_mapdata1,aes(x=long,y=lat,group = group,fill=name),colour = 'white')+geom_text_repel(data=frame_data,aes(x=centroid1,y=centroid2,label=name))+coord_map("polyconic")

还有优化版哦!

见明天续集

参考资料

[1]

张杰.《R语言数据可视化之美-专业图表绘制指南(增强版)》第11章 地理空间型图表: https://www.cnblogs.com/zzj420133722/p/13789195.html

这篇关于R可视化 | 地理信息空间(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365397

相关文章

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

win7系统中C盘空间缩水的有效处理方法

一、深度剖析和完美解决   1、 休眠文件 hiberfil.sys :   该文件在C盘根目录为隐藏的系统文件,隐藏的这个hiberfil.sys文件大小正好和自己的物理内存是一致的,当你让电脑进入休眠状态时,Windows 7在关闭系统前将所有的内存内容写入Hiberfil.sys文件。   而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑

求空间直线与平面的交点

若直线不与平面平行,将存在交点。如下图所示,已知直线L过点m(m1,m2,m3),且方向向量为VL(v1,v2,v3),平面P过点n(n1,n2,n3),且法线方向向量为VP(vp1,vp2,vp3),求得直线与平面的交点O的坐标(x,y,z): 将直线方程写成参数方程形式,即有: x = m1+ v1 * t y = m2+ v2 * t

[Linux]:环境变量与进程地址空间

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 环境变量 1.1 概念 **环境变量(environment variables)**一般是指在操作系统中用来指定操作系统运行环境的一些参数,具有全局属性,可以被子继承继承下去。 如:我们在编写C/C++代码的时,在链接的时候,我们并不知

【编程底层原理】方法区、永久代和元空间之间的关系

Java虚拟机(JVM)中的内存布局经历了几个版本的变更,其中方法区、永久代和元空间是这些变更中的关键概念。以下是它们之间的关系: 一、方法区: 1、方法区是JVM规范中定义的一个概念,它用于存储类信息、常量、静态变量、即时编译器编译后的代码等数据。 3、它是JVM运行时数据区的一部分,与堆内存一样,是所有线程共享的内存区域。 二、永久代(PermGen): 1、在Java SE 7之前,

算法复杂度 —— 数据结构前言、算法效率、时间复杂度、空间复杂度、常见复杂度对比、复杂度算法题(旋转数组)

目录 一、数据结构前言 1、数据结构 2、算法 3、学习方法 二、 算法效率 引入概念:算法复杂度  三、时间复杂度 1、大O的渐进表示法 2、时间复杂度计算示例  四、空间复杂度 计算示例:空间复杂度 五、常见复杂度对比 六、复杂度算法题(旋转数组) 1、思路1 2、思路2 3、思路3 一、数据结构前言 1、数据结构         数据结构(D

「大数据分析」图形可视化,如何选择大数据可视化图形?

​图形可视化技术,在大数据分析中,是一个非常重要的关键部分。我们前期通过数据获取,数据处理,数据分析,得出结果,这些过程都是比较抽象的。如果是非数据分析专业人员,很难清楚我们这些工作,到底做了些什么事情。即使是专业人员,在不清楚项目,不了解业务规则,不熟悉技术细节的情况下。要搞清楚我们的大数据分析,这一系列过程,也是比较困难的。 我们在数据处理和分析完成后,一般来说,都需要形成结论报告。怎样让大

Oracle 查看表空间名称及大小和删除表空间及数据文件方法

--1、查看表空间的名称及大小  SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size  FROM dba_tablespaces t, dba_data_files d  WHERE t.tablespace_name = d.tablespace_name  GROUP BY t.tablespace_na