Python和ArcGIS自动化制图完全指南(二):制作mxd模板

前言:mxd 模板是我们出图的标准样式,我们所有的成果图都是以 mxd 模板为基础。模板文件不要求对某些特定数据进行特定的展示(设置定义查询语句)等等,但是额外的,模板文件需要多添加一个 MappingIndex(制图索引)图层...

文章目录

  • Python和ArcGIS自动化制图完全指南(二):制作mxd模板
    • 1.初始数据
    • 2.原始数据的处理
    • 3.MappingIndex
    • 4.不同大小的模板
    • 5.完成的 mxd 模板展示
    • 结束语
Note: 批量生成的地图都是通过一个或者多个 mxd 模板来生成的。其原理在《指南》的前言章节中有相关的说明。

1.初始数据

我们结合案例来说明

“…以地级市为单位,对中国某省份的地级市制作铁路、道路分布的专题图…”

原始数据如下:

  • buidings

    用于显示建筑物

  • landuse

    用于显示部分的土地利用情况

  • natural

    用于显示自然地物

  • railways

    用于显示铁路,线要素

  • roads

    用于显示道路,线要素

  • waterways

    用于显示水系,线要素(不会使用到水系)

  • 市级区域&市界

    市界是由市级区域数据转线要素得到。

    市界用于显示不同地级市之间的界线,而市级区域图层用于显示标注,显示各地级市的名称;同时也会用于制作 MappingIndex 图层(之后会说到)。

    选取了四川省17个地级市作为案例来具体的说明和分析。


2.原始数据的处理

制作专题图时,我们会凸显当前制图单位的信息,而部分隐藏其他单位的信息,如下图所示:

在 mxd 中如何实现该功能呢?大家都知道要使用图层的定义查询功能。这里也不例外,只不过需要人为处理一下数据。

在最后会让计算机一个图层一个图层的、一个 mxd 文件一个 mxd 文件自动的设置定义查询语句。

现在需要使用市级区域图层基础信息图层buidingslandusenaturalrailwaysroads 执行标识(或者相交)操作,目的是分割基础信息图层并将市级区域图层的字段属性赋予给该图层 (如市级区域图层的 CITY 字段)。

如下图所示:处理完成后的 roads 图层的属性表中已经有了 CITY 字段,而该字段会被用于定义查询。

Note: 标识:该工具位于分析工具>叠加分析>标识 相交:该工具位于分析工具>叠加分析>相交 标识和相交处理数据都不会直接覆盖原数据,所以需要手动重命名、替换数据。如果数据量大,可以编写代码来完成一系列操作。

3.MappingIndex

MappingIndex。它是一个面矢量图层,需要自己创建。他有如下几个功能:

  • 如它的名字所示,MappingIndex,他类似一个索引文件,我们编写的自动制图工具就是以该图层作为顺序依次进行 mxd 文件的制作、地图的导出。

    MappingIndex 中有多少个要素(属性表有多少条),就表示有多少个制图单位,整个系统就会制作多少个地图。

  • 使用 CITY 字段的值作为定义查询语句的参数。

    该图层中也必须有作为定义查询的字段存在。在这个案例中,这个字段就是 CITY 字段。整个系统就是从该图层的 CITY 字段中读取数据,然后对每一个图层的定义查询语句进行更新。

    这样才能保证自动更新,不然最后输出的所有地图都是一样的。

  • 使用 PAGESIZE 字段的值适配模板大小。

    在运行我们最终编写的自动制图程序后,程序会自动给该图层添加一个名为 PAGESIZE 的字段。

    并且会计算各个制图单位(各地级市)在当前比例尺下的最小制图尺寸——宽和高。用于适配不同大小的 mxd 模板(因为有的地级市很大,有的很小,就像同一件衣服不会同时适合一个胖子和一个瘦子)。

    之前我们就说过,无法通过 ArcPy 来修改出图的页面大小的,所有我们要制作几个不同尺寸的 mxd 供程序选择大小合适的模板。

根据以上几个功能来看,市级区域图层就满足我们的要求,所以我们可以直接复制市级区域这个图层,然后重命名为 MappingIndex 图层即可。


4.不同大小的模板

17个地级市,有大有小,有长条状的也有呈躺卧状的。所以就需要制作几个不同大小的模板来适应需求,因为单单使用 arcpy 是无法直接修改页面大小的。

如下图所示,我们可以将 ArcMap 的布局界面分成两个区域:

蓝色区域:具体显示地图地理信息内容的区域。

红色区域:整个地图区域,包括了地图显示区域,以及必要的文字描述、四周的留白和花纹等。

在 mxd 模板与制图单位相适配的过程中,其比较的大小就是对比蓝色区域的大小。(如果使用红色区域也可以,只是最后计算尺寸需要减去四周白边的距离)

制作了3种不同大小的 mxd 模板:

1080x700(完整页面大小为1100x900)

1080x1300(完整页面大小为1100x1500)

1180x900(完整页面大小为1200x1100)

名字分别为:1080x700.mxd、1080x1300.mxd、1180x900.mxd。

Note: mxd 模板文件的命名方法必须按照 宽x高 的方式来命名,因为程序是会读取模板文件的名称。


5.完成的 mxd 模板展示

最终制作完成的模板展示

内容列表 布局视图


结束语

全套资源免费下载:

  • 演示文件数据
  • 源代码
  • 《指南》文档小册子,便于电脑查看

关注公众号回复:自动化制图 ,获取所有下载!


分享GIS,不止于Python。 荟GIS精粹,关注我,带你飞! (长按扫码也行)


Note:第二次大幅修改——2021/4/11

欢迎交流 原创不易,请多转发和分享

很难的文章系列:

  • 《Python和ArcGIS自动化制图完全指南》——共六章,附带教程源码和数据下载。
  • 《深入制图表达》——深入制图表达的机制和运用实现。
  • 《ArcGIS制图高级技巧》——ArcGIS制图高级技巧,发现 ArcGIS 不为人知的各种制图技巧。(持续更新中!)
  • 《基于Python的ArcGIS(ArcPy)多进程自动出图》——使用多进程快速大批量出图。
  • 《用Python创建你第一个GIS程序》——简单易懂,手把手教你用 Python 搭建你的第一的 GIS 程序。

不难的有趣文章系列:

  • 《从地图发现世界》——从地图,发现奇特的、美丽的、我的世界。(持续更新中!)

更多文章请翻看我的主页。

Python和ArcGIS自动化制图完全指南(二):制作mxd模板相关推荐

  1. Python和ArcGIS自动化制图完全指南(三):分配模板大小

    Python和ArcGIS自动化制图完全指南(三):分配模板 前言:在<指南>第二章中,我们制作了3种不同尺寸的 mxd 模板,就是为了适配不同的制图单位,比如适配自贡市的 mxd 模板就 ...

  2. python编写arcgis脚本教程_ArcGIS二次开发(1)arcpy简介及编写一个自己的脚本

    1.1.前言 在数据处理过程中,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具(批量处理.建模等),但对于多个步骤之前的衔接及其它特殊处理存在困难,本系列文章 ...

  3. 信息竞赛进阶指南--二叉堆(模板)

    啥是二叉堆 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树).二叉堆有两种:最大堆和最小堆.最大堆:父结点的键值总是大于或等于任何一个子节点的键值:最小堆:父结点的键值 ...

  4. Python 深度学习架构实用指南:第一、二部分

    原文:Hands-On Deep Learning Architectures with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集] ...

  5. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  6. 基于Python的ArcGIS二次开发实验实习教程

    基于Python的ArcGIS二次开发实验实习教程. ISBN编号: 9787307221772 原价(定价): 39元, 武汉大学出版社 天猫正版链接: https://detail.tmall.c ...

  7. arcgis 经纬度转大地坐标_土地报备坐标txt(坐标交换数据)转shp遇到的坑及其Python(ArcPy/ArcGIS)实现...

    目录 土地报备坐标txt文件(坐标交换数据)转shp遇到的坑以及该功能的Python(ArcPy/ArcGIS)实现 一. 使用 Python(ArcPy) 绘制shp 什么是ArcPy 如何构造sh ...

  8. python入门必备指南-致Python初学者 Anaconda入门使用指南完整版

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...

  9. 微软400集python课程-最强福利——来自微软的Python学习教程(开发指南)

    各位小伙伴们,大家有多久没有发现柳猫这么勤奋的更新啦~ 今天给小伙伴们带来微软的官方福利,你没看错,就是来自微软的官方Python学习教程(开发指南)~ 之前微软上线过一套 Python 教程< ...

最新文章

  1. 最新机器学习开源项目Top10
  2. android screen monitor怎么用
  3. tftp服务器_Transfer for Mac(TFTP服务器)
  4. 微信开发系列之四 - 将SAP C4C的数据更改通知发送到微信公众号上
  5. php简单环境,PHP 简单的环境搭建
  6. 笨方法学python - 04
  7. 安装pattern出错mysql_config not found
  8. 母版页的优点,及母版页与内容页中相互访问方法
  9. 由浅入深探究mysql索引结构原理、性能分析与优化
  10. 唐宇迪学习笔记11:决策树算法
  11. 录音怎么转换成mp3格式?
  12. 为啥面试需要Aggressive?
  13. python字符串字母怎么取出_Python需要从字符串中提取第一个和最后一个字母
  14. Oracle 月初、月末等时间获取示例
  15. B.FRIEND背光防水静音键盘,高剪刀脚键盘GK4
  16. TMC5160和TMC2160的使用
  17. 基于机器学习的车辆检测算法研究方法概述
  18. 多媒体计算机技术在教学中的应用,多媒体计算机技术在教学中的应用分析
  19. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)
  20. 对网络日志分析的几个方面

热门文章

  1. Flutter 手势GestureDetector解析
  2. 轻轻松松使用StyleGAN2(六):StyleGAN2 Encoder是怎样加载训练数据的?源代码+中文注释,dataset_tool.py和dataset.py
  3. 博客摘录「 3种交叉验证与参数选择方式」2023年5月17日
  4. cocos黑暗斩_cocos2d制作动态光晕效果基础——blendFunc
  5. win7截图快捷键失效
  6. HIVE精炼笔记总结——[类型篇]
  7. 遥感影像信息提取之—人工解译
  8. 震撼的视觉感,裸眼3d成为企业宣传最优选择
  9. 米哈游贺甲:如何实现次世代卡通渲染效果?
  10. Kruskal-Wallis test