今天看了smileliaohua老师的博客,学到很多,于是进行实验复现一下博客中的中国地图底图。下文中步骤为smileliaohua老师的步骤,但截图是我进行复现时重新取的图片,并且完善了老师博客中有些地方步骤不太详尽的地方。由于我的arcgis10.2为汉化版本,所以步骤里中英文我都进行了标注。
参考链接
实验数据下载
提取码346v
世界国家图以及河流矢量图。如果大家安装了IDL,那么在IDL的安装目录下:E:\ENVI\IDL85\resource\maps\shape(我的IDL安装在E盘),可以找到cntry0*.shp和rivers.shp;
总共包含五个文件:
bou2_4l.shp:中国政区的线文件,在这个线文件里包含了南海的九段线
bou2_4p.shp:中国政区的面文件
rivers.shp:世界主要河流
cntry0*.shp:世界国家面文件
省会城市.shp:中国省会城市点文件
(此次实验使用的cntry02.shp国家面文件,IDL85中自带cntry08.shp)
注意:ITT提供的两个文件没有设置坐标系,需要先在Catalog中将这两个文件(rivers.shp和cntry02.shp)的地理坐标系设为WGS84。
设置地理坐标系方法如下:
放大图我们可以看到,沿海一带有很多面积很小的岛屿,为了制图的美观,我们需要删掉一些面积小的岛屿,但是在这之前,我们必需把南海诸岛以及台湾周围的岛屿保留下来。
选中过程中按住shift可进行连续选择
在bou2_4p图层上右击选择Selection(选择)->Create Layer From Selected Features(根据所选要素创建图层)。将选中的要素创建一个新的图层。
停止编辑,在刚刚产生的图层上右击选择Data(数据)->Export Data(导出数据)…,将选择的要素导出,命名为“南海诸岛及其它岛屿.shp”
接下来我们就可以删掉面积小的岛屿了。继续进入编辑状态,打开bou2_4p的属性表,打开Select by Attribute(按属性选择)对话框,输入"AREA"=0,点击apply,选中面积为小于0.01的多边形,删除。
bou2_4p图层中面积较小的岛屿已经删除
接下来我们要从政区文件(bou2_4p)中提取出中国的轮廓线。这一步的目的是我们要分开中国在陆地上的国界和在海岸线上的国界,因为这两者在制图的时候是不同的。之所不直接用政区线文件提取轮廓是因为经过一些处理以后用面文件提取会更方便(下面会细说);而不用IDL中的国家(cntry02)是因为ITT提供的世界图是他们所认为的世界图(对比一下中国的藏南地区就会发现,在这个世界图上,中国的藏南地区是直接划给印度的,所以我们不用它,只把它作为底图)。
打开Toolbox->Data Management Tools(数据管理工具)->Features(要素)->Polygon to Line(面转线),将输出文件命名为“中国线.shp”。确保”Identifyand store polygon neighboring information(optional)”选中(保留每条线段两边的多边形信息是下一步提取轮廓线的关键;另外,Feature to Line也能实现面转线的功能,但是没有选项)。
打开“中国线.shp”属性表,选中LEFT_FID=-1或者RIGHT_FID=-1的所有要素,这个时候边界上的所有线要素就被选中了。如前所述的方法,将选中的要素创建图层,并导出成单独的图层,命名为“中国轮廓线.shp”。
新建一个点文件(坐标系设为WGS84),进入编辑状态。在辽宁与朝鲜的入海口处、广西与越南的入海口处创建两个点,保存并停止编辑。
如何新建一个点文件
使用Toolbox->Data Management Tools(数据管理工具)->Features(要素)->Split Line atPoint(在点处分割线)工具,将线在点处打段。并且在编辑状态下,用Merge(合并)工具将两部分分别合并在一起;并新建一个字段用以区分陆上国界和海上国界。
这里一定要细心,耐心,不能漏掉祖国任何一个小岛!
如下图这种小的断点也要选择完整,不然最后字段类型就不只是两类了!
这一步我们从中国政区的线文件(bou2_4l)中提取出九段线。名称是叫九段线,但是实际上在现在地图出版物中都是10段的。这一步比较简单,在编辑状态下选出这10段线,导出成单独的文件,命名为“九段线.shp”。
到目前为止,我们已经整理出来我们的底图所需要的要素文件:
省会城市(点)
九段线(线)
中国陆_海国界轮廓线(线)
河流(线)
南海诸岛及其它岛屿(面)
中国政区(面)
国家(面)
接下来我们对这些要素进行符号化。
首先在File(文件)->Page and Print Setup(页面和打印设置)中,将纸张调成横向。进入版面视图,适当调整数据框的大小和位置(上面留出写标题的空间),将地图比例尺改为1:23 000 000。
双击“中国陆_海国界”图层打开Layer Properties(图层属性)对话框,在Symbology(符号)中选择Categories(类别)方式,在ValueField(值字段)中选择国界类型,点击Add all Values(添加所有值)。双击陆上国界的符号,打开Symbol Selector(符号选择器)对话框,随便选择一种线型符号,点击“Edit Symbol”,打开Symbol Property Editor(符号属性编辑器)对话框。
对对话框中点击左下的“+”号新建两层。将线型符号的颜色设为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(偏移)设为2。点击确定,返回Symbol Selector(符号选择器)对话框,可以将刚刚设置的样式保存。
点击确定返回Layer Properties(图层属性)对话框,将海上国界的符号样式设置为:颜色Yogo Blue(RGB 115,178,255),线宽0.4。设置完成后国界线的效果如图:
然后将九段线的符号样式也设置成陆上国界的样式。
将省会城市的符号类型设置为“Circle 19”(圆形19),颜色50%灰度,大小6。并右击该图层设置“Label Features”。(标注要素)
使用ArcToolbox(工具箱)->Cartography Tools(制图工具)->Generalization(制图综合)->Smooth Line(平滑线)工具,将河流光滑。”SmoothingAlgorithm”(平滑算法)方法选择BEZIER_INTERPOLATION。
完成以后设置河流的符号样式为:颜色Cretean Blue(RGB 0,112,255),线宽0.5。为了只让它显示长江和黄河,双击光滑过的河流图层,切换到“Definition Query”(定义查询)选项卡,在Definition Query中输入"NAME" = ‘Huang He’ OR “NAME” = ‘Yangtze’,点击确定。
将cntry02图层颜色改为50%灰色,然后双击数据框“Layers”(图层)打开Data Frame Properties对话框,切换到“Frmae”(框架)选项卡,在“Background”中选择“Lt Blue”,(浅蓝色)确定,此时效果如图:
双击数据框“Layers”打开Data Frame Properties对话框,切换到“Grids”(格网)选项卡,点击“New Grid…”(新建格网),保持默认一直到Finish(下一步)。接下来点击“Properties…”打开“Reference System Properties”对话框。
在“Axes”选项卡中,取消”Major Division Ticks”和”Subdivision Ticks”中所有的复选框;
在“Interior Labels”选项卡中,取消”Show interior grid labels”复选框;
在“Labels”选项卡中,设置Label的字体为Times new Roman,8号,“Label Offset”为“-2”pts。点击“Additional Properties”打开“Grid Label Properties”对话框,取消“Show coordinate direction labels”复选框,取消“Show zerominutes”和“Show zero seconds”复选框;
在“Lines”选项卡中,点击Symbol,设置经纬线的符号样式为:颜色Moorea Blue(RGB 0,169,230),线宽0.2;
效果如下图:
双击数据框“Layers”打开Data Frame Properties对话框,切换到“Grids”(格网)选项卡,点击“New Grid…”(新建格网),保持默认一直到Finish。点击“Properties…”(属性)打开“Reference System Properties”对话框。
在“Lines”(线)选项卡中设置线型为“Dashed 4:4”,颜色40%灰度,线宽0.4;
在“Label”(标注)选项卡中取消所有复选框;
在“Intervals”(间隔)选项卡中如下设置:
点击确定。点击菜单”Insert(插入)”->”Text(文本)”插入“北回归线”四个字,双击这四个字,如下设置:
到现在为止,我们的底图就基本做完了,效果如下图所示。
还有重要的南海诸岛没有放上去:
首先插入一个新的数据框,添加如下图层到新的数据框。
然后右键省会城市图层,标注要素。调整新建数据框大小和位置,至九段线显示完整,最终效果如下:
随后插入比例尺,指北针,设置地图标题,导出300dpi分辨率的jpg格式。
看了smileliaohua老师的博客后,摸索着实验了下,不知不觉用了两个多个小时才完成底图部分的绘制- -。改天有时间再试一下气象数据的插值可视化。
再次感谢smileliaohua老师的博客,受益匪浅。
纸上得来终觉浅,绝知此事要躬行啊~