ArcGIS 数据生产与精细化制图之中国年降水量分布
图的制作
By: smileliaohua (www.weibo.com/smileliaohua)
楼主按:在今年的 Esri 中国用户大会上,我听了几场关于 ArcGIS 用于制图方面的讲座,也
在体验区与 Esri 中国的技术老师有一些交流。一直觉得 ArcGIS 在空间数据管理和分析方面
很强大,而在制图方面却表现得不怎么样。我看到在国内很多人制图用的是 CorelDraw、AI
(可能不仅仅是国内,国外的专业制图也是),诚然这些软件作为专门的图形软件,在很多
方面有不可比拟的优势,但是对于地理信息制图来说,图形不能和地理信息相关联却是这些
软件最大的软肋。而 ArcGIS 越来越注重在制图方面的发展与应用,每年举办的制图大赛就
是推广之一。
讲座听完了我当然想自己有所实践,于是便产生了此文。本文以中国年降水量分布图的制作
为例详细地介绍了数据的获取、预处理、空间降水插值直到最后成图的整个过程。共分为三
个部分:
第一部分:底图的制作。这一部分介绍衬托专题图的底图的制作,这一部分的结果还可以作
为其它专题图的底图;
第二部分:中国年降水量插值。这一部分介绍用 ArcGIS 的空间插值方法将气象站点的降水
量数据插值得到全国范围内的降水分布;
第三部分:地图整饰。这一部分介绍添加地图要素和美化及最后出图。
所有的步骤都在 ArcGIS10/10.1 环境下,本文涉及到的数据,以及最后结果(包括本文)都
可以在我的网盘中下载。
第一部分:底图的制作
Step 1-1:数据准备
(1)先在网上下载中国地图 shp 格式的文件以及中国省级行政中心的 shp 文件(网上
一 搜 就 有 了 , 不 过 我 还 是 建 议 在 国 家 基 础 地 理 信 息 系 统
(nfgis.nsdi.gov.cn/nfgis/Chinese/c_xz.htm)上下载来保证数据的权威性,不过这个网站经常上
不去);
(2)世界国家图以及河流矢量图。如果大家安装了 IDL,那么在 IDL 的安装目录下:
D:\Program Files\ITT\IDL\IDL80\resource\maps\shape ( 我 的 IDL 安 装 在 D 盘 ), 可 以 找 到
cntry02.shp 和 rivers.shp;
以上数据可以从这里下载 http://pan.baidu.com/share/link?shareid=54856&uk=352462598
总共包含五个文件:
bou2_4l.shp:中国政区的线文件,在这个线文件里包含了南海的九段线
bou2_4p.shp:中国政区的面文件
rivers.shp:世界主要河流
cntry02.shp:世界国家面文件
省会城市.shp:中国省会城市点文件
注意:ITT 提供的两个文件没有设置坐标系,需要先在 Catalog 中将这两个文件(rivers.shp
和 cntry02.shp)的地理坐标系设为 WGS84。
1
Step 1-2:设置投影
打开 ArcMap 将这些文件添加进去,接下来我们要给 Dataframe 设置一个投影坐标系。
由 于 我 们 要 做 的 是 中 国 全 国 的 降 水 量 分 布 , 我 们 使 用 等 面 积 的 Albers 投 影 。 右 击
Layers->Properties->Coordinate System 选项卡->new Project System,选择 Albers,设置中央经
线 105,标准纬线 25 度,47 度,在地理坐标系中选择 WGS84。设置如图:
Step 1-3:放大图我们可以看到,沿海一带有很多面积很小的岛屿,为了制图的美观,我们
需要删掉一些面积小的岛屿,但是在这之前,我们必需把南海诸岛以及台湾周围的岛屿保留
下来(原因大家都懂的)。
2
关闭其它图层(只留下政区图层 bou2_4p),开始编辑进入编辑状态,选中南海的那些岛屿
以及台湾周边岛屿,如图:
在 bou2_4p 图层上右击选择 Selection->Create Layer From Selected Features。将选中的要素创
建一个新的图层。
3
停止编辑,在刚刚产生的图层上右击选择 Data->Export Data…,将选择的要素导出,命名为
“南海诸岛及其它岛屿.shp”。
接下来我们就可以删掉面积小的岛屿了。继续进入编辑状态,打开 bou2_4p 的属性表,
打开 Select by Attribute 对话框,输入"AREA"< 0.01,点击 apply,选中面积为小于 0.01 的多
边形,删除。
4
Step 1-4: 提取出中国的轮廓线
接下来我们要从政区文件(bou2_4p)中提取出中国的轮廓线。这一步的目的是我们要分
开中国在陆地上的国界和在海岸线上的国界,因为这两者在制图的时候是不同的。之所不直
接用政区线文件提取轮廓是因为经过一些处理以后用面文件提取会更方便(下面会细说);
而不用 IDL 中的国家(cntry02)是因为 ITT 提供的世界图是他们所认为的世界图(对比一下中
国的藏南地区就会发现,在这个世界图上,中国的藏南地区是直接划给印度的,所以我们不
用它,只把它作为底图)。
打开 Toolbox->Data Management Tools->Features->Polygon to Line,将输出文件命名为“中
国线.shp”。确保”Identify and store polygon neighboring information(optional)”选中(保留每条
线段两边的多边形信息是下一步提取轮廓线的关键;另外,Feature to Line 也能实现面转线
的功能,但是没有选项)。
打开“中国线.shp”属性表,选中 LEFT_FID=-1 或者 RIGHT_FID=-1 的所有要素,这个时
候边界上的所有线要素就被选中了。如前所述的方法,将选中的要素创建图层,并导出成单
独的图层,命名为“中国轮廓线.shp”。
5
Step 1-5:提取陆上国界和海上国界
新建一个点文件(坐标系设为 WGS84),进入编辑状态。在辽宁与朝鲜的入海口处、广
西与越南的入海口处创建两个点,保存并停止编辑。
使用 Toolbox->Data Management Tools->Features->Split Line at Point 工具,将线在点处打
段。并且在编辑状态下,用 Merge 工具将两部分分别合并在一起;并新建一个字段用以区
分陆上国界和海上国界。
6
Step 1-6:提取出九段线
这一步我们从中国政区的线文件(bou2_4l)中提取出九段线。名称是叫九段线,但是
实际上在现在地图出版物中都是 10 段的。这一步比较简单,在编辑状态下选出这 10 段线,
导出成单独的文件,命名为“九段线.shp”。
到目前为止,我们已经整理出来我们的底图所需要的要素文件:
省会城市(点)
九段线(线)
中国轮廓线(线)
河流(线)
南海诸岛及其它岛屿(面)
中国政区(面)
国家(面)
接下来我们对这些要素进行符号化。
Step 1-7:纸张设置
首先在 File->Page and Print Setup 中,将纸张调成横向。进入版面视图,适当调整数据
框的大小和位置(上面留出写标题的空间,右边留出说明文字的空间),将地图比例尺改为
1:25 000 000。
Step 1-8:设置国家层的符号样式
将国家层的填充颜色设为 10%灰度,边框宽度 0.2,边框颜色为 20%灰度。这时,整体
如图:
Step 1-9:设置国界线的符号样式
双击“中国轮廓线”图层打开 Layer Properties 对话框,在 Symbology 中选择 Categories
方式,在 ValueField 中选择国界类型,点击 Add all Values。双击陆上国界的符号,打开 Symbol
Selector 对话框,随便选择一种线型符号,点击“Edit Symbol”,打开 Symbol Property Editor
对话框。
7
对对话框中点击左下的“+”号新建两层。将线型符号的颜色设为 50%灰度,线宽 0.5,
Line Joins 为“Round”。第二层的颜色设为 Mango(RGB 255,211,127),线宽 2,Line Joins
设为“Round”,将 Line Propeties 中的 Offset 设为 1。类似地,第三层的颜色设为 Topaz Sand
(RGB 255,235,175),线宽 4,Line Joins 设为“Round”,将 Line Propeties 中的 Offset 设
8