Arcgis常用功能 Python脚本

对一些常用功能的python脚本进行总结,方便以后直接调用。

1. 根据属性值删除行

arcpy.MakeFeatureLayer_management(outputpath, "parcels_lyr")#根据输入要素类或图层创建临时图层,如果不将此图层保持到磁盘或地图文档,该图层在会话结束后将不会继续存在。arcpy.SelectLayerByAttribute_management("parcels_lyr", "NEW_SELECTION", '"field" < 4')#按属性表选择图层arcpy.DeleteRows_management("parcels_lyr") #删除上一级选定的行

官方链接

2. 添加字段

try:arcpy.AddField_management(in_table, "field_name", "field_type")
except:field_namearcpy.DeleteField_management(in_table, "field_name")arcpy.AddField_management(in_table, "field_name", "field_type")

官方链接
字段类型
TEXT —任何字符串。
FLOAT — 在 -3.4E38 和 1.2E38 之间的小数。
DOUBLE — 在 -2.2E308 和 1.8E308 之间的小数。
SHORT — 在 -32,768 和 32,767 之间的整数。
LONG — 在 -2,147,483,648 和 2,147,483,647 之间的整数。
DATE —日期和/或时间。
BLOB —长二进制数序列。您需要一个自定义的加载器、查看器或第三方应用程序将这些项加载到 BLOB 字段中或者查看 BLOB 字段的内容。
RASTER —栅格影像。可以存储 ArcGIS 软件支持的所有栅格数据集格式,但强烈建议您仅使用小影像。
GUID —全局唯一标识符。

3 .计算要素面积、长度

try:arcpy.AddField_management(in_table, "field_name", "field_type")
except:field_namearcpy.DeleteField_management(in_table, "field_name")arcpy.AddField_management(in_table, "field_name", "field_type")
express = "!SHAPE.area@squaremeter!" # !shape.length@kilometers!
arcpy.CalculateField_management (in_table, "field_name", express, "PYTHON_9.3") #计算字段

官方链接
面积测量单位关键字:
ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS
英亩 | 公亩 | 公顷 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方千米 | 平方米 | 平方英里 | 平方毫米 | 平方码 | 平方地图单位
线性测量单位关键字:
CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
厘米 | 十进制度 | 分米 | 英尺 | 英寸 | 千米 | 米 | 英里 | 毫米 | 海里 | 磅 | 未知 | 码

4. 将图层文件添加到mxd中

不设置符号系统

tempmxd = r"D:\xxx\xxx\temp.mxd" #空的mxd的路径
mxd = arcpy.mapping.MapDocument(tempmxd)
df = arcpy.mapping.ListDataFrames(mxd)[0]
layer = arcpy.mapping.Layer(inputfiles) #
arcpy.mapping.AddLayer(df, layer) #将图层文件添加到地图文档中
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
mxd.saveACopy(resultMxd)

设置符号系统

tempmxd = r"D:\xxx\xxx\xxx.mxd" #空的mxd的路径
layerFile = r"D:\xxx\xxx\xxx.lyr" #图层文件
mxd = arcpy.mapping.MapDocument(tempmxd)
layer = arcpy.mapping.Layer(inputfiles)
df = arcpy.mapping.ListDataFrames(mxd)[0]
arcpy.mapping.AddLayer(df, layer)
layer1 = arcpy.mapping.ListLayers(mxd, "name", df)[0]
arcpy.ApplySymbologyFromLayer_management(layer1, layerFile)
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
mxd.saveACopy(resultMxd)

官方链接

5. 遍历读取dbf表

#pip install dbfread
from dbfread import DBF
table = DBF(in_table,load=True)
for record in table:bj = record["field_name"]
print(bj)

6. txt,csv, xls 转点要素

import arcpy
import sys
import pandas as pd
import os
from arcpy import env
from arcpy.sa import *
IN_DF= "C:\xxx\xxxx.txt"
MIDF="C:\xxx\xxxx.shp"
def xlsx_to_csv_pd(xlsxpath,csvpath):data_xls = pd.read_excel(xlsxpath, index_col=0)data_xls.to_csv(csvpath, encoding='utf-8')
if IN_DF.endswith(".txt") or IN_DF.endswith(".csv"):pass
if IN_DF.endswith(".xls") or IN_DF.endswith(".xlsx"):xlsx_to_csv_pd(IN_DF,in_df_csv)IN_DF = in_df_csv
try:arcpy.Delete_management(MIDF)createFC = arcpy.CreateFeatureclass_management(env.workspace, MIDF, "POINT", "", "", "")
except:  createFC = arcpy.CreateFeatureclass_management(env.workspace, MIDF, "POINT", "", "", "")
arcpy.AddField_management(env.workspace + "/" + MIDF, "YEAR", "SHORT" )
arcpy.AddField_management(env.workspace + "/" + MIDF, "MONTH", "SHORT" )
arcpy.AddField_management(env.workspace + "/" + MIDF, "DAY", "SHORT" )
arcpy.AddField_management(env.workspace + "/" + MIDF, "DF", "SHORT" )
arcpy.AddField_management(env.workspace + "/" + MIDF,  "lon", "FLOAT" )
arcpy.AddField_management(env.workspace + "/" + MIDF,  "lat", "FLOAT" )
iflds = ["YEAR","MONTH","DAY","DF", "lon","lat", "SHAPE@XY"]
iCur = arcpy.da.InsertCursor(env.workspace + "/" + MIDF, iflds)
count = 1
for ln in open(IN_DF, 'r').readlines():lnstrip = ln.strip()if count > 1:dataList = ln.split(",")y=dataList[4]m=dataList[5]d=dataList[6]j=dataList[7]lat = dataList[2]lon = dataList[1]ivals = [y,m,d,j, float(lon), float(lat),(float(lon), float(lat))]iCur.insertRow(ivals)count += 1
print('Finish Projection:',MIDF)

7. 汇总统计数据

类似于融合,但是只对表操作,运行速度比融合快

arcpy.Statistics_analysis(out_feature_class, out_feature_rr,[["area", "SUM"]],["CTJCBM"])

官方链接

8. 字段计算器——随机赋值

import random
def fa():num = ["好(很湿润)","较好(湿润)","较差(半干旱)","差(干旱)"]    a = random.choice(num)return a

9. 字段计算器——根据别的字段,赋值

def fun(a):if  a=="01" :return "一等"elif a=="02" :return "二等"elif a=="03" :return "三等"elif a=="04" :return "四等"elif a=="05" :return "五等"elif a=="06" :return "六等"     elif a=="07" :return "七等"elif a=="08" :return "八等"elif a=="09" :return "九等"elif a=="10" :return "十等"elif a=="11" :return "十一等"elif a=="12" :return "十二等"elif a=="13" :return "十三等"elif a=="14" :return "十四等"else :return "十五等"

10. 返回表的总行数

arcpy.management.GetCount(os.path.join(outputpath,newgdbname+".gdb",'dataset',"topo_error_point"))[0]# == "0"

11. 拓扑检查

arcpy.CreateFileGDB_management(outputpath, newgdbname+".gdb")#创建文件地理数据库
arcpy.CreateFeatureDataset_management( os.path.join(outputpath,newgdbname+".gdb"), 'dataset')#创建要素数据集
arcpy.FeatureClassToGeodatabase_conversion(inputfile, os.path.join(outputpath,newgdbname+".gdb",'dataset'))#要素类至地理数据库
arcpy.CreateTopology_management(os.path.join(outputpath,newgdbname+".gdb",'dataset'), "Topology")#创建拓扑
arcpy.AddFeatureClassToTopology_management(os.path.join(outputpath,newgdbname+".gdb",'dataset',"Topology"),os.path.join(outputpath,newgdbname+".gdb",'dataset',Gdbname), 1, 1)  #向拓扑中添加要素类
arcpy.AddRuleToTopology_management(os.path.join(outputpath,newgdbname+".gdb",'dataset',"Topology"), topurule, os.path.join(outputpath,newgdbname+".gdb",'dataset',Gdbname))#添加拓扑规则
arcpy.ValidateTopology_management(os.path.join(outputpath,newgdbname+".gdb",'dataset',"Topology"))#验证拓扑
arcpy.ExportTopologyErrors_management(os.path.join(outputpath,newgdbname+".gdb",'dataset',"Topology"),os.path.join(outputpath,newgdbname+".gdb",'dataset'), "topo_error") #错误导出

12 .不重叠部分导出

arcpy.SymDiff_analysis("climate.shp", "elevlt250.shp", "C:/output/symdiff.shp", "ALL", 0.001)

官方链接

13. 遍历属性表

cursor = arcpy.da.SearchCursor(in_table, ["field1","field2"])
for row in cursor:    print(row[0],row[1])
del cursor,row

14. 创建sde数据库连接(以oracle为例)

!!!在运行连接sde数据库相关的脚本时,要使用64位的python

hostIP = "#########" #数据库ip 地址
orcl = "*****"
oraUserName = "*******"# 数据库用户的账户
oraPassword = "******" # 数据库用户的密码
oraSchema = "******"  # oracle的用户方案
oraOutName = "test" # 输出的oracle连接的名字
instance = hostIP + "/" + orcl  #实例
oraOutName = oraOutName + ".sde"
sdeDir = os.path.join(output, oraOutName)
if os.path.exists(sdeDir):conn = sdeDir
else:conn = arcpy.CreateDatabaseConnection_management(output, oraOutName, 'ORACLE', instance, "",oraUserName, oraPassword, schema=oraSchema)

15. 获取矢量图层四至

desc = arcpy.Describe(inputfile)
extent = desc.extent
xmin = extent.XMin
xmax = extent.XMax
ymin = extent.YMin
ymax = extent.YMax
#获取坐标系
desc.spatialReference.name
print(xmin, xmax, ymin, ymax)

16.添加字段并赋值字符串

try:arcpy.AddField_management(inputfile, "id", "TEXT")
except:arcpy.DeleteField_management(inputfile, "id")arcpy.AddField_management(inputfile, "id", "TEXT")
arcpy.CalculateField_management(inputfile, "id" ,"'eeeee'", "PYTHON_9.3")

17. cad转shp

# 创建个人地理数据库
arcpy.CreateFileGDB_management(outputpath, topoGdbname + ".gdb")
# 创建数据集
arcpy.CreateFeatureDataset_management(os.path.join(outputpath, topoGdbname + ".gdb"), SaniF)
#定义坐标系
sr = arcpy.SpatialReference(r'xxxx.prj')
#CAD 至地理数据库
arcpy.CADToGeodatabase_conversion(inputfile, os.path.join(outputpath, topoGdbname + ".gdb"), SaniF, reference_scale, sr)
#地理数据库导出shp
arcpy.FeatureClassToFeatureClass_conversion(os.path.join(outputpath, topoGdbname + ".gdb", SaniF, "Polygon"),os.path.join(outputpath,'output'), shpfile_name)

待更新

Arcgis常用功能 Python脚本相关推荐

  1. arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能

    Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...

  2. arcgis怎么运行python_在arcgis上用python脚本(arcpy)做数据批处理

    arcgis软件是测绘地理信息行业空间数据处理与数据分析比较普及的一套软件系统,具有良好的扩展功能,其提供的基于python的开发包arcpy为数据的批处理提供了很好的基础.本文就是介绍在arcgis ...

  3. 第三章 ArcGIS Pro创建 python 脚本工具(五)

    其实整个第三章介绍的内容很少,真正的实验步骤,一节左右就可以概述处理,只是原书作者对于基础与一些信息都给了介绍,所以内容才会显得较多.关于新建自定义脚本工具,我觉得简单的来说,步骤就是创建脚本(如何写 ...

  4. 几个常用的python脚本_几个很实用的python脚本

    脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作. 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么.完成这 ...

  5. arcgis的python脚本-在ArcGIS中写python脚本读取shapefile

    ArcGIS帮助中的相关代码并不能直接运行,进行了小幅修改,现在就可以直接运行了. python代码的大致思路是: (1)先获得描述shp的相关信息,获得存储图形信息的字段名: (2)然后获得游标: ...

  6. 常用的python脚本_五个python常用运维脚本面试题实例

    一.用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径 #!/usr/bin/env python import os for root,dirs,files in os.wal ...

  7. MotionBuilder插件开发常用功能------python

    from pyfbsdk import * 1 获取character controls的character的名字 FullName = FBApplication().CurrentCharacte ...

  8. arcgis的python脚本-ArcGIS Python脚本使用

    前文中我们介绍了在IDE中如何使用arcpy工具来建立脚本,建立脚本的目的是为了简化工作量并进行批处理,如何在ARCGIS环境中调用我们编写的脚本呢? 示例如下,分为几个方面:1.参数脚本的生成 2. ...

  9. arcgis python脚本实现从界面选择输入输出_ArcGIS Python脚本使用

    前文中我们介绍了在IDE中如何使用arcpy工具来建立脚本,建立脚本的目的是为了简化工作量并进行批处理,如何在ARCGIS环境中调用我们编写的脚本呢? 示例如下,分为几个方面:1.参数脚本的生成 2. ...

最新文章

  1. 【指导]如何编译完整建立开发环境和编译Android 4.0.1 on Ubuntu 11.04 (64 bit)
  2. kvm虚拟机_通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
  3. 自定义EventSource(三)IncrementingEventCounter
  4. Linux命令与shell
  5. 专业App开发:设计App图标的三个关键点
  6. oracle open_link,open_links_per_instance 和 open_links 参数说明
  7. Sentinel热点Key降级下_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0043
  8. 如何通过表单收集客户信息精益创业?
  9. 孙鑫VC学习笔记:第十一讲 (一) 坐标空间与各种转换的概念
  10. 中国应该建设大型粒子对撞机
  11. Citavi系列之Word参考文献APA转LaTeX Bib文件
  12. 注塑机设备工业物联网智能解决方案
  13. 搭建Springboot单体项目
  14. 马化腾和朱啸虎互怼之后,摩拜ofo合并可能性基本为零
  15. win8访问不了服务器共享文件夹,如何解决Win8局域网无法访问共享文件夹的问题...
  16. 学校教务管理系统(第二弹
  17. 在控制台,打印出某个具体的变量,并监听其变化
  18. bibitem排版引用顺序不正确,最后一页两栏平衡
  19. matlab2016agui出错,关于 gui运行出错的问题
  20. Windows 或 Windows 服务器上的 hyper-v 中升级虚拟机版本

热门文章

  1. android 设置背景ah,Ahjesus,
  2. 2021-08-15 minikube在阿里云centos系统上的安装实践
  3. 人的一生会遇上的四个人
  4. 【测验1 编程题】: Python基本语法元素 (第1周)
  5. compiler java_使用JavaCompiler编译java源文件
  6. RNA-seq 详细教程:搞定count归一化(5)
  7. Matlab实现二维Goldstein分支切割相位展开算法
  8. 【Linux 网络】IP校验和计算相关
  9. VIPER,更清晰的架构,解决复用和测试问题的利器系列1:VIPER架构演进史
  10. 关于我想写个脚本,最后却搞了个桌面宠物这件事(一)