R_ggplot2地理信息可视化_史上最全(二)

本文是R_ggplot2地理信息可视化的第二部分,介绍了地图数据集的格式,如GeoJSON和TopoJson,以及如何使用不同包读取和处理这些数据。内容涵盖地图数据的读取、数据格式、与其他几何对象结合的绘图方法,如气泡饼图、散点图、填充颜色和条形图。同时,提供了多个数据集和在线转换工具的资源链接。
摘要由CSDN通过智能技术生成
3901436-b1c6577d6a1827a4

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:李誉辉  

四川大学在读研究生


前言

上文

R_ggplot2地理信息可视化_史上最全(一)

讲了sp和sf数据类型,这篇讲解地图数据集以及与其他几何对象的结合,还有栅格地图。

注:蓝字表示文末有其网址链接

4.地图数据集


地图数据集常见2中格式

json,包括GeoJSON(文件后缀为.geojson)和TopoJson(文件后缀为.json)。

shp, shp对象比较特殊,是由很多个文件组成的,
通常在同一个文件下还有.shx和.dbf格式的文件。这些文件必须在一起,否则不能成功读取。

.rds,这是一种文件格式,分为sp.rdssf.rds两种,分别对应psf两种数据结构。
使用sp::readRDS()读取。

3901436-32142c5951f6aa9c

地图数据集读取包及函数

如上图所示,rgdalsf功能比较全,用得也比较多。
地图集下载网站:

GADM,注意该网站中,中国地图不包含台湾。

中国县级地图 (见文末)提取码:uomy

OpenStreetMap

阿里云地图,左上角框框里面选择区域,左下角选择下载格式。

地图数据在线转换格式:

geojson.io,在线解析和转换格式。

mygeodata converter

IGIS Map Converter

推荐使用rmapshaper::ms_simplify()简化地图数据,可以指定简化比例,不然真的很卡,
该包使用拓扑学的知识简化多边形,简化后在常规分辨率下根本看不出来差别。
该函数支持jsonspsf等多种输入对象。
object.size()可以查看数据集的存储大小。


4.1 json格式

4.1.1 rgdal包读取

 1rm(list = ls()); gc() # 清空内存
2library(ggplot2)
3
4path1 <- "E:/R_input_output/data_input/JSON/GeoJSON/China.geojson"
5China_1 <- rgdal::readOGR(dsn = path1, stringsAsFactors = FALSE)
6Encoding(China_1@data$name) <- "UTF-8" # 中文字符重编码
7China_2 <- fortify(China_1)
8
9ggplot(China_2) + 
10  geom_polygon(aes(x = long, y = lat, group = group, fill = group), 
11               color = "cyan", show.legend = FALSE) + 
12  coord_map()


1##           used (Mb) gc trigger (Mb) max used (Mb)
2## Ncells  901585 48.2    1744096 93.2  1744096 93.2
3## Vcells 1789510 13.7    9804475 74.9 12236244 93.4
4## OGR data source with driver: GeoJSON 
5## Source: "E:\R_input_output\data_input\JSON\GeoJSON\China.geojson", layer: "中国"
6## with 35 features
7## It has 10 fields


3901436-99be72aed9df8831

4.2 sf包读取

sf包读取中文字符不会乱码。

 1rm(list = ls()); gc() # 清空内存
2library(ggplot2)
3library(sf)
4
5path1 <- "E:/R_input_output/data_input/JSON/GeoJSON/China.geojson"
6China_1 <- st_read(path1, stringsAsFactors=FALSE)
7
8ggplot(China_1) + 
9  geom_sf(color = "cyan", aes(fill = name), show.legend = FALSE) + 
10  coord_sf(crs = "+proj=aea +lat_1=25 +lat_2=50 +lon_0=105") + 
11  ggtitle("中国地图(Albers equal-area projection)")


 1##           used (Mb) gc trigger (Mb) max used (Mb)
2## Ncells 1112615 59.5    1744096 93.2  1744096 93.2
3## Vcells 2079841 15.9    9804475 74.9 12236244 93.4
4## Reading layer `涓浗' from data source `E:\R_input_output\data_input\JSON\GeoJSON\China.geojson' using driver `GeoJSON'
5## Simple feature collection with 35 features and 10 fields
6## geometry type:  MULTIPOLYGON
7## dimension:      XY
8## bbox:           xmin: 73.50235 ymin: 3.397162 xmax: 135.0957 ymax: 53.56327
9## epsg (SRID):    4326
10## proj4string:    +proj=longlat +datum=WGS84 +no_defs


3901436-122ac49cdb2caed7


4.3 shp格式

4.3.1 rgdal包读取

 1rm(list = ls()); gc() # 清空内存
2library(ggplot2)
3
4path1 <- "E:/R_input_output/data_input/全国范围的行政边界和人口密度矢量图/CHN_adm/CHN_adm1.shp"
5China_1 <- rgdal::readOGR(dsn = path1, stringsAsFactors = FALSE)
6China_2 <- rmapshaper::ms_simplify(China_1) # 拓扑学知识简化数据
7object.size(China_1); object.size(China_2) # 简化到不足1/10大小
8
9China_3 <- fortify(China_2) 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值