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

news2024/11/29 22:32:57

我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.coloradmin.cn/o/2218476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字图像处理:图像去噪

图像去噪–总变差去噪&#xff08;TV&#xff09; 引用资料&#xff1a; 1.全变分图像去噪算法&#xff08;TV&#xff09; 2.TV去噪的理解 总变差去噪 (Total Variation Denoising) 是一种经典的图像去噪方法&#xff0c;能够有效减少噪声&#xff0c;同时保留图像的边缘细节…

单例模式(自动加载)

目录 介绍 使用 在脚本中写一个函数 让一个「自定义场景」作为单例「自动加载」 介绍 单例模式是编程中的一种设计思想&#xff0c;是为了解决某些编程语言中没有全局变量概念而产生的这对于实现某种模块非常好用 比如玩家信息&#xff0c;有时候&#xff0c;游戏中的很多…

以太网交换安全:MAC地址漂移与检测(实验:二层环路+网络攻击)

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指网络中设备的MAC地址在运行过程中发生变化的现象。 MAC地址是用于唯一标识网络中的设备。 MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址&#xff0c;后学习到的MAC地址表项覆盖原MAC地址表项的现象。…

Jsoup在Java中:解析京东网站数据

对于电商网站如京东来说&#xff0c;其页面上的数据包含了丰富的商业洞察。对于开发者而言&#xff0c;能够从这些网站中提取有价值的信息&#xff0c;进行分析和应用&#xff0c;无疑是一项重要的技能。本文将介绍如何使用Java中的Jsoup库来解析京东网站的数据。 Jsoup简介 …

Windows】【DevOps】Windows Server 2022 采用WinSW 启动一个会创建新的控制台程序窗口的程序行为分析

WinSW使用参考 【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动&#xff08;方便&#xff09;-CSDN博客 源码 调整ConsoleApp1程序源代码如下&#xff1a; using System; using System.Diagnostics; using System.IO; using System.R…

十、客户端与服务端进行通信

一、服务端 1、建立协议脚本 此处必须序列化才能转为二进制发送出去 IP为本地连接&#xff1b;端口随意&#xff1b;不要选择规定的端口 2、建立服务端连接脚本 这个的方法都是重写的dll文件中的代码 在Start代码中进行调用 二、客户端 1、与客户端连接代码 2、开始代码 三…

腰背肌筋膜炎有哪些治疗方法

腰背肌筋膜炎主要表现为腰背部的疼痛、酸胀、僵硬、活动受限等症状。在疾病初期&#xff0c;症状可能相对较轻&#xff0c;通过休息、保暖、适当的物理治疗等&#xff0c;往往可以缓解症状&#xff0c;此时病情不算严重。如果患者不重视&#xff0c;继续保持不良的生活习惯&…

Nexpose 6.6.273 发布,新增功能概览

Nexpose 6.6.273 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, released Oct 10, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/nexpose-6/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 您的本地…

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

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

数据中台业务架构图

数据中台的业务架构是企业实现数据驱动决策和业务创新的关键支撑。它主要由数据源层、数据存储与处理层、数据服务层以及数据应用层组成。 数据源层涵盖了企业内部各个业务系统的数据&#xff0c;如 ERP、CRM 等&#xff0c;以及外部数据来源&#xff0c;如社交媒体、行业数据…

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

一、单选题 1、下列选项中关于 turtle.color(red) 语句的作用描述正确的是&#xff1f;&#xff08; &#xff09; A. 只设置画笔的颜色为红色 B. 只设置填充的颜色为红色 C. 设置画笔和填充的颜色为红色 D. 设置画笔的颜色为红色&#xff0c;设置画布背景的颜色为红色 正…

基于langchain.js快速搭建AI-Agent

基于langchain.js快速搭建AI-Agent 什么是AIAgent? 1. 替换默认请求地址为自定义API 构建基础会话大模型 import { ChatOpenAI } from langchain/openai;const chat new ChatOpenAI({model: gpt4o,temperature: 0,apiKey: ****,configuration: {baseURL: https://www.xx.co…

[含文档+PPT+源码等]精品大数据项目-基于python实现的社交媒体用户活跃时间预测系统

大数据项目——基于Python实现的社交媒体用户活跃时间预测系统的背景可以从以下几个方面进行详细阐述&#xff1a; 一、项目背景与意义 随着互联网技术的快速发展和社交媒体的普及&#xff0c;社交媒体平台已经成为人们日常生活中不可或缺的一部分。每天都有数以亿计的用户在…

Golang笔记_day08

Go面试题&#xff08;一&#xff09; 1、空切片 和 nil 切片 区别 空切片&#xff1a; 空切片是指长度和容量都为0的切片。它不包含任何元素&#xff0c;但仍然具有切片的容量属性。在Go语言中&#xff0c;可以使用内置的make函数创建一个空切片&#xff0c;例如&#xff1a;…

[Godot4] 水底气泡的 gdshader

水底气泡的 gdshader 来自 shadertoy 的代码 在这里&#xff0c;我添加了 x 方向和 y 方向上的 uv 位移 但是还是感觉太弱智 shader_type canvas_item; // Created by greenbird10 // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0uniform float bub…

C语言笔记(指针的进阶)

目录 1.字符指针 2.指针数组 3.数组指针 3.1.创建数组指针 3.2.&数组名和数组名 1.字符指针 int main() { char ch w;char* pc &ch;const char *p "abcdef";//常量字符串 产生的值就是首元素的地址//常量字符串不能被修改 因此需要加上一个…

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;如需要…

Web保存状态的手段(请求转发,Cookie的使用)

一&#xff0c;掌握请求转发 请求转发与重定向技术都是跳转页面的途径&#xff0c;但是这两个技术之间也有不同之处。 请求转发更倾向于servlet跳转jsp&#xff0c;而重定向更倾向于servlet跳转到servlet。 1. 常用页面跳转方法2:请求转发(重写URL) RequestDispatcher接口对…

基于SpringBoot+Vue+uniapp微信小程序的教学质量评价系统的详细设计和实现

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

细胞力学需测量,多种方法齐上场,优劣互补要明了

大家好&#xff01;今天我们来了解细胞力学方法的比较研究——《A comparison of methods to assess cell mechanical properties》发表于《Nature Methods》。细胞力学对细胞的多种功能至关重要&#xff0c;然而不同测量方法得到的结果差异较大。本次研究选取了MCF-7细胞&…