问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ArcGIS 应用Python中arcpy模块

发布网友 发布时间:2022-04-18 18:50

我来回答

3个回答

懂视网 时间:2022-04-18 23:11

出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要。arcpy.mapping就是ArcGIS里的出图模块,能快速完成一个出图工具。

arcpy.mapping模块里常用的类有MapDocument、DataFrame、Layer、DataDrivenPages和TextElement。

MapDocument类是地图文档(.mxd文件)对应的类。初始化参数是一个字符串,一般是.mxd文件的路径:

 mxd=arcpy.mapping.MapDocument(r"F:GeoDataChinaAreaChinaVector.mxd")

DataFrame类用于操作地图内的Data Frame(即下图的Layers),能够控制地图的范围、比例尺等。用arcpy.mapping.ListDataFrames(map_document, {wildcard})函数获取。

df= arcpy.mapping.ListDataFrames(mxd)[0]


Layer类用于操作具体的图层。能够控制图斑的样式、可见性等。可以用.lyr文件的路径初始化,也可以通过arcpy.mapping.ListLayers(map_document_or_layer, {wildcard}, {data_frame})函数获取。

lyr1=arcpy.mapping.Layer(r" F:GeoDataChinaAreaProvince.lyr")

df.addLayer(lyr1)

lyr2=arcpy.mapping.ListLayer(mxd,"",df)[0]

DataDrivenPages类需要配合ArcMap中的Data Driven Pages工具使用。用于一个矢量文件内的全部或部分图斑每个出一张图的情况。

TextElement类用于操作地图上的文字,比如图名、页数。通过arcpy.mapping.ListLayoutElements (map_document, {element_type}, {wildcard})函数获取。

txtElm=arcpy.mapping.ListLayoutElements(mxd,"TEXT_ELEMENT")[0]

常见的出图模式有两种:一个矢量文件里每个图斑出一张图,一个文件夹下每个矢量文件出一张图。

每个图斑出一张图:

这种情况有Data Driven Pages工具配合最好。打开ArcMap的Customize->Toolbars->Data Driven Pages,设置好图层、名称字段、排序字段、显示范围和比例尺,保存地图。

# coding:utf-8

import arcpy

 

mxd=arcpy.mapping.MapDocument(r"F:GeoDataChinaAreaChinaVector.mxd")

for pageNum in range(1,mxd.dataDrivenPages.pageCount):

 mxd.dataDrivenPages.currentPageID=pageNum

 mapName=mxd.dataDrivenPages.pageRow.getValue(mxd.dataDrivenPages.pageNameField.name)

 print mapName

 arcpy.mapping.ExportToPNG(mxd,r"F:GeoDataChinaAreaProvince"+mapName+".png")

print 'ok'

一个文件夹下的每个矢量文件出一张图:

# coding:utf-8

import arcpy

import os

 

def GetShpfiles(shpdir):

 shpfiles=[]

 allfiles=os.listdir(shpdir)

 for file in allfiles:

  if os.path.isfile(file):

  if file.endswith('.shp'):

   shpfiles.append(file)

  else:

  shpfiles.extend(GetShpfiles(file))

 return shpfiles

 

allshps=GetShpfiles(r"F:GeoDataChinaAreaProvince")

mxd=arcpy.mapping.MapDocument(r"F:GeoDataChinaAreaChinaVector.mxd")

lyr=arcpy.mapping.ListLayer(mxd)[0]

for shp in allshps:

 paths=os.path.split(shp)

 print paths[1]

 lyr.replaceDataSource(paths[0],"SHAPEFILE_WORKSPACE",paths[1])

 arcpy.mapping.ExportToPNG(mxd,r"F:GeoDataChinaAreaProvince"+paths[1]+".png")

print 'ok'

热心网友 时间:2022-04-18 20:19

涉及到读取要素属性内容其实就是访问要素,要用到arcpy.da里的seachcursor方法,也就是arcpy里的游标,seachcursor将要素图层所有要素(若有选择会只对选择部分起效)返回游标,利用for in 循环可以遍历每一个要素,利用row[0....n]的就可以读取各个要素的字段0一直到字段n的属性值。

热心网友 时间:2022-04-18 21:37

需要用Arcpy的代码么?
应该不难,直接读取字段属性就可以了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样备份iPhone的照片? 奇迹的战士怎样加点? 奇迹私服战士8W点的怎么加点PK厉害 房屋装修建材的选购家装建材种类有哪些 家装建材都包含什么 家装应该买什么东西 劓刑简介 电信手机停机保号怎么办理? 定胆定胆方法 3d定胆方法有哪些? 下载陌陌极速版登陆密码忘了怎么办? 没有粉碎机怎么让芝麻磨成粉 粉碎机怎么磨芝麻 没有搅拌机芝麻如何弄粉碎 中矿配债什么时间可以卖出去? 用微信支付宝绑定银行卡转账给别人,去银行能不能查出对方是谁? 用微信转账给别人,支付宝账单里有这笔钱吗!能查出来吗 2022初级会计考试延迟,中级会计考试会延迟吗? 淘宝直播顾客竞拍顺序以公屏为主吗? 请问今年海南教资考试大概会在什么时候,考试地点是自选的嘛? 头一天不洗,就头顶哪里有味道啊,头皮有点油的,但是头发好像干的。怎么回事啊,有什么办法解决啊。 海南海口市幼师资格证在哪个地方报名?几月份报名? 头发干燥的解决办法 2012海南海口教师资格证报名时间是什么时候? 头发干燥 写事的作文,5个要好的,我给你好的 野蛮人大作战手游安卓版 下载 哪里有 十大品牌排行榜 重生野蛮人txt全集下载 野蛮人的文明的txt全集下载地址 陌陌极速版下载之后没办法删除是什么原因? 大庆哪里能做影视后期、影视合成、动画、flash短片、课件等,要做的好的? 有学影视后期制作的吗?我最近在学这个,可以拷一份课件给我吗?谢谢,拜托啦! 影视方面的请进来看看! 求艺术类院校影视后期制作方向的课程表及所用教材,如有课件继续加分~~~~~ 请高手帮我翻译一下课程名称啊,谢谢拉!!! 关于影视制作的问题?谢谢! 国寿鑫福年年忽悠人 国寿鑫福年年这个险种怎么样?到保险期满反本金吗 办个小型保鲜膜加工厂需要办哪些手续和证件? 保鲜膜工厂的会议记录可以怎么写啊? 请问一般什么样的工厂或者公司会用到一次性手套或者垃圾袋,保鲜袋或者塑料桌布呢? 有没有什么好的家居用品工厂可以推荐啊? 洗衣机皮带松了,在什么位置紧皮带???28382 工厂制苹果醋的做法 问一下沐风单向与多向有什么区别,有使用过的大神解答下吗? 微信订酒店0元下单离店付款说我账户有其他进行中的支付分订单是什么意思? 为什么朋友微信定制酒店我能收到信息 现在一千多快的全网通智能机哪个配置高,好用又实惠? 迪士尼公主还活着吗?