Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过在唯一属性值之间循环创建新层_Python_Loops_Arcgis_Arcpy - Fatal编程技术网

Python 通过在唯一属性值之间循环创建新层

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

我试图通过shapefile字段的唯一值进行循环。该字段名为AGLOMERADOS,我想通过它们循环。 一旦我有了这个列表,我想开始按属性选择我的形状文件,并为每个选择创建一个形状文件。 我有空的形状文件!!!:( 我使用的代码如下所示:

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请添加一些解释。