中國行政區劃數據下載

中國行政區劃數據下載

地球物理相關資源

文章目錄

GADM 數據庫

GADM,是一個全球行政區劃數據庫。包括了幾乎全部國家和地區的行政區劃界線數據。

主頁: http://www.gadm.org/

下載數據

下載地址: http://www.gadm.org/country

GADM 提供的數據格式有 6 種:ESRI file geodatabase、Shapefile、Geopackage(SpatiaLite)、R(SpatialPolygonsDataFrame)、Google Earth .kmz 和 ESRI personal geodatabase。這里,數據格式應選擇 shapefile。

在 GADM 中,country 的定義為 “any entity with an ISO country code”。關于 ISO country code,可以參考 維基百科。因而 想要下載完整的中國數據,實際上需要四個文件:China、Hong Kong、Macao、Taiwan。

也可以在 http://www.gadm.org/version2 下載全球的行政區劃數據,但非常不推薦。一方面是數據量偏大,另一方面是全球區劃數據保存到一個文件中,難以整理。不如麻煩一點,需要哪個國家下哪個 國家。

解壓數據

以 china 數據為例
unzip CHN_adm_shp.zip -d CHN_adm

解壓后得到一堆文件,其中 CHN_adm0.shp、CHN_adm1.shpCHN_adm2.shpCHN_adm3.shp 為實際需要的 shapefile 數據。0、1、2、3 為第零、一、二、三級行政區劃界線。對于 china 數據,基本相當于中國大陸地區的邊界、省界、市界和區縣界。如果是 Hong Kong 的數據,0 依然是邊界,但是 1 理解為省界顯然不合適,總之就是更低一級的行政區劃界線。

格式轉換

GMT 不能識別 shapefile 格式。需要使用 gdal 的 ogr2ogr 命令將 shapefile 格式轉換為 GMT 可識別的格式。如果系統里找不到 ogr2ogr 命令,則說明 gdal 沒有安裝。Ubuntu 下的包 名是 gdal-bin ,CentOS 下的是 gdal。Windows 用戶則需要到 gdal 官網下載安裝。 另外,Windows 用戶也可以用 ArcGIS 等軟件實現格式的轉換。

具體的轉換命令是從網上找到的,CHN_adm0 為要生成的數據的文件名前綴,但是為什么要出現兩次,表示很不解。

ogr2ogr -f GMT -nln CHN_adm0 CHN_adm0 CHN_adm0.shp
ogr2ogr -f GMT -nln CHN_adm1 CHN_adm1 CHN_adm1.shp
ogr2ogr -f GMT -nln CHN_adm2 CHN_adm2 CHN_adm2.shp
ogr2ogr -f GMT -nln CHN_adm3 CHN_adm3 CHN_adm3.shp

對于 Hong Kong、Macao、Taiwan 的數據做類似操作,最終生成了一堆以 gmt 結尾的文件。共計 12 個,如下:

CHN_adm0.gmt CHN_adm2.gmt HKG_adm0.gmt MAC_adm0.gmt MAC_adm2.gmt TWN_adm1.gmt
CHN_adm1.gmt CHN_adm3.gmt HKG_adm1.gmt MAC_adm1.gmt TWN_adm0.gmt TWN_adm2.gmt

繪圖測試

PS1:數據為多段數據,在 GMT4 中需要使用 -m 選項,而 GMT5 已經可以自動處理多段數據,所以不需要使用 -m 選項。

PS2:數據中有領土糾紛的部分不符合中國政府的立場,筆者也不贊同。雖然有問題的部分不能在正規期刊上發表,但是沒有問題的部分還是可以使用的。歡迎讀者告訴我符合中國政府政策的數據。

中國全圖

繪制中國全圖需要全部的 0 級數據。

#!/bin/bash
R=72/136/15/54
J=M15c
PS=china.ps
gmt psxy -J$J -R$R -T -K -U > $PS
gmt psxy -R$R -J$J CHN_adm0.gmt -K -O >> $PS
gmt psxy -R$R -J$J HKG_adm0.gmt -K -O >> $PS
gmt psxy -R$R -J$J MAC_adm0.gmt -K -O >> $PS
gmt psxy -R$R -J$J TWN_adm0.gmt -K -O >> $PS
gmt psxy -R$R -J$J -T -O >> $PS

代碼運行過程中 GMT 會出現如下的警告 (或錯誤?)

猜測是 ogr2ogr 轉換的問題。在我的系統環境該警告不影響繪圖效果,但評論中 @vv 指出在他的系統環境下會導致圖形無法繪制。

效果圖(缺了南海的九段線數據):

1 級行政區劃

與上面的代碼幾乎一樣,1 級數據中包含了 0 級數據,所以直接繪制 1 級數據即可。

R=72/136/15/54

J=M15c

PS=china.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt psxy -R$R -J$J CHN_adm1.gmt -K -O >> $PS

gmt psxy -R$R -J$J HKG_adm1.gmt -K -O >> $PS

gmt psxy -R$R -J$J MAC_adm1.gmt -K -O >> $PS

gmt psxy -R$R -J$J TWN_adm1.gmt -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

效果圖:

在上一篇博文《GMT 中 DCW 數據的使用》中利用 GMT 自帶的 DCW 數據也生成了類似的圖,如下圖。查看全圖,對比一下會發現,兩張圖的細節方面還是有些區別的, 本文的數據繪制的似乎包含了更多的細節(主要是小的島嶼)。這個就得根據需求去選擇了,當然也有 可能兩個都是有問題的。

2 級行政區劃

轉換出來的 2 級數據中包含了全國所有的市級邊界,用編輯器打開查看內容就會發現,每條線段都有 完整的注釋,很容易從眾多線段中提取出自己想要的部分。以安徽省為例,將與安徽有關的線段數據保存 到文件 Anhui_adm2.gmt 中:


R=114/120/29/35

J=M10c

PS=anhui.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt psxy -R$R -J$J Anhui_adm2.gmt -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

上面的腳本有一個很不方便的地方:想要畫一個省的 2 級數據,每次都要從 CHN_adm2.gmt 中手動提取該省的數據信息。下面的例子可以避免這種手動提取的過程,主要通過 DCW 數據和 psclip 命令,使用全國 2 級數據(CHN_adm2.gmt),但是只繪制安徽省的 2 級數據。

R=114/120/29/35

J=M10c

PS=anhui.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt pscoast -FCN.34 -M > Anhui_bnd.gmt

gmt psclip -J$J -R$R Anhui_bnd.gmt -K -O >> $PS

gmt psxy -R$R -J$J CHN_adm2.gmt -K -O >> $PS

gmt psclip -C -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

腳本利用 pscoast 命令,將安徽?。ùa為 34)的省界數據導出到文件 Anhui_bnd.gmt 中,然后利用該文件進行 clip,psxy 繪圖時雖然使用的是全國的 2 級數據 CHN_adm2.gmt,但是只有安徽省內的部分會被繪制出來,最后還需要再次調用 psclip 以結束 clip。

上面的這個腳本生成了一個中間文件 Anhui_bnd.gmt,有強迫癥的人是無法忍受這個的,因而上面的代碼利用管道可以進一步簡化為:

R=114/120/29/35

J=M10c

PS=anhui.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt pscoast -FCN.34 -M | gmt psclip -J$J -R$R -K -O >> $PS

gmt psxy -R$R -J$J CHN_adm2.gmt -K -O >> $PS

gmt psclip -C -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

`
上面三個腳本的最終結果基本是一致的,效果圖如下:

注:三個腳本的成圖效果是有差的,但是目前沒有體現出來,在下一段 “3 級行政區劃” 中,可以更明顯地看出區別。

3 級行政區劃

這里還是以安徽省為例,實際上只用 3 級數據即可,這里同時用了 2 級數據和 3 級數據,并且用不同的粗細和顏色來區分。需要注意,由于 3 級數據中包含了 2 級數據,所以下面的例子先畫了 3 級數據,再用 2 級數據覆蓋。如果畫的順序反了,效果就會差很多。

R=114.8/120/29.3/36

J=M14c

PS=anhui.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt psxy -R$R -J$J CHN_adm3.gmt -W0.5p,gray -K -O >> $PS

gmt psxy -R$R -J$J CHN_adm2.gmt -W1p -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

效果圖如下:

下面的腳本利用了前面提到的 psclip 的方法:

R=114.8/120/29.3/36

J=M14c

PS=anhui.ps

gmt psxy -J$J -R$R -T -K -U > $PS

gmt pscoast -FCN.34 -M | gmt psclip -J$J -R$R -K -O >> $PS

gmt psxy -R$R -J$J CHN_adm3.gmt -W0.5p,gray -K -O >> $PS

gmt psxy -R$R -J$J CHN_adm2.gmt -W1p -K -O >> $PS

gmt psclip -C -K -O >> $PS

gmt psxy -R$R -J$J -T -O >> $PS

效果圖如下:

將這兩張圖對比一下,容易發現,省界的部分線段明顯變細了,這算是 clip 的一個缺點,使用省界數據進行 clip,同時又要繪制省界數據,如何判斷省界數據點是否在 clip 區域內部是個問題。

修訂歷史

  • 2013-11-23:初稿;
  • 2013-11-28:繪制 2 級和 3 級邊界時,利用 clip 的方法以減少人工操作。Thanks to @yangtze。
  • 2013-12-05:刪除了數據包中的冗余隱藏文件,重新打包,提供多種格式下載。
  • 2014-01-19:不推薦下載全球行政區劃數據;
  • 2015-04-11:存在個別 IP 惡意下載數據,導致我流量異常高,因而刪除其他格式的數據壓縮包,僅留下 7z 格式的,若仍出現流量異常,則刪除該數據;
  • 2015-05-01:流量依然異常,猜測是搜索引擎會對齊定時抓取導致的;雖然已經在七牛限制了文件的非本站訪問,但似乎對壓縮文件無效。故刪除該數據,有需要的可以自己去轉換格式;
  • 2016-04-13:王亮添加了 GADM 數據庫新增的 Macou 1、2 級數據,并修正了部分理解和表述;
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容