Vairāk

Arcpy interate rinda, python skriptā? SQL Select izteiksme nedarbojas

Arcpy interate rinda, python skriptā? SQL Select izteiksme nedarbojas


Es veidoju pitona skriptu, kurā mēģinu atkārtot punktu funkciju klasi. Es vēlos no katras dienas izveidot atsevišķas Feature klases. Tāpēc izvēlieties dienas numuru un pēc tam eksportējiet to uz jaunu FC ar unikālu dienas numuru kā nosaukumu.

Es nevarēju atrast savu atbildi tiešsaistē. Tāpēc es nolēmu šeit uzdot savu jautājumu.

ArcGIS 10.2

Mans skripts izskatās šādi:

test1 = "D:  Mijn_Doc  Test_Geodatabase.gd  test1" dayno = 2618 ar testu1 kā rindas: rindai rindās: query = '"daynumber =' + str (dayno) + '"' arcpy.Select_analysis ( test1, 'D:  Mijn_Doc  Test_Geodatabase.gdb  select' +str (dayno), query) dayno += 1

Rāda šādu kļūdu:

arcgisscripting.ExecuteError: ERROR 000358: Nederīga izteiksme "daynumber = 2618" Neizdevās izpildīt (atlasīt)

Atlase izskatās labi. Ja es to izveidoju Model Builder un eksportēju uz Python skriptu, izteiksme izskatās tāda pati kā šajā kļūdas ziņojumā.


Kāpēc kursors?

Vienkārši kaut kas līdzīgs šim darbosies un būs tīrs:

arcpy.env.workspace = r'C:  ArcGIS  Default.gdb 'for dayno in xrange (2618, 2630, 1): arcpy.Select_analysis (test1, "{0} _ {1}". formāts (selecttest, dayno) ), "" "daynumber = '{0}'" "". formāts (dayno))

KĻŪDA 000358 ir “izteiksme nav derīga”, tas daudz nepalīdz. Es domāju, ka, lai gan tas ir līdzīgs izpildlaika kļūdai: KĻŪDA 000358: Nederīga izteiksme, izmantojot ArcPy SelectLayerByAttribute? kur lietotājs mēģināja atlasīt virknes lauku ar cipariem, neminot numuru.

Jūsu SQL vaicājumam vajadzētu būt

"daynumber = '" + str (dayno) + "" "

kas bez kotēšanas kļūst:

dienas numurs = '2618'

Lauka nosaukumam nav jābūt citētam vai iekavās, piemēram, sadaļā “atlasīt pēc atribūtiem”; vienīgais laiks, kad esmu atradis lauka nosaukumu, lai iegūtu īpašas pēdiņas vai iekavas, ir lauku kalkulators.

Es neesmu pārliecināts parar test1 kā rindas:, tā tam noteikti vajadzētu būtar arcpy.da.SearchCursor (test1) kā rindas:bet tas ir mulsinoši, ko jūs mēģināt izdarīt fragmentā. Jūs atkārtojat rindas, bet pēc tam veicat atlasi pret datiem ...


Attiecībā uz SQL jums ir citāts nepareizā vietā.

Izmēģiniet:

query = '"daynumber" ='+ str (dayno)


Paldies visiem par palīdzību.

Es sekoju dažiem jūsu padomiem, un galu galā tas bija (darba) scenārijs, kuru es meklēju:

dayno = 2618 ar arcpy.da.SearchCursor (test1, ('daynumber',)) kā kursoru: kursora rindai: query = 'daynumber = % s' % dayno if dayno> 2630: break else: arcpy.Select_analysis (test1 , selecttest + str (dayno), vaicājums) dayno + = 1

Skatīties video: GIS Tools: ArcMapArcGIS Tool for connecting points