Python for arcgis
西域健客
自然资源行业软件、农业农村行业软件、实用工具、插件、地理信息系统软件二次开发,欢迎交流。V: KingKong1578(注明来意)
展开
-
解决ArcPy脚本工具中文乱码问题
ArcPy是一个很香的地理空间数据库处理模块,但它必须依赖ArcGIS和Python环境,由于常用的ArcGIS版本默认支持的是Python2.7,它对中文支持并不好,因此,编码问题是入门时必须解决的问题。这里不细说ASCII、GB2312、Unicode、UTF-8的区别,可自行百度之;Python2和Python3系统默认编码分别是ASCII和UTF-8。往往编写的脚本能正常执行,但制作成共享的ToolBox工具就报编码问题:EOL while scanning string literal转载 2020-10-16 12:08:14 · 2671 阅读 · 1 评论 -
arcpy.env.overwriteOutput = True
arcpy.env.overwriteOutput = True:输出文件夹里面已经有内容的,就覆盖掉。原创 2019-05-15 15:12:11 · 2818 阅读 · 0 评论 -
arcgis 10.2 的python脚本和 9.3 的脚本的区别和转换
目前大家用得比较多的arcgis版本分别有9.3和10.2,在平常工作中,10.2做好的python脚本工具无法在9.3中运行,原因是因为两个版本对应的包不一样,在脚本开头,导入的包法不一样。1、9.3导入方法import arcgisscriptinggp = arcgisscripting.create(9.3)# 以下直接以gp作为包,后面接.号来调用函数gp.calcul...原创 2019-05-21 17:36:09 · 1282 阅读 · 0 评论 -
使用arcgis(arcpy)导出矢量数据的每个要素
一般的,一个shapefile文件中含有多个要素,有时候需要将每个要素输出为一个shp文件!# -*- coding: utf-8 -*-import arcpyimport osfrom arcpy import envenv.workspace = "C:/Users/lwk/Desktop/111/"#工作空间shp = 'C:/Users/lwk/Desktop/...转载 2019-05-13 12:51:29 · 8477 阅读 · 1 评论 -
arcpy.AddError 和 arcpy.AddMessage的用法
arcpy.AddError的作用是,在arcgis py脚本中,中止程序 并向消息框报错相关信息,算是主动抛出异常。arcpy.AddMessage的作用是,在arcgis py脚本中,将指定信息输入到消息框。代码实例:判断输入的图层里面的要素数量,如果要素为0个,则中止程序并报错如果要素不为0个,则向消息框提示相关信息import arcpyfc = a...原创 2019-05-17 14:38:52 · 2653 阅读 · 0 评论 -
lambda函数在arcgis脚本开发中的应用场景,统一转换元组(列表)的类型
今天在arcgis脚本开发中碰到一个问题,在定义变量时,用的是GetParameterAsText函数,此函数返回的是一个字符串,但是在输入时,限定了只能输入整型数据。#定义的接收变量zaodao_gw = arcpy.GetParameterAsText(3)wandao_gw = arcpy.GetParameterAsText(4)youcai_gw = arcpy.GetPar...原创 2019-05-23 12:34:27 · 183 阅读 · 0 评论 -
取得 Arcgis 中字段唯一值
最近多次需要取得要素类中某字段的唯一值,在 arcgis 中的 python 窗口写着也很简单.但每次写,略显麻烦,就想着封装成函数吧.动起手来,发现为了普适,还是比平时单写复杂些的,不仅可以取得某一字段的唯一值,亦可取得某几个字段联合后的唯一值,代码如下:# coding:utf-8import arcpydef distinct_value(shp, *field): ...转载 2019-05-28 13:59:02 · 5364 阅读 · 2 评论 -
覆盖arcpy.env.overwriteOutput = True
arcpy.env.overwriteOutput = True:输出文件夹里面已经有内容的,就覆盖掉。原创 2019-06-05 17:59:35 · 1658 阅读 · 0 评论 -
shapefile矢量数据遍历、求交、与属性更新
问题来源最近看到群里有小伙伴有这样的需求,大概意思是这样的。他有一个面数据,这么面数据有很多条记录(polygon),我们姑且把这个面叫A数据,还有另外一个B数据,也是有很多条记录(polygon)。现在需要A数据中每一条记录与B面求交,然后找出所有的相交面,在这些相交面中取面积最大者的一些属性填到A面的那条记录的属性表中,基本上流程就走完了。不知道我需求说明讲得清楚么。不过需要注意的是...转载 2019-06-01 16:34:34 · 1447 阅读 · 0 评论 -
ArcGIS开发&读取txt坐标数据,并创建面shapefile
功能实现之前有小伙伴说,他有坐标数据,想生成shapefile数据。后面我联系了他,但一直没有给数据,所示只好作罢。最近由于项目的需要,又有这样的需求。那么我这里有一个txt文件,都是坐标数据,如下图所示,其中每一行对应一个面。现在需要使用arcpy将这些数据创建成面。在这其中,需要使用到的是,逐行读取txt文件,然后分割字符。注意这里使用的逗号。那么我们在使用arcpy的时候,会去创...转载 2019-06-01 16:38:10 · 4338 阅读 · 0 评论 -
arcgis中计算图斑椭球面积的代码
只需要要字段计算器中,选择Python脚本计算:输入如下公式:!shape.geodesicArea!,解析程序选择python原创 2019-08-31 22:28:13 · 14548 阅读 · 2 评论 -
使用游标(Cursor)和使用计算器(CalculateField)的效率对比
拿一个90700条的数据做测试,用代码使用游标完成用了20.92秒,而使用计算器用了28.66+28.76=57.42秒。这大概就是游标的高效所在吧。原创 2019-05-01 07:58:57 · 648 阅读 · 0 评论 -
ARCGIS中某字段递增赋值,如1,2,3,4,
arcgis中怎样给字段按1、2、3……赋值rec=0def autoIncrement(): global rec pStart = 1 pInterval = 1 if (rec == 0): rec = pStart else: rec = rec + pInterval return rec以上是python代码块,在字段里输入autoIncre...原创 2019-03-20 22:56:17 · 31960 阅读 · 2 评论 -
ARCGIS做好的模型工具,已经设置为相对路径,拷贝后工具显示叉叉不可用的原因
ARCGIS做好的模型工具,已经设置为相对路径,拷贝后工具显示叉叉,其原因为,模型中调用的工具,是自己新建的一个目录下的工具,不是系统中的工具,导致调用时,工具别名无法识别,因此报错。解决方法是直接用系统中默认的工具箱即可。...原创 2019-03-20 07:31:53 · 3776 阅读 · 0 评论 -
输出数据集类型和空间参考名称
import arcpy... fc = r"I:\pystudy\shili\fenyi.shp"... desc = arcpy.Describe(fc)... sr = desc.SpatialReference... print "Dataset type:" + desc.DatasetType #输出数据集类型和空间参考名称... print "Spatial refer...原创 2019-01-17 14:28:56 · 289 阅读 · 0 评论 -
读取要素的属性列表运行成功但却报乱码,如何解决
import arcpy... from arcpy import env... env.workspace = r"I:\pystudy\shili"... fielist = arcpy.ListFields("fydltb.shp")... fielist... >>> fielist[<Field object at 0x4ef12d0[0x23dc9...原创 2019-01-17 18:03:23 · 334 阅读 · 3 评论 -
输出每个字段的名称,类型和长度
import arcpy... from arcpy import env... env.workspace = "I:\pystudy\shili"... fieldlist = arcpy.ListFields("fydltb.shp")... for field44 in fielist:... print "{0} is a type of {1} with a leng...原创 2019-01-18 14:18:06 · 706 阅读 · 0 评论 -
先按默认字母排序,再倒排序
import arcpyarcpy.env.workspace = “I:\pystudy\shili”… fcs = arcpy.ListFeatureClasses()… fcs.sort()… print fcs… fcs.sort(reverse= True)… print fcs…[u’fenyiaa.shp’, u’fenyiaa2.shp’, u’fenyibb.sh...原创 2019-01-18 14:30:39 · 261 阅读 · 0 评论 -
输出安装信息
import arcpy>>> import arcpy... install = arcpy.GetInstallInfo()... for key in install.keys():... print (key,install[key])... ('SourceDir', u'E:\\E460\u5907\u4efd\\\u8f6f\u4ef6\...原创 2019-01-19 22:05:58 · 145 阅读 · 0 评论 -
输出指定属性
import arcpy... fc = "E:/pystudy/shili/fy499.shp"... cursor = arcpy.da.SearchCursor(fc,["QSDWDM"])... for row in cursor:... print "权属单位代码 = {0}".format(row[0]) 执行结果:权属单位代码 = 360521202201...原创 2019-01-19 22:49:08 · 134 阅读 · 0 评论 -
在指定的字段中增加记录
import arcpy... fc = "E:/pystudy/shili/fy499.shp"... cursor = arcpy.da.InsertCursor(fc,["DLMC"])... x = 1... while x <= 5:... cursor.insertRow(["new dlmc"])... x += 1执行结果如下:...原创 2019-01-19 23:06:15 · 118 阅读 · 0 评论 -
通过循环插入五行数据
import arcpy... fc = r"E:\pystudy\shili\fy194.shp"... cursor = arcpy.da.InsertCursor(fc,["DLMC"]) ... x = 1... while x <= 5:... cursor.insertRow(["newdl"])... x += 1... ...原创 2019-01-20 21:31:51 · 263 阅读 · 0 评论 -
新建一个字段,用另外一个字段的值计算来赋值
fc = r"E:\pystudy\shili\fy194.shp">>> cursor = arcpy.da.UpdateCursor(fc,["MJNEW","TBMJ"])>>> for row in cursor:... row[0] = row[1] / 10000... cursor.updateRow(row) #注意这里..原创 2019-01-20 21:39:46 · 1403 阅读 · 0 评论 -
pthon for arcgis 中定义空间属性时报 mixns.py的错误解决方法。
代码出错,找到原因了,是路径前面要加个"r"。import arcpyout_path = “J:\pystudy\shili\outpath”out_name = “fenyi0115.shp”prjfile = “J:\pystudy\shili\fenyi.prj”spatialref = arcpy.SpatialReference(prjfile)Runtime err...原创 2019-01-16 09:09:13 · 573 阅读 · 0 评论 -
如果裁剪的要素类型是多边形,则进行裁剪
import arcpy… arcpy.env.workspace = r"I:\pystudy\shili"… infc = “fydltb.shp”… clipfc = “fenyi.shp”… outfc = “fenyicj.shp”… desc = arcpy.Describe(clipfc)… type = desc.shapeType… if type == “Poly...原创 2019-01-17 14:07:20 · 382 阅读 · 0 评论