当前位置: 首页 > news >正文

【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()判断一个几何对象是否在另一个几何对象的指定距离内

相关文章:

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

我R语言不熟、也不是学GIS的。仅用于记录。 文章目录 一、gadm 数据库简介二、R 语言示例三、sf 包的函数 一、gadm 数据库简介 GADM&#xff08;全称Database of Global Administrative Areas&#xff09;是一个高精度的全球行政区划数据库&#xff0c;它包含了全球所有国家和…...

3万字66道Java基础面试题总结(2024版本)

本文合计三万字&#xff0c;整合了66道当前Java面试中比较热门的面试题&#xff0c;希望对大家有所帮助。 文章目录 一、Java概念1. JDK和JRE和JVM的区别2. Java语言有哪些特点3. 什么是字节码&#xff1f;采用字节码的最大好处是什么&#xff1f;4. Oracle JDK 和 OpenJDK 的对…...

go 环境安装

最近搭建AIGC大模型聚合平台&#xff0c;涉及到了go语言&#xff0c;随手整理一下环境安装步骤分享给大家。 1、安装 官网下载地址&#xff1a;https://go.dev/ 1.1 Linux 安装 yum install git -y yum install golang -y yum install gcc -y # 日志工具&#xff0c;如需要…...

stereo-seq 细胞、捕获到的分子及其特征的统计描述

Cell Count、Mean/Median Cell Area、Mean/Median DNB Count、Mean/Median Gene Type、Mean/Median MID 这些术语与空间转录组学和单细胞测序等技术中的细胞和基因表达数据分析有关。每个指标都是对细胞、捕获到的分子及其特征的统计描述。以下是每个术语的详细解释: 1. Cell…...

ceph rook-ceph 部署 cephobjectstore 失败

版本信息 helm list WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/zld/kubeconfigs/gir.yaml WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/zld/kubeconfigs/gir.yaml …...

1791. 找出星型图的中心节点

有一个无向的 星型 图&#xff0c;由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点&#xff0c;并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。 给你一个二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你…...

微调小型Llama 3.2(十亿参数)模型取代GPT-4o

微调Llama VS GPT-4o 别忘了关注作者&#xff0c;关注后您会变得更聪明&#xff0c;不关注就只能靠颜值了 ^_^。 一位年轻的儿科医生与一位经验丰富的医师&#xff0c;谁更能有效治疗婴儿的咳嗽&#xff1f; 两者都具备治疗咳嗽的能力&#xff0c;但儿科医生由于专攻儿童医学…...

【JavaEE】【IO】文件操作

目录 一、文件1.1 文件的概念1.2 文件的操作1.3 路径1.4 文件分类 二、Java中的文件元信息、路径操作2.1 属性2.2 构造方法2.3 方法2.3.1 文件路径2.3.2 文件判断2.3.3 文件创建删除2.3.4 其他操作 三、文件读写操作3.1 流&#xff08;Stream&#xff09;3.1.1 字节流3.1.1.1 I…...

commonjs和esmodule的导入导出细节

CommonJS和ES Module是JavaScript中两种不同的模块系统&#xff0c;它们在导入导出细节上存在差异&#xff0c;以下是两者的具体对比以及方便区分记忆的方法&#xff1a; 1. 导入导出细节 CommonJS 导出&#xff1a;使用module.exports或exports对象来导出模块中的变量、函数…...

【热门】用ChatGPT做智慧农业云平台——农业ERP管控系统

随着科技的进步,原有农业种植方式已经不能满足社会发展的需要,必须对传统的农业进行技术更新和改造。经过多年的实践,人们总结出一种新的种植方法——温室农业,即“用人工设施控制环境因素,使作物获得最适宜的生长条件,从而延长生产季节,获得最佳的产出”。这种农业生产方式…...

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 前言 阅读该篇之前&#xff0c;建议先阅读下面的系列文章&#xff1a; Android深入理解包管理–PackageManagerService和它的“小伙伴…...

阵列式位移计与传统测斜仪相比的优势

在岩土工程监测领域&#xff0c;位移测量是确保工程质量和安全的重要环节。传统的测斜仪&#xff0c;如活水平固定测斜仪和固定式测斜仪&#xff0c;尽管在一定程度上满足了工程监测的需求&#xff0c;但某些方面限制了其应用范围。随着阵列式位移计这种新型的传感器的出现&…...

第7章 网络请求和状态管理

一、Axios 1 Axios概述 Axios是一个基于Promise的HTTP库&#xff0c;可以发送get、post等请求&#xff0c;它作用于浏览器和Node.js中。当运行在浏览器时&#xff0c;使用XMLHttpRequest接口发送请求&#xff1b;当运行在Node.js时&#xff0c;使用HTTP对象发送请求。 Axios的…...

苍穹外卖学习笔记(二十七)

客户催单 OrderController /*** 催单*/GetMapping("/reminder/{id}")ApiOperation("催单")public Result reminder(PathVariable("id") Long id) {orderService.reminder(id);return Result.success();}OrderServer /*** 催单*/void reminder(L…...

使用exe4j打包jar包生成exe文件,GUI应用详细使用教程

使用exe4j打包jar包生成exe文件,GUI应用详细使用教程 exe4j应用教程使用方式搞副业 exe4j应用教程 《exe4j 下载地址》 exe4j是一个功能强大的多平台 Java 安装程序生成器&#xff0c;它可以为 Java 应用程序生成本机安装程序和应用程序启动器。exe4j 的优点在于它的易用性、广…...

go jwt 用户登录和返回用户信息 token ----important!!!

1.每一行代码都有详细注释&#xff0c;解释了其功能和作用。这些注释可以帮助你理解代码如何工作&#xff0c;特别是在处理用户登录、生成 JWT、验证 JWT 和返回用户信息的过程中。 package main // 指定这个文件是一个可执行程序import ("fmt" …...

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

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

babylonjs shader学习之copy shadertoy案例

shadertoy案例&#xff1a; 准备 const onSceneReady (scene: Scene) > {const light new HemisphericLight(light, new Vector3(0, 1, 0), scene);light.intensity 0.7;Effect.ShadersStore[planeMatVertexShader] precision highp float;attribute vec3 position;attr…...

Leetcode 1137. 第 N 个泰波那契数

原题链接&#xff1a;Leetcode 1137. 第 N 个泰波那契数 代码1&#xff1a; class Solution { public:int a[40];int tribonacci(int n) {a[0]0;a[1]1;a[2]1;if(n<1) return n;if(a[n]) return a[n];a[n]tribonacci(n-1)tribonacci(n-2)tribonacci(n-3);return a[n];} };代…...

Rust 语言持续崛起,即将冲击 TIOBE 指数前十,能否成为编程语言新王者?

Rust 语言持续崛起&#xff0c;即将冲击 TIOBE 指数前十&#xff0c;能否成为编程语言新王者&#xff1f; 2024 年 10 月&#xff0c;全球编程语言 TIOBE 排行榜再次更新&#xff0c;各大编程语言在各自领域中继续发挥着独特的优势。官方的标题是&#xff1a; Rust排名稳步攀升…...

从测速到配置:一套完整的cFosSpeed网络加速保姆级教程(适用于小白)

从零开始掌握cFosSpeed&#xff1a;网络加速全流程实战指南对于经常进行在线游戏、视频会议或大文件传输的用户来说&#xff0c;网络延迟和带宽利用率低下往往是影响体验的关键痛点。cFosSpeed作为一款专业的网络流量优化工具&#xff0c;能够显著改善这些问题&#xff0c;但许…...

物理引导的机器学习工作流:气候建模的融合创新与实践

1. 项目概述&#xff1a;当气候建模遇见机器学习如果你像我一样&#xff0c;在气候模拟这个领域摸爬滚打超过十年&#xff0c;就会深刻体会到一种“甜蜜的负担”&#xff1a;我们构建的地球系统模型&#xff08;ESM&#xff09;越来越精细&#xff0c;物理过程越来越复杂&#…...

作业本耐用度差距巨大?深圳大明印刷厂拆解合规工艺,告别定制作业本掉页开裂通病

在校园日常教学中&#xff0c;很多学校都会遇到同一个难题&#xff1a;同一学期采购的作业本、定制作业本&#xff0c;品质差距悬殊&#xff0c;有的完好无损用到期末&#xff0c;有的短短几周就出现书脊开裂、页面脱落、边角破损、翻页卡顿等问题。不少人误以为是学生使用习惯…...

用Python和MNE库玩转BCI Competition IV 2a脑电数据集:从数据加载到可视化全流程

用Python和MNE库玩转BCI Competition IV 2a脑电数据集&#xff1a;从数据加载到可视化全流程当你第一次接触脑电信号处理时&#xff0c;面对原始数据文件可能会感到无从下手。BCI Competition IV 2a数据集作为脑机接口领域的经典基准数据&#xff0c;包含了9名受试者四种运动想…...

Unity主题系统设计:状态驱动的主题抽象与自动注入方案

1. 这不是换个颜色那么简单&#xff1a;为什么Unity项目里“换肤”总在发布前夜崩盘&#xff1f;你有没有经历过这样的场景&#xff1a;美术同学凌晨两点发来一套新主题资源包&#xff0c;UI设计师说“这次配色更符合品牌调性”&#xff0c;产品说“上线前必须支持深色模式”&a…...

航空航天为什么离不开高强镁合金?国产替代到哪一步了

飞机每减重一千克&#xff0c;全年大约节省四千两百美元的燃油费用——这是航空工程师熟悉的经验值。在商业航空领域&#xff0c;这个数字还只是财务账&#xff1b;在战斗机、导弹和卫星的世界里&#xff0c;减重的收益被换算成更远的航程、更大的载荷、更高的机动性&#xff0…...

PCB虚焊/走线断裂/焊盘脱落工程师易漏判

PCB 故障中&#xff0c;30% 并非元件损坏&#xff0c;而是 PCB 本身的隐性故障—— 虚焊、走线断裂、焊盘脱落、过孔开路。这类故障外观隐蔽、时好时坏、排查难度大&#xff0c;很多工程师反复更换元件仍无法解决&#xff0c;最终误判为 “板报废”。​一、PCB 隐性故障核心成因…...

打不开JupyterLab

因为安装某些依赖导致JupyterLab的依赖被动升级或降级&#xff0c;从而影响了JupyterLab的运行&#xff0c;此时可以SSH登录到实例&#xff0c;然后输入jupyter-lab命令进行确认&#xff0c;如果执行命令报错则说明是此问题&#xff0c;那么可以通过pip install jupyterlab再次…...

航空发动机叶片三维扫描-诺斯顿

航空发动机叶片作为发动机的核心动力部件&#xff0c;其精度与性能直接决定发动机的推力、燃油效率及运行安全性&#xff0c;三维扫描技术作为航空制造领域的核心数字化手段&#xff0c;已广泛应用于叶片全生命周期的多个关键环节。其应用涵盖叶片研发设计阶段的逆向工程&#…...

基于Cynthion逆向USB协议,为DP100电源开发Linux控制软件

1. 项目概述&#xff1a;用Cynthion嗅探USB&#xff0c;为DP100电源打造Linux软件作为一名长期在Linux环境下折腾硬件和嵌入式开发的爱好者&#xff0c;我经常遇到一个头疼的问题&#xff1a;很多不错的桌面小设备&#xff0c;比如电源、示波器、逻辑分析仪&#xff0c;它们的官…...