Viac

Získavate prvý a druhý riadok s vyhľadávacím kurzorom ArcPy?


Mám súbor tvaru, v ktorom sú iba 4 riadky. Už som to mohol filtrovať, takže mi zostali iba 2. Potrebujem ich zoradiť podľa poľa „dĺžka“, potom urobte prvý a druhý riadok a uložte ich do jednotlivých súborov. Tu je kód na triedenie:

import arcpy fc = 'C:  Users  test.shp' fields = ['dĺžka', 'FID'] výraz = arcpy.AddFieldDelimiters (fc, "dĺžka") + "> 1000" pre riadok v zoradenom (arcpy) .da.SearchCursor (fc, polia,)): print ('{0}, {1}'. formát (riadok [0], riadok [1]))

Uloženie do nového súboru:

arcpy.FeatureClassToFeatureClass_conversion (?, outLocation, outFeatureClass,)

Ako môžem nastaviť, aby kurzor vyhľadávania zobrazoval najskôr iba riadok s nižšou hodnotou, potom vyšší? (na poradí nezáleží)

Ako môžem vybrať riadok číslo 1 a potom riadok číslo 2?


Neuvádzate, akú máte úroveň licencie; je to vždy dôležité, pretože to určuje riešenie. Vzhľadom na to zvážte použitie nástroja Zoradiť (ktorý vyžaduje pokročilú licenciu). Viac informácií nájdete tu.


Mal by som konečný cieľ vytvoriť sql dotaz s OID týchto dvoch funkcií.

Vytvorte zo svojich funkcií triedený zoznam n -tíc dĺžok a oid. Vytiahnite prvé dve ponuky zo zoradeného zoznamu a vytvorte z nich sql. Sql potom môžete použiť pri kopírovaní svojich funkcií.

import arcpy fc = 'C:  Users  test.shp' expression = arcpy.AddFieldDelimiters (fc, "length") + "> 1000" #triedený zoznam n -tíc dĺžky a oid lis = triedený ([(dĺžka, oid) pre dĺžku, oid v arcpy.da.SearchCursor (fc, ["length", "[email protected]"], expression)]) #get top two oids twoOids = [str (oid) for length, oid in lis] [ : 2] #sql expression oidStr = "," .join (twoOids) oidFld = arcpy.Describe (fc) .OIDFieldName delimOidFld = arcpy.AddFieldDelimiters (fc, oidFld) sql = "{0} IN ({1})". formát (delimOidFld, oidStr) #export so sql arcpy.FeatureClassToFeatureClass_conversion (fc, outLocation, outFeatureClass, sql)

Myslím, že sa pýtate na to, ako vybrať iba prvý a druhý záznam vyhľadávacieho kurzora.

Nedávno som sa pozeral na rovnakú aktivitu a narazil som na niekoľko možností, všetky s použitím variácií funkcie „ďalej“ v závislosti od typu kurzora (arcpy.SearchCursor vs. arcpy.da.SearchCursor).

Viac odvážni ľudia z ArcPy a Pythonu budú schopní vysvetliť viac.

referencie:

  • http://forums.esri.com/Thread.asp?c=93&f=1729&t=129511

  • Ako získam hodnoty posledného riadka v tabuľke pomocou ArcPy/SearchCursor?

úryvok:

pre riadok v cursorA: #row = ďalší (cursorA) # získať prvú možnosť záznamu 1 #row = cursorA.next () # získať prvú možnosť záznamu 2 ďalšia (kurzorA) # získať prvú možnosť záznamu 3