《基于ArcGIS的Python编程秘笈(第2版)》——2.6 缩放至所选要素

2.6 缩放至所选要素

创建选择集是ArcMap中常见的操作,选择集通常由属性查询或空间查询来创建,也可以由用户手动选择要素或其他方式来实现。为了更好地显示选择集,用户经常需要将视图缩放至所选要素的范围。Python有几种方法可以程序化地实现这一功能。本节将介绍如何在数据框和单独的图层中缩放至所选要素。

2.6.1 准备工作
DataFrame.zoomToSelectedFeatures()方法可以缩放至所有选择要素的范围,这些要素来自数据框的所有图层。在本质上,这个方法执行的操作与在ArcMap的菜单栏上单击“Selection | Zoom to Selected Features”所执行的操作是一样的。其中一个区别是,如果没有选中的要素,DataFrame.zoomToSelectedFeatures()方法会缩放至所有图层的全部范围(相当于全图显示)。

在一个单独图层中缩放至所选要素的范围,需要使用Layer对象。Layer对象包含的getSelectedExtent()方法,可以缩放至所选记录的范围。它同时返回一个Extent对象,该对象可以作为参数传递给DataFrame.panToExtent()方法。

2.6.2 操作方法
下面按步骤介绍如何获取和设置ArcMap中活动的数据框和活动的视图。

(1)在ArcMap中打开C:\ArcpyBook\Ch2\Crime_Ch2.mxd。

(2)查看ArcMap的“Table Of Contents”窗口,确保Crime是活动的数据框。

(3)单击“Table Of Contents”窗口中的“List By Selection”按钮。

(4)单击“Bexar County Boundaries”图层名称右边的“toggle”按钮,如图2-2所示,设置图层为“unselectable”(不可选)状态。

(5)单击“Table Of Contents”窗口中的“List By Source”按钮。使用“Select Features”工具,用鼠标光标在Northside ISD区域的边界内拖曳出一个矩形框,矩形框包围一部分盗窃点集,即可选中一个特定学校区域的边界和一些盗窃点,如图2-3所示。

(6)单击ArcMap“标准”工具条上的“Python”按钮。

(7)导入arcpy.mapping模块。

import arcpy.mapping as mapping

(8)引用当前活动的地图文档(Crime_Ch2.mxd),把该引用赋值给变量。

mxd = mapping.MapDocument("CURRENT")

(9)获取活动的数据框(Crime),缩放至所选要素。

mxd.activeDataFrame.zoomToSelectedFeatures()

(10)如果没有选择要素,调用 zoomToSelectedFeatures()方法会缩放至数据框中所有要素的范围。单击“Selection | Clear Selected Features”,清除所选要素。此时,再执行相同的代码,比较清除操作前后zoomToSelectedFeatures()方法的执行结果。

mxd.activeDataFrame.zoomToSelectedFeatures()

(11)现在即将执行的步骤是缩放至特定图层上所选要素的范围。使用“Select Features”工具,在Northside ISD区域的边界内拖曳出一个矩形框,矩形框包围一部分盗窃点集。

(12)首先,获取对Crime数据框的引用。调用ListDataFrames()函数,传入Crime通配符参数,用来返回一个包含单独项的Python列表。使用[0]取出列表中的第一项元素,也就是这个返回的列表中唯一的一项元素。

df = mapping.ListDataFrames(mxd, "Crime")[0]

(13)其次,获取对Burglaries图层的引用,该图层包含所选要素。下面的代码使用通配符(*)搜索Crime数据框中的“Burglaries in 2009”图层。ListLayers()函数返回一个Python列表,使用[0]取出列表中的第一项元素,即一个名称中包含Burglaries字符的图层。

layer = mapping.ListLayers(mxd,"Burglaries*",df)[0]

(14)最后,通过获取图层中所选要素的范围来设置数据框的范围。

df.extent = layer.getSelectedExtent()

(15)缩放至所选要素的完整代码如下所示,也可以查看C:\ArcpyBook\code\Ch2\ZoomSelectedExtent.py解决方案文件来检查代码。

import arcpy.mapping as mapping
mxd = mapping.MapDocument("CURRENT")
df = mapping.ListDataFrames(mxd, "Crime")[0]
layer = mapping.ListLayers(mxd,"Burglaries*",df)[0]
df.extent = layer.getSelectedExtent

2.6.3 工作原理
本节介绍了如何缩放至一个数据框的所有图层或特定图层中所选要素的范围。

缩放至一个数据框的所有图层中所选要素的范围,只需要引用当前活动的数据框,并调用zoomToSelectedFeatures()方法即可。

缩放至一个数据框的特定图层中所选要素的范围,需要编写的代码更复杂一些。首先,在导入arcpy.mapping模块后,获取对地图文档和Crime数据框的引用。然后,使用ListLayers()函数,传入对数据框的引用参数和通配符参数,搜索名称以Burglaries开头的图层。ListLayers()函数返回一个Python列表。因为本节使用的数据中只有一个图层符合通配符的搜索条件,所以取出列表中的第一个图层,并将其赋值给layer变量。最后,使用layer.getSelectedExtent()方法设置数据框的范围。

时间: 2024-12-31 19:15:48

《基于ArcGIS的Python编程秘笈(第2版)》——2.6 缩放至所选要素的相关文章

《基于ArcGIS的Python编程秘笈(第2版)》——2.8 添加图层到地图文档

本节书摘来自异步社区<基于ArcGIS的Python编程秘笈(第2版)>一书中的第2章,第2.8节,作者: [美]Eric Pimpler(派普勒) 更多章节内容可以访问"异步社区"公众号查看. 2.8 添加图层到地图文档 在很多情况下都需要把图层添加到地图文档中.制图模块提供了AddLayer()函数来实现这一功能.本节将介绍如何使用AddLayer()函数把图层添加到地图文档中. 2.8.1 准备工作 arcpy.mapping模块提供了在已有的地图文档中添加图层或图层

《基于ArcGIS的Python编程秘笈(第2版)》——第2章 管理地图文档和图层2.1 引言

第2章 管理地图文档和图层 基于ArcGIS的Python编程秘笈(第2版)本章将介绍以下内容. 引用当前的地图文档. 引用磁盘上的地图文档. 获取地图文档的图层列表. 限制图层列表. 缩放至所选要素. 更改地图范围. 添加图层到地图文档. 插入图层到地图文档. 更新图层的符号系统. 更新图层属性. 操作数据框中启用时间的图层. 2.1 引言 ArcPy制图模块提供了自动化的制图功能,包括管理地图文档和图层文件,以及这些文件中的数据.此外,还提供自动导出和打印地图.创建PDF地图册和将地图文档发

《基于ArcGIS的Python编程秘笈(第2版)》——导读

前言 ArcGIS是Esri公司研发的构建于工业标准之上的地理信息系统软件系列的总称. 本书将介绍如何使用Python语言来创建桌面ArcGIS环境下的地理处理脚本.工具和快捷方式等.并通过介绍如何使用Python语言和桌面ArcGIS来自动执行地理处理任务.管理地图文档和图层.查找和修复丢失的数据链接.编辑要素类和表中的数据等,以期能够有效地提高GIS工作人员的工作效率. 本书首先介绍了桌面ArcGIS环境中Python编程的基本概念,然后通过具体的操作方法来介绍如何使用Python编程实现A

《基于ArcGIS的Python编程秘笈(第2版)》——第1章 面向ArcGIS的Python语言基础

第1章 面向ArcGIS的Python语言基础 同其他编程语言一样,Python也支持多种类型的程序架构.本章主要介绍Python的基本语言架构.首先,介绍如何创建新的Python脚本及编辑已有的脚本:其次,介绍Python语言的特点,如添加注释.创建变量并赋值.创建内置变量等,以使Python的代码更加简单明了. 然后,介绍Python语言提供的各种内置数据类型,如字符串.数字.列表和字典等.类和对象是Python等面向对象编程语言的基本概念,在使用ArcGIS编写地理处理脚本时会经常用到它们

《基于ArcGIS的Python编程秘笈(第2版)》——2.2 引用当前的地图文档

2.2 引用当前的地图文档 在ArcGIS Python窗口或自定义的脚本工具中运行地理处理脚本时,经常需要引用当前加载在ArcMap中的地图文档.通常来讲,在对地图文档中的图层和表执行地理处理操作之前,需要引用当前的地图文档.本节将介绍如何在Python地理处理脚本中引用当前的地图文档. 2.2.1 准备工作在对地图文档执行任何操作之前,都需要先在Python脚本中引用地图文档,可以通过调用arcpy.mapping模块中的MapDocument()函数来实现.引用地图文档的途径有两种:一是引

《基于ArcGIS的Python编程秘笈(第2版)》——1.4 总结

1.4 总结 本章介绍了Python编程的基本概念,理解这些基本概念才能编写出有效的地理处理脚本.在本章的开头简略介绍了如何在IDLE开发环境下编写和调试Python脚本,讲解了如何创建一个新的脚本.编辑已有的脚本.检查语法错误和运行脚本等.本章还介绍了基本的语言结构,包括导入模块.创建变量并为其赋值.if/else语句.循环语句以及各种数据类型(如字符串.数字.布尔型.列表.字典和对象等).最后介绍了如何读取和写入文本文件.

《基于ArcGIS的Python编程秘笈(第2版)》——1.3 Python语言基础

1.3 Python语言基础 了解Python语言的基本架构,有助于读者更有效地编写ArcGIS地理处理脚本.尽管Python语言相对于其他编程语言来说更易学,但要想真正掌握它,也需要花一定的时间来学习和练习.本节将介绍如何创建变量及给变量赋值,可赋值给变量的数据类型,如何使用不同类型的语句和对象,如何读写文件和导入Python第三方模块等内容. 1.3.1 代码注释 编写Python脚本时,一般都需要遵循约定俗成的程序架构.通常在每个脚本的开头是说明部分,用来说明脚本的名称.作者和处理过程的梗

《基于ArcGIS的Python编程秘笈(第2版)》——2.10 更新图层的符号系统

2.10 更新图层的符号系统 有时候需要改变地图文档中图层的符号系统,可以通过使用UpdateLayer()函数来实现,该函数还可以改变图层的各种属性.本节将介绍如何使用UpdateLayer()函数更新图层的符号系统. 2.10.1 准备工作 arcpy.mapping模块的UpdateLayer()函数具有更新图层符号系统的功能.例如,可以将图层的符号系统由分级颜色更新为分级符号,如图2-10所示.UpdateLayer()也可以用来更新各种图层属性,但在默认情况下是更新符号系统.因为Upd

《基于ArcGIS的Python编程秘笈(第2版)》——1.2 ArcGIS Python窗口的使用

1.2 ArcGIS Python窗口的使用 1.1节介绍了如何使用Python的IDLE开发环境,本节给出一个地理处理脚本实例来说明如何使用ArcGIS Python窗口.刚开始编写代码时,人们通常在桌面ArcGIS Python窗口中编写脚本,当脚本越来越复杂时,会转向使用IDLE或者其他开发环境. 1.2.1 ArcGIS Python窗口 ArcGIS Python窗口是桌面ArcGIS 10.x中的一个嵌入式.交互式的窗口,它在测试小型代码块.学习Python基础知识.建立方便快捷的工