《基于ArcGIS的Python编程秘笈(第2版)》——2.7 改变地图范围

简介:

本节书摘来自异步社区《基于ArcGIS的Python编程秘笈(第2版)》一书中的第2章,第2.7节,作者: 【美】Eric Pimpler(派普勒) 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.7 改变地图范围

很多时候我们需要改变地图的范围,常见的情况有以下两种:一是在自动生成地图的过程中,二是在需要创建不同区域或要素的地图时。arcpy提供了一些可以改变地图范围的方法,本节将使用定义表达式来改变地图范围。

2.7.1 准备工作
DataFrame 类的 extent 属性可以用来设置地图的范围,它经常同 Layer.definitionQuery属性一起使用来定义图层的定义查询属性(即定义表达式)。本节将介绍如何使用这些类(DataFrame、Layer)与属性(DataFrame.extent和Layer.definitionQuery)来改变地图范围。

2.7.2 操作方法
下面按步骤介绍如何使用定义表达式改变地图范围。

(1)在ArcMap中打开C:ArcpyBookCh2Crime_Ch2.mxd。

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

(3)导入arcpy.mapping模块。

import arcpy.mapping as mapping
.```  
(4)引用当前活动的地图文档(Crime_Ch2mxd),把该引用赋值给变量。

mxd = mapping.MapDocument("CURRENT")

(5)创建for循环来遍历地图文档中的所有数据框。

for df in mapping.ListDataFrames(mxd):

(6)查找Crime数据框和该数据框内的指定图层,这个图层将用于定义查询。

if df.name == 'Crime':
layers = mapping.ListLayers(mxd,'Crime Density by
School District',df)

(7)创建for循环来遍历图层。尽管layers列表中只有一项元素,但是这里也使用循环来遍历。在for循环中,创建一个定义表达式,并设置新的数据框范围。

for layer in layers:
query = '"NAME" = 'Lackland ISD''
layer.definitionQuery = query
df.extent = layer.getExtent()

(8)完整的脚本如图2-4所!示,也可以查看C:\ArcpyBook\code\Ch2\ChangeMapExtent.py解决方案文件来检查代码。
<div style="text-align: center">
 <img src=" https://yqfile.alicdn.com/3f9e86447f0ae60b43bb7c93bea212c2eb0a71f9.png" >
</div>


(9)保存并运行脚本。此时数据视图的范围已经更新,因此只显示与定义表达式相匹配的要素,如图2-5所示。
<div style="text-align: center">
 <img src=" https://yqfile.alicdn.com/534210a997607495ad2b975547058c88f037adbb.png" >
</div>

**
2.7.3 工作原理**
相关文章
|
14天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
1天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
7天前
|
安全 数据处理 开发者
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
19 1
|
7天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
35 0
|
7天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
21 0
|
8天前
|
Python
Python金融应用编程:衍生品定价和套期保值的随机过程
Python金融应用编程:衍生品定价和套期保值的随机过程
24 0
|
9天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
51 0
|
9天前
|
机器学习/深度学习 算法 定位技术
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
23 1
|
13天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。