【R语言】gadm全球行政区划数据库

我R语言不熟、也不是学GIS的。仅用于记录。

文章目录

  • 一、gadm 数据库简介
  • 二、R 语言示例
  • 三、sf 包的函数

一、gadm 数据库简介

GADM(全称Database of Global Administrative Areas)是一个高精度的全球行政区划数据库,它包含了全球所有国家和地区的国界、省界、市界、区界等多个级别的行政区划边界数据

GADM的数据可以用于地理、政治、气候和社会科学等领域的研究和商业应用中,尤其是在需要对国家边界进行统计总结或在国家边界内进行栅格和矢量特征数据的统计总结时。

GADM提供的数据非常详细,可以达到ADMIN 2(相当于美国的县级,中国区域也能达到县级)的市政细分区域。它作为一个独立的矢量化形状文件层提供,并且也通过R语言的raster包进行分发。GADM的数据可以免费用于学术和非商业用途,但禁止重新分发或用于商业用途。

GADM的数据可以在全球范围内下载,也可以按国家下载。建议只下载需要的国家,否则比较大,压缩包1G多(而中国大陆地区压缩包只有30M)。

GADM的数据更新预计每三个月发布一次新版本,当前版本是4.1,它划定了400,276个行政区域。在使用GADM数据时,需要遵守其许可协议,对于特定国家的使用可能需要额外的许可或遵守特定的版权声明。

在使用GADM数据时需要注意的是,GADM对中国国界数据的划分并不符合中国的领土主张,因此在正式刊物中发表使用此类数据的图件时需要格外谨慎。他把China、Hong Kong、Taiwan、Macao这些是分开的。(4.1版本按country下载,只有China和Taiwan的),3.6版本官网貌似没法下载,后面我给了一个网站可以下载3.6的,可以根据国家、地区代码下载香港、澳门、台湾省的数据(CHN、HKG、MAC、TWN)。但这还不够,还有钓鱼岛及其附属岛屿、南海诸岛也必须画上,这个数据库是没有这些岛屿的。你写论文什么的,不能用它来画中国的地图。研究某个省、区域是可以的。

🟢官方网站:https://gadm.org/

🟣4.1 版本数据库下载:https://gadm.org/download_world.html

  • download by country是按国家下载。
  • single database是全球的,1.4GB。
    在这里插入图片描述

🔹GADM的数据分级如下:

  • 0级:国界
  • 1级:州界(省、直辖市、自治区这些)
  • 2级:县界(市)
  • 3级:更小的行政单位(县)
  • 4级和5级:更小的行政单位,但并不是所有国家都有这些级别的数据。

数字越大,分辨率越高,文件也越大。

🔹对于每个数据,GADM最多提供了6种不同的格式:

  • Geopackage:可以被GDAL/OGR、ArcGIS、QGIS等软件读取
  • GeoJSON :是一种基于 JSON(JavaScript Object Notation)的格式,用于编码各种地理数据结构。
  • Shapefile:可直接用于ArcGIS等软件(.shp
  • KMZ:可直接在Google Earth中打开
  • R语言 (sp):可直接用于R语言绘图
  • R 语言(sf):可直接用于R语言绘图

虽然有的格式是直接给R用的,但是python、matlab也是可以用的。

但是你搜索某个国家时,可能会发现它提供的格式比较少。
在这里插入图片描述
你可以取这个网站下载更丰富的格式:https://geodata.ucdavis.edu/gadm/

它的数据不是最新的,但是行政区划很多国家变动的频率也不高。

这个网站3.6版本提供的数据类型更多:目录名称即数据格式,里面的数据库是按国家列出来的,并且分了不同层级。国家名称使用的国家或地区识别代码,比如中国是CHN、英国式GBR。

在这里插入图片描述

二、R 语言示例

我下载的是:Shapefile

解压后可以看到:gadm41_CHN_0.shp、gadm41_CHN_1.shp这样的文件,以及其它辅助文件。

🟢安装sf包:

install.packages("sf")

sf 包是 R 语言中的一个非常流行的包,用于处理和分析空间数据。它提供了一个简洁而强大的接口来读取、写入、操作和分析空间数据。sf 包的全称是 “simple features”,它遵循了简单的地理空间数据模型,这个模型在许多现代地理信息系统(GIS)软件中得到了广泛的应用。

使用示例:

library(sf)gc()gadm_data <- st_read('E:/gadm41_CHN_shp/gadm41_CHN_2.shp') 

比如,你可以根据 NAME_1 来选择特定省份。
在这里插入图片描述
Console里面可以看到:

Reading layer `gadm41_CHN_2' from data source `E:\gadm41_CHN_shp\gadm41_CHN_2.shp' using driver `ESRI Shapefile'
Simple feature collection with 368 features and 13 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: 73.5577 ymin: 18.15931 xmax: 134.7739 ymax: 53.56086
Geodetic CRS:  WGS 84

“Geodetic CRS: WGS 84” 指的是地理坐标参考系统(Geodetic Coordinate Reference System)使用了 WGS 84 坐标系。WGS 84 是一种广泛使用的全球参考系统,全称是 World Geodetic System 1984。它由美国国防部开发,目前被全球定位系统(GPS)和其他卫星导航系统所采用。

在GIS和地图制作中,CRS 转换是一个常见的需求,因为不同的地图和数据可能使用不同的坐标系统。例如,一些地图可能使用投影坐标系统(如UTM),而其他地图可能使用地理坐标系统(如WGS 84)。在R语言中,你可以使用sf包的st_transform()函数来转换CRS:

WGS 84的EPSG代码是4326。

# 转为WSG 84坐标系
st_transform(4326)

EPSG代码是一个由国际大地测量学与地球物理学联合会(International Association of Oil & Gas Producers,简称IOGP,之前称为EPSG)维护的一套地理空间参考系统的唯一标识符系统。EPSG代码是一个四位数或五位数的数字,用于唯一标识地理空间参考系统,包括坐标参考系统(CRS)、投影参考系统(PROJ)和垂直参考系统(VERTCS)等。
网站:https://epsg.io/
在这里插入图片描述

EPSG代码系统的主要目的和用途包括:

  1. 唯一标识:为全球各种地理空间参考系统提供一个唯一的数字代码,以便于在不同的地图、数据库和软件系统之间进行数据交换和识别。

  2. 数据交换:在地理信息系统(GIS)、遥感、地图制作、导航和空间数据分析等领域,EPSG代码用于确保数据的准确交换和使用。

  3. 坐标转换:EPSG代码允许用户在不同的地理空间参考系统之间转换坐标,这对于处理不同来源和格式的空间数据尤为重要。

  4. 地图投影:EPSG代码包括了各种地图投影方法的标识,这对于将地球表面的三维坐标转换为二维平面地图至关重要。

  5. 垂直参考:EPSG代码还涵盖了垂直参考系统,用于处理海拔和深度等高程数据。

EPSG代码的例子包括:

  • 4326:WGS 84地理坐标参考系统,广泛用于GPS和互联网地图服务。
  • 3857:Web Mercator投影,常用于在线地图服务,如Google Maps和OpenStreetMap。
  • 27700:英国国家网格(British National Grid),是英国广泛使用的地图投影系统。

在使用GIS软件或编程库时,EPSG代码通常作为参数输入,以指定或转换数据的坐标系统。例如,在R语言的sf包中,你可以使用st_transform()函数来根据EPSG代码转换空间数据的坐标系统。


🟠绘制地图示例:

去另一个网站下载3.6版本的shp文件,下载4个,中国大陆、香港、台湾省、澳门(CHN、HKG、MAC、TWN

(这个数据库没有岛屿的数据,不能用来画中国地图,所以这里画个省份的地图)

安装画图包:

install.packages("ggplot2")

绘制大陆、香港、台湾省、澳门的图:

library(sf)
library(ggplot2)# 垃圾回收
gc()# 加载数据
gadm_CHN <- st_read('E:/China_shp/gadm36_CHN_shp/gadm36_CHN_1.shp') 
gadm_HKG <- st_read('E:/China_shp/gadm36_HKG_shp/gadm36_HKG_1.shp') 
gadm_TWN <- st_read('E:/China_shp/gadm36_TWN_shp/gadm36_TWN_1.shp') 
gadm_MAC <- st_read('E:/China_shp/gadm36_MAC_shp/gadm36_MAC_1.shp') # 使用rbind合并所有对象
gadm_China <- do.call(rbind, list(gadm_CHN, gadm_HKG, gadm_TWN, gadm_MAC))# 使用ggplot2绘制地图
ggplot(data = gadm_China) +geom_sf(fill = "lightblue", color = "black") +theme_minimal()

🗺️绘制个重庆的地图吧:

library(sf)
library(ggplot2)
library(dplyr)# 垃圾回收
gc()cq <- st_read('China_shp/gadm36_CHN_shp/gadm36_CHN_3.shp') cq <- cq %>%filter(NAME_1 == 'Chongqing')ggplot(data = cq) +geom_sf(fill = "lightblue", color = "black") +labs(title = "重庆区县地图") +theme_minimal()# plot(cq['NAME_0'])

在这里插入图片描述


三、sf 包的函数

以下是 sf 包中一些常用函数的列表,这些函数用于处理空间数据:

函数描述
st_read()读取空间数据,如Shapefile
st_write()写入空间数据到文件
st_sf()创建一个简单特征(sf)对象
st_as_sf()将其他格式的空间数据转换为sf对象
st_as_sfc()将外部几何对象转换为简单特征集合(sfc)对象
st_plot()绘制sf对象
st_transform()改变sf对象的坐标参考系统
st_intersects()判断两个几何对象是否相交
st_contains()判断一个几何对象是否包含另一个
st_within()判断一个几何对象是否完全在另一个几何对象内部
st_distance()计算两个几何对象之间的距离
st_buffer()创建一个几何对象周围的缓冲区
st_convex_hull()计算几何对象的凸包
st_centroid()计算几何对象的质心
st_sample()从几何对象中随机抽样点
st_simplify()简化几何对象,减少点的数量
st_combine()合并多个几何对象
st_difference()计算两个几何对象的差集
st_union()计算多个几何对象的并集
st_intersection()计算多个几何对象的交集
st_sym_difference()计算两个几何对象的对称差
st_touches()判断两个几何对象是否相触
st_crosses()判断两个几何对象是否相交
st_overlaps()判断两个几何对象是否重叠
st_covered_by()判断一个几何对象是否被另一个覆盖
st_covers()判断一个几何对象是否覆盖另一个
st_contains_properly()判断一个几何对象是否完全包含另一个
st_is_within_distance()判断一个几何对象是否在另一个几何对象的指定距离内

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451167.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cs木马图形化界面出现问题处理

一个月多月没用cs木马了&#xff0c;发现打开客户端之后显示不出图形化界面&#xff0c;且出现下面这样的报错。 、 最后发现是java版本的问题&#xff0c;kali的java自动更新了。把原来的openjdk11改到了openjdk23。 解决方法&#xff1a; 输入&#xff1a; sudo update-…

vue的动态组件 keep-alive

1. 什么是动态组件 动态组件指的是 动态切换组件的显示与隐藏 2. 如何实现动态组件渲染 vue提供了一个内置的<component>组件&#xff0c;专门用来实现动态组件的渲染。 作用&#xff1a;组件的占位符is的值表示要渲染的组件 示例代码如下&#xff1a; Left.vue的代…

2024版AI大模型转行入门全攻略,零基础入门到精通,收藏这一篇就够了

引言 随着人工智能和大模型&#xff08;如GPT-4、BERT等&#xff09;技术的快速发展&#xff0c;越来越多的专业人士希望转行进入这一领域。大模型开发涉及复杂的技术体系和多样的应用场景&#xff0c;对从业者的知识和能力提出了较高要求。本文将详细解析转行大模型开发所需的…

1.C++经典实例-计算两个数的最大公约数

用户输入两个数字&#xff0c;然后通过程序计算出这两个数字的最大公约数&#xff1a; 最大公约数&#xff08;greatest common divisor&#xff0c;简写为 gcd &#xff1b;或highest common factor&#xff0c;简写为hcf)&#xff0c;指某几个整数共有因子中最大的一个 #in…

RHCE——例行性工作

准备工作 [rootlocalhost ~]# cat /etc/yum.repos.d/aliyun.repo [ali-app] nameali-app baseurlhttps://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/ gpgcheck0[ali-base] nameali-base baseurlhttps://mirrors.aliyun.com/centos-stream/9-stream/Base…

探索YOLO v11:3D人工智能的RGB-D视觉革命

哈喽&#xff0c;各位OAK中国的朋友们! 大家好我是张伯生 今天&#xff0c;我想给大家演示一下最新发布的Yolo V11神经网络 下面我将演示的一个程序是&#xff1a;同时在我们的OAK相机上跑Yolo V11和RGB-D&#xff0c;也就是彩色相机和深度图的一个叠加的一个效果 RGB-D和Yo…

C++标准模板库--vector

vector 介绍 vector&#xff08;向量&#xff09;是一种序列容器&#xff0c;表示为可以改变大小的数组。vector中的元素使用连续的存储位置&#xff0c;这意味着也可以使用指向其元素的常规指针偏移量来访问任意元素&#xff0c;且与数组一样高效。但与数组不同的是&#xff…

网络空间安全之一个WH的超前沿全栈技术深入学习之路(一:渗透测试行业术语扫盲)作者——LJS

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advanc…

线性系统性能分析方法3——频率特性分析法(频域分析法)

一种图解的分析方法&#xff0c;不必直接求解系统输出的时域表达式&#xff0c;不需要求解系统的闭环特征根&#xff0c;具有较多的优点。如&#xff1a; ①根据系统的开环频率特性揭示闭环系统的动态性能和稳态性能&#xff0c;得到定性和定量的结论&#xff0c;可以简单迅速…

OpenCV高级图形用户界面(12)用于更改指定窗口的大小函数resizeWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::resizeWindow() 函数用于更改指定窗口的大小。这使得你可以根据需要调整窗口的宽度和高度。 注释 指定的窗口大小是指图像区域的大小。工具栏…

基于Java语言的培训平台+学习平台+在线学习培训系统+教育平台+教育学习系统+课程学习平台

简述 企业培训平台企业考试系统培训平台考试系统企业大学企业视频网站视频学习平台 介绍 企业培训平台支持企业培训考试全流程&#xff0c;在线学习、在线考试&#xff0c;成熟的企业培训考试解决方案&#xff0c;充分满足企业培训需求。 独立部署&#xff0c;仅内部员工登录…

Java 异步编程——常用线程池 ThreadPoolExecutor

文章目录 ThreadPoolExecutor核心参数详解线程池的处理流程线程池中使用的阻塞队列4 种任务拒绝策略4 种不同的线程池线程池的五种状态 Future 接口 ThreadPoolExecutor java.uitl.concurrent.ThreadPoolExecutor 类是线程池中最核心的一个类。 线程池底层示例图&#xff1a;…

代码随想录算法训练营第十六天|513. 找树左下角的值 112. 路径总和 106. 从中序与后序遍历序列构造二叉树

513. 找树左下角的值 题目 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 题目解析---迭代法 层序遍历&#xff0c;然后只需要记录最后一行第一个节点的数值就可…

xtu oj 原根

文章目录 回顾杂思路c 语言代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询&#xff0c;降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数&#xff08;大数据&#xff09; 杂 有一些题可能是往年的程设的题&#xff0c;现在搬到…

001 Hadoop安装、Spring整合测试

Hadoop安装、整合测试 文章目录 Hadoop安装、整合测试1.简介1.优点2.组成 2.安装1.安装jdk&#xff08;如已安装可跳过&#xff09;2.安装hadoop1.安装2. 修改配置文件core-site.xml3. 修改配置文件hdfs-site.xml4.启动hadoop5.启动yarn6.执行jps查看7.相关端口及配置位置8.访问…

Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN;阿里云PG发布内置分析引擎

重要更新 1. Azure发布PostgreSQL向量索引扩展DiskANN&#xff0c;声称在构建HNSW/IVFFlat索引上&#xff0c;速度、精准度都超越pg_vector&#xff0c;并解决了pg_vector长期存在的偶发性返回错误结果的问题( [1] )。 2. 阿里云RDS PostgreSQL 发布AP加速引擎&#xff08;rds…

修改MYSQL库的默认字符集和校验规则

修改mysql的默认配置文件my.cnf。 vim /etc/my.cnf 如果没有这个文件就可能在这个路径&#xff1a;/etc/mysql/my.cnf 在 [mysqld] 部分下&#xff0c;添加或修改以下设置&#xff1a; character-set-server [要修改的字符集] collation-server [要修改的校验规则] 保存文…

Git客户端使用之命令行

一、git客户端命令行的使用 1、创建本地用户并绑定ssh-key到gitlab #在本地注册用户,这个用户随便创建它就是与git仓库连接的一个用户&#xff0c;不过最好喝git仓库用户一样有利于区分。 git config --global user.name "wenqiang1" git config --global user.ema…

SpringBoot+Vue+Uniapp智能社区服务小程序系统(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

web 0基础第一节 文本标签

学习web语言 首先推荐安装一个vs code 的软件 这个普及度更广一点 兼容性好 网上有很多下载的教程 这里就直接从 html5 的内容开始说了. 这是一个html文件的基本结构 在vs code 中使用英文的 ! 可快捷设置这样的结构 <!-- --> 是在html写注释的结构 以后的…