通过独特的属性值循环创建新层

2024-09-29 23:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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'、,。。。在

可是,我的手镯是:[你的白兰地,你的西波利蒂,你的康科迪亚,你的福尔摩沙,你的大科尔多瓦…]这是为什么?!?!??在

谢谢!在


Tags: 文件importenvfieldfortablecursorrow
3条回答

问题出在你的SQL语句上。您试图输入lugares作为变量,但是它是字符串的一部分。在

而不是这样:

arcpy.SelectLayerByAttribute_management("pais","NEW_SELECTION",""""AGLOMERADO" = 'lugares'""")

试试这个:

^{pr2}$

我希望这有帮助!在

import os, arcpy 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(table, field) i=21 for lugares in agloms: arcpy.MakeFeatureLayer_management(table, "a_" + 'i+1', "\"field\" = '" + lugares + "'") arcpy.FeatureClassToFeatureClass_conversion("a_" + 'i+1', r'your out_path', "a_" + lugares) print lugares + " ->" + 'i' i=i+1

和13;
和13;

“u”表示字符串的格式是unicode。当您打印一个列表时,它将包含该标记以指示字符串格式。如果要运行以下代码:

for lugar in agloms:
    print lugar

输出将是

^{pr2}$

相关问题 更多 >

    热门问题