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

相关文章

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl