分享

GIS_Arcpy.mapping在制图自动化中的使用

 昵称QAb6ICvc 2013-01-31

GIS_Arcpy.mapping在制图自动化中的使用

已有 774 次阅读 2012-1-21 12:54 |个人分类:GIS|系统分类:科研笔记|关键词:Arcpy.mapping automatic

今天学习了在ArcGIS10中如何使用Python实现制图自动化的课程。学完课程之后发现,其实很多在我目前的应用水平上还用不上这么高级的东西。其实也能,我做的一些组图就可以。但是这毕竟仅仅是修改一些参数。如果想深入使用,还需要进一步学习一些其他的函数功能。

现在对课程中所涉及到的Python程序和相应的函数做一个总结,为以后的学习提供参考,同时也复习相关的内容。

主要内容是将如何使用ArcPy Mapping这个模块。模块的主要作用是使地图的管理和输出自动化。也就是说通过Python编程来流畅操作大量数据的制图和输出过程,而不需要手动单独操作。例如,更新或者修正数据源, 打开和分析地图文件并且更新元数据等。

1.      管理地图和图层

arcpy.mapping

这可以理解为一个编程环境,也可以理解为一个总的函数功能,下面有许多子功能。通过使用它,可以用来调用地图数据的各个属性以及制图元素(layer, layout element

2.      第一步:设定工作图层 where to run your script, or can be understood as which map document you will work with

基本代码:

“mxd = arcpy.mapping.MapDocument (“current”)”

这个代码命名了一个新变量 mxd”,然后使用MapDocument这一函数将current,也就是当前的图层赋值给这个变量。

如果不想用当前图层,可以使用目标图层的地址,代替current

例如:

“mxd = arcpy.mapping.MapDocument(r“C:\Maps\city.mxd”)”

这里要注意的是要在地址前面加上个字母“r”。原因是“\”在python中有特殊的含义,加上r后可以使python忽略这一符号,而将其按地址来读取。

MapDocument是一个对象函数,他将是变量能够处理地图的属性。通常,使用这个函数对变量赋值是编程的第一行,因为这将使得变量可以使用arcpy.mapping中的许多子函数。下面将看到。而通常最后两行是保存和删除变量(del mxd)。删除的原因有两个,一个是避免之后如果对不同的地图文件使用变量名,有可能引起错误。另外,如果想给目前的地图文件附以其他名,需要从当前变量名中解放出来。

使用arcpy.mapping的目的是使编程简单。在用他调用地图文件(map document)的时候,需要先建立好地图文件,包括里面的指北针等,都需要先建立好。

3.      修改名字:

mxd.author=”GIS Department””修改之后,可以在data frame的属性表中看到效果。

mxd.save()

4.      修改地址和数据源(layer data sources

“path =  “C:\Student\Mapscripting2\”” (这相当于建立了一个新的变量,用该代替具体的地址,作用后面会体现)

“mxd.replaceWorkspaces(path+r”\cityof\Westerville.mdb”, “ACCESS_WORKSPACE”, path+r”\westervill.gdb”, “FILEGDB_WORKSPACE”)”

(这个函数有四个必须的参数,old_workspace_path, old_workspace_type, new_workspace_path, new_workspace_type

这里就体现了使用path这个新参数的意义,如果新的工作区域和就得工作区域不在一个文件夹里面,需要两个path variable.

mxd.saveACopy(“C:\Student\Mapscripting\newname.mxd”)

这里面有两种不同的保存选择,上面是直接保存,这个是保存一个新的。

5.      修改属性(properties

显示Dataframe里面图层的列表:

ListDataFrames”返回一个所有DataFrame里面图层的Python列表。

 “mxd =  arcpy.mapping.MapDocument(“Current”)”

“df = arcpy.mapping.ListDataFrames(mxd)[1]”

“print df.name”

后面的1是一个从0开始技术的指数,表示的是所需要参数的个数,比如是第二个,那就用1.

这个是将DataFrame命名,但是如果是Dataframe中的某一个图层,需要用到:

ListLayers

她有三个参数:map_document, {wildcard}, {data_frame}

比如,为了将West这一Dataframe中的df这一图层赋值给Lyr

lyr=arcpy.mapping.ListLayers(mxd,””,df)

关闭图层: lyr.visible=False

为了看到执行的效果,需要使用:arcpy.RefreshActiveView()arcpy.RefreshTOC()

6.      For loop应用

如果不知道某一个图层所在的DataFrame,就用一个循环来解决;

“for lyr in arcpy.mapping.ListLayers(mxd):”

“if lyr.name==”Hydrography””

“lyr.name=”Lakes””

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章