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

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

一、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()判断一个几何对象是否在另一个几何对象的指定距离内
全球行政区划shapefile数据,包含全球行政区划数据。NAME GMI_CNTRY REGION Afghanistan AFG Asia Albania ALB Europe Algeria DZA NorthAfrica Andorra AND Europe Angola AGO Sub Saharan Africa Antarctica ATA Antarctica Antigua and Barbuda ATG Caribbean Argentina ARG Latin America Armenia ARM Asia Australia AUS Australia Austria AUT Europe Azerbaijan AZE Asia Bahamas, The BHS Caribbean Bahrain BHR Asia Bangladesh BGD Asia Barbados BRB Caribbean Belgium BEL Europe Belize BLZ Latin America Benin BEN Sub Saharan Africa Bermuda BMU North America Bhutan BTN Asia Bolivia BOL Latin America Bosnia and Herzegovina BIH Europe Botswana BWA Sub Saharan Africa Brazil BRA Latin America Brunei BRN Asia Bulgaria BGR Europe Burkina Faso BFA Sub Saharan Africa Burundi BDI Sub Saharan Africa Byelarus BLR Europe Cambodia KHM Asia Cameroon CMR Sub Saharan Africa Canada CAN North America Cape Verde CPV Sub Saharan Africa Central African Republic CAF Sub Saharan Africa Chad TCD Sub Saharan Africa Chile CHL Latin America China CHN Asia Colombia COL Latin America Comoros COM Sub Saharan Africa Congo COG Sub Saharan Africa Costa Rica CRI Latin America Croatia HRV Europe Cuba CUB Caribbean Cyprus CYP Asia Czech Republic CZE Europe Denmark DNK Europe Djibouti DJI Sub Saharan Africa Dominica DMA Caribbean Dominican Republic DOM Caribbean Ecuador ECU Latin America Egypt EGY NorthAfrica El Salvador SLV Latin America Equatorial Guinea GNQ Sub Saharan Africa Eritrea ERI Sub Saharan Africa Estonia EST Europe Ethiopia ETH Sub Saharan Africa Falkland Islands (Islas Malvinas) FLK Latin America Faroe Islands FRO Europe Fiji FJI Asia Finland FIN Europe France FRA Europe French Guiana GUF Latin America French Polynesia PYF Pacific Gabon GAB Sub Saharan Africa Gambia, The GMB Sub Saharan Africa Gaza Strip ISR Asia Georgia GEO Asia Germany DEU Europe Ghana GHA Sub Saharan Africa Greece GRC Europe Greenland GRL North America Grenada GRD Caribbean Guadeloupe GLP Caribbean Guatemala GTM Latin America Guinea GIN Sub Saharan Africa Guinea-Bissau GNB Sub Saharan Africa Guyana GUY Latin America Haiti HTI Caribbean Honduras HND Latin America Hungary HUN Europe Iceland ISL Europe India IND Asia Indonesia IDN Asia Iran IRN Asia Iraq IRQ Asia Iraq-Saudi Arabia Neutral Zone Asia Ireland IRL Europe Isle of Man XIM Europe Israel ISR Asia Italy ITA Europe Ivory Coast CIV Sub Saharan Africa Jamaica JAM Caribbean Jan Mayen SJM Europe Japan JPN Asia Jordan JOR Asia Kazakhstan KAZ Asia Kenya KEN Sub Saharan Africa Kerguelen Antarctica Kiribati KIR Asia Korea, Peoples Republic of PRK Asia Korea, Republic of KOR Asia Kuwait KWT Asia Kyrgyzstan KGZ Asia Laos LAO Asia Latvia LVA Europe Lebanon LBN Asia Lesotho LSO Sub Saharan Africa Liberia LBR Sub Saharan Africa Libya LBY NorthAfrica Liechtenstein LIE Europe Lithuania LTU Europe Luxembourg LUX Europe Macedonia MKD Europe Madagascar MDG Sub Saharan Africa Malawi MWI Sub Saharan Africa Malaysia MYS Asia Maldives MDV Pacific Mali MLI Sub Saharan Africa Malta MLT Pacific Martinique MTQ Caribbean Mauritania MRT Sub Saharan Africa Mauritius MUS Sub Saharan Africa Mexico MEX Latin America Moldova MDA Europe Monaco MCO Europe Mongolia MNG Asia Morocco MAR NorthAfrica Mozambique MOZ Sub Saharan Africa Myanmar (Burma) MMR Asia Namibia NAM Sub Saharan Africa Nepal NPL Asia Netherlands NLD Europe New Caledonia NCL Asia New Zealand NZL Australia Nicaragua NIC Latin America Niger NER Sub Saharan Africa Nigeria NGA Sub Saharan Africa Northern Mariana Islands MNP Pacific Norway NOR Europe Oman OMN Asia Pakistan PAK Asia Panama PAN Latin America Papua New Guinea PNG Asia Paraguay PRY Latin America Peru PER Latin America Philippines PHL Asia Poland POL Europe Portugal PRT Europe Puerto Rico PRI Caribbean Qatar QAT Asia Reunion REU Sub Saharan Africa Romania ROM Europe Russia RUS Europe Rwanda RWA Sub Saharan Africa San Marino SMR Europe Sao Tome and Principe STP Sub Saharan Africa Saudi Arabia SAU Asia Senegal SEN Sub Saharan Africa Seychelles SYC Sub Saharan Africa Sierra Leone SLE Sub Saharan Africa Singapore SGP Pacific Slovakia SVK Europe Slovenia SVN Europe Solomon Islands SLB Asia Somalia SOM Sub Saharan Africa South Africa ZAF Sub Saharan Africa Spain ESP Europe Sri Lanka LKA Asia St. Christopher-Nevis Caribbean St. Lucia LCA Caribbean St. Vincent and the Grenadines VCT Caribbean Sudan SDN Sub Saharan Africa Suriname SUR Latin America Svalbard SJM Europe Swaziland SWZ Sub Saharan Africa Sweden SWE Europe Switzerland CHE Europe Syria SYR Asia Tajikistan TJK Asia Tanzania, United Republic of TZA Sub Saharan Africa Thailand THA Asia Togo TGO Sub Saharan Africa Tonga TON Pacific Trinidad and Tobago TTO Caribbean Tunisia TUN NorthAfrica Turkey TUR Asia Turkmenistan TKM Asia Turks and Caicos Islands TCA Caribbean Uganda UGA Sub Saharan Africa Ukraine UKR Europe United Arab Emirates ARE Asia United Kingdom GBR Europe United States USA North America Uruguay URY Latin America Uzbekistan UZB Asia Vanuatu VUT Asia Venezuela VEN Latin America Vietnam VNM Asia Western Sahara ESH NorthAfrica Western Samoa WSM Pacific Yemen YEM Asia Yugoslavia YUG Europe Zaire ZAR Sub Saharan Africa Zambia ZMB Sub Saharan Africa Zimbabwe ZWE Sub Saharan Africa
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

感谢地心引力

有用的话请我喝杯咖啡吧????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值