gmt-china / china-geospatial-data

China Geospatial Data for GMT
https://docs.gmt-china.org/latest/dataset-CN/
119 stars 29 forks source link

包含完整信息的 CN-border 数据 #41

Open seisman opened 3 years ago

seisman commented 3 years ago

目前的 CN-border 数据中只有单纯的线段数据,没有每个线段对应的元信息(比如属于哪个省的边界)。

@liuzhumei 曾经提供给我一套更完整的中国边界数据(目测包含国界、省界、市界和区界),数据大小为 90 MB。以下是她提供的笔记:

中国行政区划数据集

​ 本数据集原始来源为 全国地理信息资源目录服务系统,比例尺为1:100万,数据整体现势性为2015年。经过数据集要素的提取、合并及格式转化(详情见博文),集成为DCW数据格式???,包括:

数据下载

https://github.com/gmt-china/china-geospatial-data ??

数据使用

数据使用方法类似原DCW数据使用规则,通过-Rcoast模块的-E选项,指定区域代码,调用绘图。

基本使用方法

???????????????????

由于DCW-China?数据只提供省级以上行政区划边界,社区另外提供同源OGR/GMT格式的市县级行政区划、行政地名、各级公路/铁路、湖泊水系等数据。

县级行政区域提取

BOUA.gmt中的基本单位是三级行政区,即市辖区、县级市、县、自治县等行政区域。可利用convert模块,通过名称(Name属性)或行政区划代码(Pac属性)筛选,提取数据:

REM 提取武汉市武昌区边界
gmt begin
  gmt convert -S"Pac=420106" BOUA.gmt | gmt plot -Ba
gmt end

image

地级行政区域提取

6位区划代码的3~4位表示地级市、自治州等,可据此提取隶属同一地级行政区的区域范围。GMT6.1.0版本尚未完成多空间要素合并功能,因此利用ogr2ogr完成多边形的合并(Union)操作。

gmt begin
  REM 提取武汉市(PAC码以4201开头)边界
  REM sql语句中第一个%为转义符
  ogr2ogr -where "Pac like '4201%%'" wuhan.gmt BOUA.gmt

  REM 绘制武汉市区域(含各区边界)
    gmt plot wuhan.gmt -Wblue -Ba

    REM 利用ST_UNION函数合并各区
    ogr2ogr wuhan_union.gmt wuhan.gmt -dialect sqlite -sql "select ST_UNION(gcol,gcol) from (select ST_Collect(geometry) As gcol from wuhan)"

    REM 只绘制武汉市市界
    gmt plot wuhan_union.gmt -Wred
gmt end

结果如下:

image

行政区划名称等属性信息提取

BOUA.gmt数据中带有省名、区划代码、区(县)名、面积、区域中心坐标等属性信息。可通过ogr2ogr中的SQL语句查询,转化为CSV格式后利用text模块画出。如上图中添加武汉市各区名称,代码及结果如下:

gmt begin

  REM 上例中wuhan.gmt绘制各区边界
  gmt plot wuhan.gmt -Wblue -Ba

  REM 提取各区中心坐标及区县名称,利用text标记
  ogr2ogr -f CSV -sql "select Longitude, Latitude, Cou_Name from wuhan" wuhan.csv wuhan.gmt
    gmt text -F+f10p,STHeiti-Regular--GB-EUC-H wuhan.csv

gmt end

image