当前位置: 首页 > 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排名稳步攀升…...

Linux 手撕线程池

前言 线程池 是 池化技术 中很典型的一个&#xff0c;它旨在高效的管理和复用线程资源&#xff01;在现在的计算机体系中&#xff0c;线程是执行任务&#xff08;调度&#xff09;的基本单位。然而&#xff0c;频繁的创建和销毁线程也会带来较大的开销&#xff0c;包括系统资源…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十五集:制作更多地图,更多敌人,更多可交互对象

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、第一个代表性场景 1.制作更多敌人2.制作更多可交互对象二、第二个代表性场景 1.制作更多敌人2.制作更多可交互对象三、第三个代表性场景 1.制作更多敌人2.制…...

在Openshift上安装MetalLB

1.部署MetalLB Operator 2.部署AddressPool addresses 必须和ocp节点在同一网段 apiVersion: metallb.io/v1beta1 kind: AddressPool metadata:name: metallb-ipaddressnamespace: metallb-system spec:addresses:- 192.168.1.51-192.168.1.60- 192.168.1.61-192.168.1.70aut…...

mysql其他对象

一、存储引擎 mysql的存储引擎包括&#xff1a; InnoDB&#xff0c;MyISAM&#xff0c;Memory&#xff08;Heap&#xff09;&#xff0c;Archive&#xff0c;CSV&#xff0c;NDB Cluster 常用的只有前两个。 InnoDB与MyISAM的区别&#xff1a; InnoDB 简介&#xff1a;Inn…...

英语单词之社会生活之聚会

一些关于聚会的单词和短语 句子 English中文What’s the plan?计划是什么&#xff1f;I’m going out with some friends.我要跟几个朋友一起出去。I don’t really feel like going out.我不是很想出去。What time suits you ?你什么时间合适&#xff1f;Where shall we m…...

Qt - 地图相关 —— 1、加载百度在线地图(附源码)

效果图 开始加载地图 1、百度地图开发者网站中注册,获取密钥 2、进入开发文档中 将下图内容保存到本地文件中,文件名为"index.html"文件即可。接着将内容中的“您的密钥”改为刚刚创建应用出来的AK密钥即可。 然后双击打开若在浏览器中正常看到下图右侧地图则说明没…...

Elasticsearch 简单使用

Elasticsearch 安装和基本操作 一、引言 Elasticsearch 是一个基于 Lucene 构建的开源分布式搜索引擎&#xff0c;提供了实时的搜索和数据分析能力。它广泛应用于日志分析、全文搜索、数据可视化等场景。本文将详细介绍 Elasticsearch 的安装步骤及基本操作&#xff0c;包括索…...

基于SpringBoot+Vue+uniapp微信小程序的垃圾分类系统的详细设计和实现(源码+lw+部署文档+讲解等)

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

基于深度学习的车辆车型检测识别系统(YOLOV5)

界面图&#xff1a; 项目简介&#xff1a; 网络&#xff1a;深度学习网络 yoloV5 软件&#xff1a;PycharmAnaconda 环境&#xff1a;python3.8 opencv PyQt5 torch1.9 文件&#xff1a;训练集8000张图片 测试集1000张图片 系统包含所有文件夹 环境文件 UI文件 功能&a…...

Java开发中知识点整理

正则表达式 测试网址 Git 分支和主分支有冲突 先checkout origin/分支把origin/master pull进本地分支 修改冲突MergeCommit and Push...