• 一、初识ArcPy
  • 1.1 什么是ArcPy
  • 1.2 在ArcMap中打开Python窗口
  • 1.3 ArcMap中Python程序的实现
  • 1.3.1 Python版本的查看与安装路径
  • 1.3.2 ArcPy简单应用示例
  • 1.3.3 ArcMap中Python常用设置
  • 1.4 练习
  • 二、通过ArcPy查看地图文档信息
  • 2.1 地图文档的认识
  • 2.2 获取和查看当前地图文档
  • 2.3 获取和查看文件系统的地图文档
  • 2.4 查看与修改地图文档的所有属性
  • 2.5 地图文档属性的保存
  • 2.6 提供所有版本的地图文档


一、初识ArcPy

1.1 什么是ArcPy

ArcPy是建立在地理处理框架上的Python包,这里主要是基于Python2来实现的。ArcPy提供了有用、高校的方式,用来完成空间数据管理、空间分析、数据转换和制图自动化的功能。

在ArcGIS的Python窗口中的功能非常强大,有智能提示,自动完成,通过拖放生成代码(工具箱拖放、数据拖放、图层拖放)。

ArcPy学习中主要使用的中英文单词

英文

中文

IDE (Integrated Development Environment)

集成开发环境

IDLE (Integrated Development and Learning Environment)

集成开发和学习环境

Geoprocessing

地理处理

Save As

另存为

count

数量

exists

存在

format

格式

clear

清除

theme

主题

1.2 在ArcMap中打开Python窗口

方法一

python安装arcpy模块 arcpy python_字符串

方法二

python安装arcpy模块 arcpy python_Python_02

1.3 ArcMap中Python程序的实现

1.3.1 Python版本的查看与安装路径

在ArcMap中编写第一个Python代码

python安装arcpy模块 arcpy python_Python_03

代码的保存

python安装arcpy模块 arcpy python_字符串_04

查看arcpy的帮助

python安装arcpy模块 arcpy python_Python_05

查看Python的版本

import sys
print(sys.version)
print(sys.version_info)

查看Python解释器所在路径

import sys
print(sys.exec_prefix)
print(sys.executable)

python安装arcpy模块 arcpy python_相对路径_06

1.3.2 ArcPy简单应用示例

判断空间数据是否存在

arcpy.Exists(filename) # 判断空间数据是否存在

python安装arcpy模块 arcpy python_python安装arcpy模块_07

获取矢量要输的数量

通过拖放工具和数据自动生成代码

python安装arcpy模块 arcpy python_相对路径_08

1.3.3 ArcMap中Python常用设置

修改背景色等

python安装arcpy模块 arcpy python_python_09

常用的快捷键

快捷键

功能

F1

查看帮助

F2

语法检查

Shift + 回车键

多行输入

Control + 回车键

多行输入

向上键

输入历史:上一条记录

向下键

输入历史:下一条记录

鼠标右键

更多功能

在编写Python脚本时,可以随时按F2进行语法检查。最好在运行前先通过F2检查通过后,再按Enter运行。

1.4 练习

查看打开图层的要素个数

python安装arcpy模块 arcpy python_Python_10

查看shp文件中的要素个数

python安装arcpy模块 arcpy python_字符串_11

二、通过ArcPy查看地图文档信息

2.1 地图文档的认识

地图文档(.mxd)是在ArcMap中使用且以文件形式存储在文件系统或数据库的地图,称为ArcMap文档或mxd
地图文档的内容:

  • 相关地图图层、页面布局和所有其他地图属性的规范
  • 地图中所使用地理信息的显示属性(地图图层的属性和定义、数据框和打印地图的布局等)
  • 地图文档在ArcMap中保存、以此来重复使用和共享工作内容
  • 通过双击某个地图文档会将其作为新的ArcMap会话打开

地图文档相关术语

英文

中文

英文

中文

map

地图

author

作者

mapping

制图

summary

小结

document

文档

description

描述

mapDocument

地图文档

default

默认

properties

属性

relative

相对

current

当前

path

路径

title

标题

relativepaths

相对路径

ArcMap中查看地图文档属性

python安装arcpy模块 arcpy python_字符串_12

2.2 获取和查看当前地图文档

通过ArcPy代码来引用并查看打开当前地图文档属性
获取地图文档流程

  • ArcMap先打开相关地图文档文件
  • 导入arcpy包和制图模块arcpy.mapping
  • 通过mxd变量,获取当前地图文档信息
# 导入ArcPy包
import arcpy 
# 导入制图模块
import arcpy.mapping as mp
# 查看地图文档
mxd = mp.MapDocument("current")

查看地图文档属性

  • 通过mxd对象的属性成员,查看对应的属性,重要的属性有title、author和relativePaths
mxd.title # 查看标题信息,返回u'',u为Unicode编码,''为字符串信息
mxd.author # 查看作者信息,返回u'',u为Unicode编码,''为字符串信息
mxd.relativePaths # 查看是否保存为相对路径,返回True(是)或者False(否)

python安装arcpy模块 arcpy python_字符串_13

2.3 获取和查看文件系统的地图文档

设置地图文档对应文件的路径,通过mxd对象的属性成员,查看对应的属性,与当前地图文档的区别在于就是将current换为文档的路径.mxd即可。

# 导入ArcPy包
import arcpy 
# 导入制图模块
import arcpy.mapping as mp
# 查看地图文档
file = ur"文件名.mxd" # 如果有中文则要加u,无中文则不需要
mxd = mp.MapDocument(file)
mxd.title # 查看标题信息,返回u'',u为Unicode编码,''为字符串信息
mxd.author # 查看作者信息,返回u'',u为Unicode编码,''为字符串信息
mxd.relativePaths # 查看是否保存为相对路径,返回True(是)或者False(否)

python安装arcpy模块 arcpy python_字符串_14


python安装arcpy模块 arcpy python_python安装arcpy模块_15


python安装arcpy模块 arcpy python_python安装arcpy模块_16

2.4 查看与修改地图文档的所有属性

相关API介绍:

dir(object)
# 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
# 如果参数包含方法__dir__(),则该方法被调用,否则该方法最大限度的收集参数信息

str.startswith(str,beg=0,end=len(str))
# 用于检查字符串是否是以指定子字符串开头,返回True(是)、False(否)
# 如果beg和end指定特定的值,则在指定范围内检查

hasattr(object,name)
# 用于判断对象是否包含对应的属性

getattr(object,name[,default]) 
# 用于返回一个对象的属性值

地图文档属性的修改,如果有中文要变为u"name"

# 修改作者信息
mxd.author = "name"
# 修改标题信息
mx.title = "name"
# 修改单位信息
mxd.credits = "name"
# 修改是否用相对路径
mxd.relativePaths = False 
# 其它的信息也可通过此方式修改
# 同时查询多个已知属性名称,通过放入列表中然后遍历列表获取
attrs = ["author","title","credits"]
for i in attrs:
	print(i,getattr(mxd,i))

python安装arcpy模块 arcpy python_python安装arcpy模块_17

获取不含有特殊对象的所有属性,以下划线开头的为ArcMap的特殊属性

# 具体实现在2.3节的基础上
# dir(mxd)获取地图文档的所有属性,通过for循环对每一个属性来进行判断
for attr in dir(mxd):
	# 检查是否以下划线开头,如果是以下划线开头则说明是特殊的属性(成员),就不进行打印
	# 同时判断地图文档是否有这个属性,如果不是这个属性则不进行打印
	if not attr.startswith("_") and hasattr(mxd,attr):
		print(attr,getattr(mxd,attr))

python安装arcpy模块 arcpy python_python安装arcpy模块_18

2.5 地图文档属性的保存

# 地图文档保存API,会覆盖原来的属性值
MapDoucment.save()
# 地图文档另存为API,不会覆盖之前的内容,{version}尽量低版本,也可不添加版本号
MapDoucment.saveACopy(filename,{version})

确认是否更新

  • 打开保存的地图文档,手动查看地图文档属性即可,确认filePath,title,author,dateSaved,relativePaths是否更新

python安装arcpy模块 arcpy python_python_19


python安装arcpy模块 arcpy python_python_20

2.6 提供所有版本的地图文档

代码如下

# 用一个列表来保存需要另存为的地图文档版本
version = ["10.0","10.1","10.2","10.3","10.4","10.5","10.6"]
path = r"D:\具体路径"
for V in version:
	filepath_name = path + r"\保存的名称" + v + ".mxd" 
	mxd.saveAcopy(filepath_name,v)

python安装arcpy模块 arcpy python_Python_21