基于arcpy实现工作中需要实现功能的经验和代码总结:

不知道从哪儿总结起,就按时间顺序整理吧。

关键词:arcgis,python,批量,字段,地图发布

 1.给不同的要素添加不同的批量字段(例如:给“阀门”要素添加“本点号”、“点类型”、“状态”等字段):

1.1直接在arcmap的python窗口中写入脚本逐个添加,一次性运行:

import arcpy,os

arcpy.AddField_management("阀门","本点号","TEXT","","","","","NULLABLE","NON_REQUIRED")

arcpy.AddField_management("阀门","点类型","TEXT","","","","","NULLABLE","NON_REQUIRED")

arcpy.AddField_management("阀门","状态","TEXT","","","","","NULLABLE","NON_REQUIRED")

1.2利用ARCToolbox工具,新建一个工具,设置好参数,然后导入脚本:

参数设置:

打开界面:

脚本:

#导入arcpy和os模块

import arcpy,os

layerList=arcpy.GetParameterAsText(0).split(";")

for lyr in layerList:

arcpy.AddField_management(lyr,"本点号","TEXT","","","","","NULLABLE","NON_REQUIRED")

arcpy.AddField_management(lyr,"点类型","TEXT","","","","","NULLABLE","NON_REQUIRED")

arcpy.AddField_management(lyr,"口径","TEXT","","","","","NULLABLE","NON_REQUIRED")

arcpy.AddField_management(lyr,"状态","TEXT","","","","","NULLABLE","NON_REQUIRED")

2.多要素添加相同的批量字段:

2.1利用ARCToolbox工具,新建一个工具,设置好参数,然后导入脚本:

参数设置:

打开界面:

脚本:

import arcpy,os

#定义变量

#对应的第一个“输入表”的参数,将多个图层用“;”分开

layerList=arcpy.GetParameterAsText(0).split(";")

#对应的第二个“字段名”的参数,后面的依次类推

fieldName=arcpy.GetParameterAsText(1)

fieldType=arcpy.GetParameterAsText(2)

fieldPrecision=arcpy.GetParameterAsText(3)

fieldScale=arcpy.GetParameterAsText(4)

fieldLength=arcpy.GetParameterAsText(5)

fieldAlias=arcpy.GetParameterAsText(6)

fieldIsNullable=arcpy.GetParameterAsText(7)

fieldIsRequired=arcpy.GetParameterAsText(8)

fieldDomain=arcpy.GetParameterAsText(9)

#遍历每一个表,将传入工具箱中有关字段的参数传入AddField_management()函数中

for lyr in layerList:

arcpy.AddField_management(lyr,fieldName,fieldType,fieldPrecision,fieldScale,fieldLength,fieldAlias,fieldIsNullable,fieldIsRequired,fieldDomain)

3.批量发布*.mxd地图文档(发布之前确保地图文档符合发布的要求):

3.1将要发布的批量地图文档放在同一文件夹下,然后在arcpy的窗口中导入脚本:

脚本:

import arcpy.mapping as mapping

import os

#地图文档存放的路径

folder=r‘C:\Users\46243\Desktop\PublishTest‘

#遍历每一个地图文档

files=os.listdir(folder)

for f in files:

service=f.replace(".mxd","")

mxdpath=os.path.join(folder,f)

sddraft=mxdpath.replace(".mxd",".sddraft")

mxd=mapping.MapDocument(mxdpath)

mapping.CreateMapSDDraft(mxd,sddraft,service)

analysis=mapping.AnalyzeForSD(sddraft)

sd=mxdpath.replace(".mxd",".sd")

insever="GIS 服务器/myServerConnection"

if analysis[‘errors‘]=={}:

arcpy.StageService_server(sddraft,sd)

arcpy.UploadServiceDefinition_server(sd,insever)

else:

print(analysis[‘errors‘])

 

(注意地图文档用英文命名,用中文会报错,应该是字符编码导致的问题)

3.2利用ARCToolbox工具,新建一个工具,设置好参数,然后导入脚本:

参数设置:

打开界面:

脚本:

import arcpy.mapping as mapping

import os

#传入变量

mxdPaths=arcpy.GetParameterAsText(0).split(";")

insever=arcpy.GetParameterAsText(1)

for mxdpath in mxdPaths:

sddraft=mxdpath.replace(".mxd",".sddraft")

f=mxdpath.split("\\")[-1]

service=f.replace(".mxd","")

mxd=mapping.MapDocument(mxdpath)

mapping.CreateMapSDDraft(mxd,sddraft,service)

analysis=mapping.AnalyzeForSD(sddraft)

sd=mxdpath.replace(".mxd",".sd")

if analysis[‘errors‘]=={}:

arcpy.StageService_server(sddraft,sd)

arcpy.UploadServiceDefinition_server(sd,insever)

else:

print(analysis[‘errors‘])

未完待续......

(模型构建器里的迭代器也是个实现批量处理的好东西,等下次再写这个东西。)

原文地址:https://www.cnblogs.com/hongdanni/p/8328303.html

时间: 2024-10-05 11:10:06

基于arcpy实现工作中需要实现功能的经验和代码总结:的相关文章

分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据

原文:分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前有一段经历 在月初的时候这个数据库曾经置疑过,启动不起来 Could not redo log record (163041:116859:5), for transaction ID (0:-1175226963), on

我实践工作中的一些软件性能测试经验分享

 首先,对所有的业务都进行性能测试是不可行,也是不现实的. (1)选取业务量较大的业务,比如某电商平台明天上午10点有个特卖会,那么这个特卖会的业务用户访问量较大,所以在上线之前要做好充分的测试验证,才能决定是否上线. (2)需要重点关注的业务,比如对应电子商务平台的用户下单,提交订单,如果在同样的时间段内某个平台生成的订单数量越少,那么对公司来说是不可容忍的. (3)选取业务量不大,但是该业务消耗系统资源的业务. (4)把用户操最常用,最频繁的操作业务拿来做测试(比如对于GIS地图的放大,

近期工作中应用Python的一些经验总结

本文由Markdown语法编辑器编辑完成. 1. Python 在来新公司前,也间断地接触过Python编程,比如医学影像处理的图像库VTK就已经有Python的实现,Paraview也可以开启Python的监测,将用户在界面上的操作录制成Python脚本,供之后再进行重复调用.在人工智能领域,Python更是应用广泛,各种深度学习的框架,都是用Python语言撰写. 进入了新公司后,除了前端是用JS实现外,其余的后端语言都是用Python实现.因此,我在近一个月的工作中,也是在边学边用Pyth

【测试理解】基于个人工作中的阶段性测试理解

今日整理了一些工作内容,具体内容无法发布上来,但是其中对于测试的理解相对于之前有一些新的认知~ 其中最底部为:质量和效率,保障质量,提升效率,是工作中的两个重要方向,质量是必须保证,效率是需要提升 基于以上两方面目标,会做出一个更细的划分,其中质量可从几个角度进行覆盖:服务稳定性.功能有效性.用户体验性等几个方面,效率上从几个方面进行覆盖:项目推进.人力安排.平台创新及优化 基于细化分析之后,结合项目情况,则需要清晰:项目架构技术实现.项目知识(业务发现面向客户.业务形态,覆盖端型,所处阶段等)

深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)

在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对第一篇中,端口转发功能的样例代码,all-in-one http service 风格的实现. 核心功能: find_router_ip = "ip netns exec qrouter-{router_id} ifconfig |grep -A1 qg- | grep inet | awk '{{

实现基于NTP协议的网络校时功能

无论PC端还是移动端系统都自带时间同步功能,基于的都是NTP协议,这里使用C#来实现基于NTP协议的网络校时功能(也就是实现时间同步). 1.NTP原理 NTP[Network Time Protocol]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击. 先介绍下NTP数据包格式(其标准化文档为RFC2030,NTP版本

分享一个自己用的基于mvc编程工作管理

前言: 最近在家没事学习下mvc,正好把以前用webform写的一个帮助自己编码的工具重构成了mvc,另外根据自己的编程工作感悟添加了公司常用软件维护 ,数据库操作记录这些新功能. 技术没什么高深的技术,就是mvc+jquery easyUi+简单的三层,生成文档的模板引擎用的Razor. 主要还是解决沟通成本太高的问题,都是根据工作中遇到的问题慢慢解决的,至少很多功能可以解决小型软件团队很多流程问题,自己摸索真是又痛苦又快乐.相信也有很多朋友和我一样没有去过大型软件公司,很多问题只能看别人的文

深入理解iOS开发中的BitCode功能

前言 做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而编译失败的的项目都有一个共同点,就是链接了第三方二进制的库或者框架,而这些框架或者库恰好没有包含bitcode的东西(暂且称为东西),从而导致项目编译不成功.所以每当遇到这个情况时候大部分人都是直接设置Xcode关闭bitcode功能,全部不生成bitcode.也不去深究这一开关背后隐藏的原理.中枪

工作中接触到的框架记录了解【网络文章翻译】

Backbone.js 优点:强大的社区和大量的势头. Underscore.js也是一个伟大的框架. 缺点:缺乏坚强的抽象和令人不满意.整个框架是出奇的轻巧,导致大量的样板.一个程序越大,这情况就越明显. Knockout.js 是一个MVVM框架,从它的支持者受到的好评很多.它强调声明UI绑定和自动更新用户界面. 优点:绑定的支持.大文件和惊人的导师制. 缺点:尴尬的绑定语法,缺乏坚实的视图组件层次结构.我想能够轻松地重复使用的组件.我也觉得像识别为MVVM框架是有害的.几乎没有这些框架的任