Более

Доступ к выбранным объектам в выходных данных подслоя из трассировки геометрической сети

Доступ к выбранным объектам в выходных данных подслоя из трассировки геометрической сети


У меня построена геометрическая сеть с линиями ручьев и водопользователями. Я пытаюсь использовать ArcPy для автоматизации отслеживания нижестоящих узлов / узлов в моей геометрической сети, чтобы получить идентификаторы пользователей для всех нижестоящих узлов. Я не могу понять, как получить доступ к выбранным узлам в группе слоев, полученной в результате трассировки.Arcpy.searchcursor ("имя подслоя")похоже, не может найти мой подслой. Как я могу получить доступ только к выбранным узлам из моей трассировки?

Когда я использую ListLayers следующим образом, он не включает группу выходных слоев трассировки с выборками, даже если я вижу ее в оглавлении:

arcpy.TraceGeometricNetwork_management (myNetwork, outNet, mypts, "TRACE_UPSTREAM") Layers = arcpy.mapping.ListLayers (mxd) для слоя в слоях: if layer.isGroupLayer: if layer.name == arcpy.mapping.Layer (outNet): for подуровень в слое: if subLayer.name == userLayer: # Получить список идентификаторов нижестоящих пользователей downstreamUsers = [] rows = arcpy.SearchCursor (userLayer) для строки в строках: downstreamUsers.append (row.HYDROID) del rows, row print «идентификаторы последующих пользователей», downstreamUsers

Поэтому я также попытался обратиться конкретно к слою вывода трассировки, а затем SearchCursor сказал, что не может найти мой подслой с пользовательскими узлами:

arcpy.TraceGeometricNetwork_management (myNetwork, outNet, mypts, "TRACE_UPSTREAM") layer = arcpy.mapping.Layer (outNet) для подслоя в слое: if subLayer.name == userLayer: # Получение списка нижестоящих идентификаторов пользователей downstreamUsers = [] строк = arcpy.SearchCursor (userLayer) для строки в строках: downstreamUsers.append (row.HYDROID) del rows, печать строки «идентификаторы последующих пользователей», downstreamUsers

Полезный трюк - получить доступ к выходным данным группового слоя из его расположения in_memory:

arcpy.env.workspace = r'in_memory '# Group Layer находится в in_memory # забудьте ссылку на карту и перейдите прямо к ее исходному userLayer = # убедитесь, что это определено downstreamUsers = [] arcpy.TraceGeometricNetwork_management (myNetwork, outNet, mypts, "TRACE_UPSTREAM") для слоя в arcpy.mapping.Layer (outNet): #referencing Group Layer in_memory для x в arcpy.mapping.ListLayers (layer): #ListLayers также работает in_memory, чтобы перечислить слои внутри группового слоя, если x.name == userLayer: rows = arcpy.da.SearchCursor (userLayer, 'HYDROID') # Лучше использовать новый курсор поиска с указанным полем для строки в строках: downstreamUsers.append (row [0]) # курсоры создают кортежи и вы хотите, чтобы элементы в 0-й позиции кортежа выводили «идентификаторы последующих пользователей», downstreamUsers

Это очень похоже на вопрос, который я разместил примерно в то же время. Я вставил свой полный рабочий код, если вы хотите его проверить: / a / 176926/56700


Смотреть видео: Konsola w sieci - polecenia CMD Windows do zarządzania połączeniami sieciowymi