Python 通过在唯一属性值之间循环创建新层
我试图通过shapefile字段的唯一值进行循环。该字段名为AGLOMERADOS,我想通过它们循环。 一旦我有了这个列表,我想开始按属性选择我的形状文件,并为每个选择创建一个形状文件。 我有空的形状文件!!!:( 我使用的代码如下所示:Python 通过在唯一属性值之间循环创建新层,python,loops,arcgis,arcpy,Python,Loops,Arcgis,Arcpy,我试图通过shapefile字段的唯一值进行循环。该字段名为AGLOMERADOS,我想通过它们循环。 一旦我有了这个列表,我想开始按属性选择我的形状文件,并为每个选择创建一个形状文件。 我有空的形状文件!!!:( 我使用的代码如下所示: import os, arcpy, numpy from arcpy import env arcpy.env.overwriteOutput = True def unique_values(table, field): with arcpy.d
import os, arcpy, numpy
from arcpy import env
arcpy.env.overwriteOutput = True
def unique_values(table, field):
with arcpy.da.SearchCursor(table, [field]) as cursor:
return sorted({row[0] for row in cursor})
agloms=unique_values(r'C:\Users\gdorna\Dropbox\CIPUV\lilp\Proyecto LILP 2014 - Infraestructura\Lincoln Infra - GIS\Iterate agloms\agloms.gdb\pais','AGLOMERADO')
i=0
for lugares in agloms:
arcpy.SelectLayerByAttribute_management("pais","NEW_SELECTION",""""AGLOMERADO" = 'lugares'""")
arcpy.CopyFeatures_management('pais', "a_" + `i`)
print `lugares` + "----->" + `i`
i=i+1
我应该得到的列表应该是这样的,
agloms='BAHIA BLANCA','CIPOLLETTI','CONCORDIA','FORMOSA'
然而,我的agloms是=[u'BAHIA BLANCA',u'CIPOLLETTI',u'CONCORDIA',u'FORMOSA',u'GRAN CORDOBA',]为什么
谢谢!u'表示字符串的格式为unicode。当您打印列表时,它将包含该标记以指示字符串格式。如果要运行以下代码:
for lugar in agloms:
print lugar
输出将是
BAHIA BLANCA
CIPOLLETTI
CONCORDIA
FORMOSA
GRAN CORDOBA
问题在于您的SQL语句。您试图将lugares作为变量输入,但它是字符串的一部分 与此相反:
arcpy.SelectLayerByAttribute_management("pais","NEW_SELECTION",""""AGLOMERADO" = 'lugares'""")
试试这个:
arcpy.SelectLayerByAttribute_management("pais","NEW_SELECTION", "\"AGLOMERADO\" = '" + lugares + "'")
我希望这有帮助!
导入操作系统,arcpy
从arcpy导入环境
arcpy.env.overwriteOutput=True
def唯一_值(表格、字段):
使用arcpy.da.SearchCursor(表[field])作为光标:
返回已排序({游标中的行为[0]行})
agloms=唯一值(表、字段)
i=21
对于agloms中的Lugar:
arcpy.MakeFeatureLayer\u管理(表,“a”+“i+1”,“\”字段\“=”+“lugares+”))
arcpy.FeatureClassToFeatureClass_转换(“a_”+‘i+1’、r‘您的输出路径’、‘a_’+lugares)
打印lugares+“------>”+“i”
i=i+1请添加一些解释。