Python-arcpy: Hoe maak ik de lijst met functies van gdb en de lijst met waarden uit het veld en gebruik deze in de gaLayer-functie?

Ik ben geen expert in python, maar ik moet een script schrijven om geostatistische analyses uit te voeren met de GACreateLayer-functie van Arcgis.

I have several data (>2000) and I want to use list of features and list of field values to perform cokriging.

Ik heb een script geschreven, het eerste deel retourneer lijst met functies in mijn gdb en de lijst met waarden in het veld dat ik heb gekozen (het werkt en retourneer veldwaarden en functienamen) en het tweede deel doet cokring (het werkt voor één functie en het bijbehorende veld)

Wanneer ik echter beide lijsten (inputDSet, einde van het script) wil gebruiken om een ​​GA Layer te maken, werkt deze niet.

File "C:\Program Files\ArcGIS\Desktop10.0\ArcPy\arcpy\ga.py", line 921, in GACreateGeostatisticalLayer     raise e
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 045001: Input dataset(s) error. Table of inputs is not complete.
Failed to execute (GACreateGeostatisticalLayer)

Ik weet niet hoe ik lijsten correct gebruik? Mag ik ze transformeren of iets anders?

Hier is mijn code:

import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()

def listFcsInGDB():
    # list all Feature Classes in a geodatabase 
    gp.workspace = "C:\\INTERP\\PJ_class.gdb"

    fcs = []
    for fds in gp.ListDatasets('','feature') + ['']:
        for fc in gp.ListFeatureClasses('','',fds):
            #yield os.path.join(fds, fc)
            fcs.append(os.path.join(fds, fc))
    return fcs

fcs = listFcsInGDB()
for fc in fcs:
    print fc

# List of value in fields
input_dataset =  fc   
Atts = 'PJ_RacPJ'    #field with rainfall values       

rows = gp.searchcursor(fc)
row = rows.next()

NewList = []
for fc in fcs:
    for row in gp.SearchCursor(fc):
        fcValue = row.getvalue(Atts)
        NewList.append(fcValue)
#print NewList

arcpy.CheckOutExtension("GeoStats")

# Load required toolboxes
arcpy.ImportToolbox("C:/Documents and Settings/ArcGIS/Toolbox.tbx")

# Local variables:
Cokriging_xml = "C:\\INTERP\\COK_.xml"
CK = "CK2"
ids1 = "C:\\INTERP\\data.gdb\\dem1000"


for fc in fcs:
    for fcValue in NewList:
        inputDset1 = fcValue          #Variables
        inputDset2 = ids1            #Covariable
        InputDset = "inputDset1;inputDset2"

# Create cokriging layer (code from model builder)

    tempEnvironment0 = gp.autoCommit
    arcpy.env.autoCommit = "1000"
    tempEnvironment1 = gp.spatialGrid1
    arcpy.env.spatialGrid1 = "0"

    arcpy.GACreateGeostatisticalLayer_ga(Cokriging_xml,InputDset,CK) ##Function

    arcpy.env.autoCommit = tempEnvironment0
    arcpy.env.spatialGrid1 = tempEnvironment1

Ik heb hulp nodig.

Als iemand een idee heeft? Het zou geweldig zijn.

Bedankt

7
Chad, bedankt voor je antwoord. Inderdaad, ik dacht dat uw voorstel het probleem kon oplossen, maar het vervangen van aanhalingstekens door [] werkt niet. Ik heb gezocht naar de exacte expressie in arcgis 10 en het resultaat is: arcpy.GACreateGeostatisticalLayer_ga ("C: /INTERP/COK_.xml", "C & zwnj;: /INTERP/PJ_class.gd‌ b/j01012003 X = Shape Y = Shape F1 = PJ_RacPJ; C: /INTERP/Data.gdb/dem1000 "," GACreateGeostatisticalLayer1 ") Alle argumenten staan ​​dus tussen aanhalingstekens: model, invoer en uitvoer. Het werkt voor een functie (variabel) en de covariabele (hier een DEM). Misschien komt het probleem uit de lijsten. Kon ik eenvoudig lijsten gebruiken zoals ik schreef?
toegevoegd de auteur CyberFonic, de bron

1 antwoord

Als ik de help interpreteer in dit geval correct, in_datasets voor GACreateGeostatisticalLayer moet een door komma's gescheiden lijst van veldgescheiden invoergegevensset/invoerveldparen zijn.

[inputDset1 field1, inputDset2 field2]

Je hebt ze ook tussen aanhalingstekens - InputDset = "inputDset1; inputDset2" - wat een probleem zou kunnen zijn, omdat het variabelen zijn; in de aanhalingstekens zouden ze geïnterpreteerd kunnen worden als snaren.

Ik heb dit alles niet getest, alleen enkele gedachten over dingen om naar te kijken.

2
toegevoegd
(2/2) Kon ik eenvoudig lijsten gebruiken zoals ik schreef in mijn eerste bericht? Kan ik ze gebruiken voor toepassingen zonder ze om te zetten in variabelen of iets dergelijks? Of moet ik iets specifieks doen? Ik heb de lijst (de eerste is een stringlijst, de tweede is een floatlijst) en ik heb geen antwoord ... Heb je een ander idee?
toegevoegd de auteur Gerhard Weiss, de bron
Hierboven toegevoegd om de vraag te beantwoorden die het OP aan de aanvrager vroeg.
toegevoegd de auteur Gerhard Weiss, de bron
@ nagosa - je zou je eigen bericht moeten kunnen bewerken en de juiste code daarin kunnen invoegen als een bewerking.
toegevoegd de auteur Farhan, de bron
Chad, bedankt voor je antwoord. Inderdaad, ik dacht dat uw voorstel het probleem kon oplossen, maar het vervangen van aanhalingstekens door [] werkt niet. Ik heb gezocht naar de exacte expressie in arcgis 10 en het resultaat is: arcpy.GACreateGeostatisticalLayer_ga ("C: /INTERP/COK_.xml", "C & zwnj;: /INTERP/PJ_class.gd‌ b/j01012003 X = vorm Y = vorm F1 = PJ_RacPJ; C: /INTERP/Data.gdb/dem1000 "," GACreateGeostatisticalLayer1 ") Alle argumenten zijn dus tussen aanhalingstekens geplaatst: model, invoer en uitvoer. Het werkt voor een functie (variabel) en de covariabele (hier een DEM). Misschien komt het probleem uit de lijsten ... (1/2)
toegevoegd de auteur CyberFonic, de bron
Ik heb het probleem gevonden en hoe ik op mijn bovenstaande vraag kon antwoorden. Ik zet mijn code hieronder als dat kan helpen ... Een lijst gebruiken in de GACreateGeostatisticalLayer: #Set-omgeving arcpy.env.workspace = "C: /INTERP/PJ.gdb" # Bekijk de licentie-extensie voor Geostatistical Analyst. gp.CheckOutExtension ( "GeoStats")
toegevoegd de auteur CyberFonic, de bron
'Variabelen en lus
inputGA = "C: /INTERP/COK.xml"
# fc = lijstcomponent/fcs = lijst
voor fc in fcs:
# 1e variabele/"PJ" = doelveld
invoerDset1 = fc + "" + "X = Vorm Y = Vorm" + "F1 =" + "PJ"
# 2e variabele
invoerDset2 = "C:/INTERP/data.gdb/dem "
VARCOVAR = inputDset1 +"; " + inputDset2
out = "cok"
outLayer = out + fc
# Process: GACreate
voor fc in fcs:
gp.GACreateGeostatisticalLayer (inputGA, VARCOVAR, outLayer )
toegevoegd de auteur CyberFonic, de bron
de code met een leesbaar formaat staat op een andere pagina [forum] ( forumsig.org/showthread. php? t = 33381 ). Mijn excuses; Ik kan hier niet bewerken ... Nao
toegevoegd de auteur CyberFonic, de bron