Бештар

Скрипти ArcGIS 10.0 Python бо ArcGIS 10.2.1 кор намекунад. Даврзанӣ тавассути SelectLayerByLocations

Скрипти ArcGIS 10.0 Python бо ArcGIS 10.2.1 кор намекунад. Даврзанӣ тавассути SelectLayerByLocations


Соли гузашта ман аз StackExchange барои навиштани скрипти Python барои ArcGIS 10.0 кумак гирифтам, ки тавассути SelectLayerByLocation бо буфер то даме ки ягон сатри нав барнагардад, давр мезанад. Он гоҳ он интихобро барои равандҳои минбаъда истифода мебарад.

Мо танҳо ба ArcGIS 10.2.1 такмил додем ва ман фаҳмидам, ки скрипт дигар кор намекунад :(

Ман дар равзанаи Python мебинам, ки SelectLayerByLocation кор мекунад ва шумора зиёд мешавад, аммо ин раванд пас аз баргардонидани сатрҳои нав қатъ мешавад. Масалан, бо маълумоти печида дар зер, ман ба даст меорам ... Шумораи сатрҳо = 16… Ҳисобкунии сатрҳо = 18… Ҳисобкунии сатрҳо = 18… Нуқтаҳои интихобшуда дар экран равшан карда мешаванд, аммо раванд дар он лаҳза мемонад. Скрипт ба итмом мерасад, агар SelectByLocation дар масофаи (inDis2) сайти интихобшуда (fcFarmInterest) ягон сайти дигарро муайян накунад, бинобар ин ман гумон мекунам, ки ҳалқа мушкил аст.

## Унвон: Минтақаи худкор ## Функсия: Васеъ кардани интихоби сайтҳо аз як сайти додашуда. ## Версия: ArcGIS 10.0 ## Муаллиф: Лиам Мейсон, бо кумаки dklassen @ GIS StackExchange ## Сана: 5 Август 2014 # Воридоти бастаи сайти ArcPy arcpy # Файлҳои аз нав навиштани arcpy.env.overwriteOutput = True # Параметрҳо # Танзими фазои корӣ = r "C:  GIS  Autozone" # Шиносаи сайт ҳамчун сатри inSite = 'FS0501' # Масофа ҳамчун сатр inDis = '800' # Номи қабати хусусияти маълумоти фермаҳо farmData = "фермерҳо" # Ҷойгиршавии шакли буридани шакли shapefile clipShape = " ClippingShape " # Ҷойгиршавии буферӣ дар outBuffer = r" C:  GIS  Autozone  Outputs  buffer.shp " # Иловаи метрро ба арзиши масофа inDis1 = inDis +" метр " # Қимати масофаро ба адади табдил диҳед, бо ду зарб кунед , пас як воҳиди ягонаро хориҷ кунед. Ба сатр баргардед ва метрҳоро илова кунед. inDis2 = str ((int (inDis)*2) -1) + "метр" # Дар куҷо дархост, илова кардани сатри inSite ҳамчун меъёр. ки = '"Site_No" =' + "' %s'" %inSite # Танзими фазои кориро танзим кунед arcpy.env.workspace = workSpace кӯшиш кунед: # Бо тамоми хоҷагиҳо як қабати хусусият созед fcFarmsAll = farmData # Танҳо хоҷагиҳои баҳриро интихоб кунед, натиҷа эҷод кунед, пас интихоби тоза кунед. fcFarmsMarine = arcpy.SelectLayerByLocation_management (fcFarmsAll, "WITHIN", clipShape) fcFarmsMarineOut = arcpy.CopyFeatures_management (fcFarmsMarine, r " Working  marineFarms.shp") # arcib хоҷагиҳои баҳрӣ fcFarms = arcpy.MakeFeatureLayer_management (r " Working  marineFarms.shp", "MarineFarms") #Сайти мавриди таваҷҷӯҳро интихоб кунед ва шакли файли fcFarmInterest = arcpy.Select_analysis (fcFarms, r " Working  farm_Select.shp" эҷод кунед) #Барои қабати хоҷагиҳо интихоб интихоб кунед fcFarms1 = arcpy.SelectLayerByLocation_management (fcFarms, "WITHIN_A_DISTANCE", fcFarmInterest, inDis2) ) #Интихоби шумор initial_getCount = int (arcpy.GetCount_management (fcFarms2) .getOutput (0)) #Якеро ба ҳисобкунии интихоб илова кунед getCount = initial_getCount + 1 #Давраи интихоб ҳангоми getCo unt> initial_getCount: fcFarms3 = arcpy.SelectLayerByLocation_management (fcFarms, "WITHIN_A_DISTANCE", fcFarms2, inDis2, "ADD_TO_SELECTION") initial_getCount = getCount getCount = int (fcFarm_Get) fcFarms3, r " Working  farm_buffer.shp", inDis1, "FULL", "ROUND", "ALL") #буферии клипи arcpy.Clip_analysis (r " Working  farm_buffer.shp", clipShape, r " Working  buffer_clip.shp ") #Буфери буридашударо ба қисмҳои сершумор тақсим кунед arcpy.MultipartToSinglepart_management (r"  Working  buffer_clip.shp ", r"  Working  buffer_multi.shp ") #Барои буферии бисёрқабата як қабати хусусият созед fcBuffer = arcpLyMMake_Make " Working  buffer_multi.shp", "BufferTemp") #Қисмати буферро бо сайти манфиатдор интихоб кунед fcBufferSelect = arcpy.SelectLayerByLocation_management (fcBuffer, "INTERSECT", fcFarmInterest) #Буферро ба файл интиқол диҳед, сайтҳоро дар ин буфер аз нав интихоб кунед. CopyFeatures_management (fcBufferSelect, r " Working  buffer_sites.shp") fcBuf ferSites1 = arcpy.SelectLayerByLocation_management (fcFarms, "INTERSECT", fcBufferSites) #Интихоби нав, клип, тақсим ба бисёр қисмҳо, қисми буферро бо сайтҳои arcpy.Buffer_analysis (fcBufferSites1, r " Working. farms_buffer, "FULL", "ROUND", "ALL") arcpy.Clip_anysis (r " Working  farm_buffer1.shp", clipShape, r " Working  buffer_clip1.shp") arcpy.MultipartToSinglepart_management (r " Working  buffer_clip1. ", r"  Working  buffer_multi1.shp ") fcBuffer1 = arcpy.MakeFeatureLayer_management (r"  Working  buffer_multi1.shp "," BufferTemp ") fcBufferSelect1 = arcpy.SelectLayerByLocation_management" "fcBuffer1" .shp ") #Пеш аз нест кардани ## мавҷуд будани буфери кӯҳна дар ArcMapро тафтиш кунед ## if arcpy.Exists (outBuffer): ## arcpy.Delete_management (outBuffer) #Буфери ниҳоии содиротро ба файл fcFinal = arcpy.CopyFeatures_management (fcBufferSelect1, out out) Сайтҳоро дар дохили буфер интихоб кунед fcFarmsFinal = arcpy.SelectLayerByLocation_management (fcFarmsAll, "INTERSECT", o utBuffer) #Нобуд кардани файлҳои корӣ arcpy.Delete_management (r " Working  farm_buffer.shp") arcpy.Delete_management (r " Working  farm_buffer1.shp") arcpy.Delete_management (r " Working  buffer_clip.shp") arcpy. Delete_management (r " Working  buffer_clip1.shp") arcpy.Delete_management (r " Working  buffer_multi.shp") arcpy.Delete_management (r " Working  buffer_multi1.shp") arcpy.Delete_management (r " Working  farm_Select) .shp ") arcpy.Delete_management (r"  Working  buffer_sites.shp ") arcpy.Delete_management (r"  Working  marineFarms.shp ") ҷуз: чопи arcpy.GetMessages ()

Тавассути озмоиш ва озмоиш ва иштибоҳ, ман фаҳмидам, ки ин ҳалқа нест, балки функсияро дар буфер ҳал мекунад-агар шумо ҲАМАИ буферҳои коршударо хориҷ кунед.

Ба ман пароканда кардани буферҳо лозим аст, бинобар ин ҳамчун масъалаи алоҳида ба миён хоҳад омад.


Видеоро тамошо кунед: merge in arcgis