由于NCL (NCAR Command Language)
停止开发,所以把 NCL-Chinamap
( https://github.com/huangynj/NCL-Chinamap.git ) 增加一个 Python
版本。
使用的是 NCL
的 Python
版本绘图库 PyNGL
。
根据全国地理信息资源目录服务系统提供的1:100万全国基础地理数据库 ( http://www.webmap.cn/commres.do?method=result100W )
对原PyNGL
的地图数据 (与 NCL
一致) 进行修正,从而能够绘制国家规定的国界、台湾岛屿、南海诸岛及省界等.
https://conda.io/en/latest/miniconda.html
conda create -n ncl_to_python -c conda-forge xarray netcdf4 scipy pyngl pynio ncl wrf-python
conda activate ncl_to_python
使用 git
下载
git clone https://github.com/huangynj/Python-Chinamap.git
或者直接点击下载按钮打包下载。
python plot_correct_Chinamap_with_SCS-subplot.py
使用修正的地图数据关键属性是:
res.mpDataSetName = "./database/Earth..4"
res.mpDataBaseVersion = "MediumRes" # or "Ncarg4_1"
res.mpFillOn = True
res.mpFillBoundarySets = "NoBoundaries"
res.mpFillAreaSpecifiers = ["land","water"]
res.mpSpecifiedFillColors = ["white","white"]
res.mpAreaMaskingOn = True
res.mpMaskAreaSpecifiers = ["China"]
res.mpOutlineBoundarySets = "NoBoundaries"
res.mpOutlineSpecifiers = ["China","China:Provinces"]
在 database
目录下存在 Earth..4.lines
和 Earth..4.names
两个地图数据文件,可以把这两个文件覆盖 PyNGL
库目录 "~/anaconda3/envs/ncl_to_python/lib/python3.6/site-packages/ngl/ncarg/database"
下原来的文件,这样在设置 mpDataSetName
属性时可以省略路径,直接使用 "Earth..4"
,
否则需要把路径填写完整。使用到的地名可以参考:
http://www.ncl.ucar.edu/Document/HLUs/Classes/MapPlotData4_1_earth_4.shtml
conda deactivate
该地图数据中已经将台湾、钓鱼岛等归回中国,并将钓鱼岛命名 "Senkaku Shoto"
改为 "Diaoyu Dao"
,
具体修改的位置可查看 doc.pdf
文件。所以,使用完整中国地图只需设置 "China"
,
如果需要添加省界,则再添加 "China:Provinces"
即可。
详细可以参考提供的例子:plot_correct_Chinamap_with_SCS-subplot.py
。
2016-05-22:更新国界、台湾岛屿、南海诸岛及一些粗糙省界;
2016-05-27:更新北京市界;
2016-07-16:修正一些小 bugs;
2019-02-07:NCL 转移到 Python.
中文致谢:感谢中国科学院大气物理研究所黄永杰博士提供的包含正确中国国界
和行政区划的地图数据(https://github.com/huangynj/Python-Chinamap.git)。
英文致谢:Thank Dr. Yongjie Huang (IAP/CAS) for providing map database
(https://github.com/huangynj/Python-Chinamap.git).
Yong-Jie Huang (IAP/CAS)
[email protected]
2016-05-23