2012-03-28 15 views
2

Ich habe einen Python-Skript geschrieben ArcGIS Daten Geoverarbeitung und den Arbeitsbereich, Ein- und Ausgangsparameter innerhalb des Python-Code nach:wie Eingabe-und Ausgabeparameter in Arcobjects mit C#, die Python-Skript aufrufen?

env.workspace = arcpy.GetParameterAsText(0) 
# input feature class 
inFeatures = arcpy.GetParameterAsText(1) 
# output feature class 
Transect_featureclass = arcpy.GetParameterAsText(2) 

Da ich bin neu in ArcObjects mit C# in Visual Studio 2010, ich versuche, Verwenden des ArcMap-Add-Ins zum Hinzufügen einer Schaltfläche zum ArcMap-Desktop Aber ich wusste nicht, wie ich dieses Python-Skript von C# aufrufen und etwas wie ein Textbox-Popup erhalten und die Informationen über den Eingabe- und Ausgabeparameter-Pfad fragen würde. Da ich das Python direkt anrufe, funktionierte es nicht mit dem GetParameterAsText Befehl innerhalb des Python-Codes.

Ich schätze es sehr, wenn jemand in diesem Fall helfen kann. Danke im Voraus.

+0

Welche GP Sie versuchen, zu verwenden? Versuchen Sie, einen Parameter zu setzen oder einen 'out' Parameter anzugeben? –

+0

Ich benutze Arcpy in Python 2.6 mit ArcMap 10 GP. Ich versuche, meinen Python-Code von Visual Studio 2010 ADD-IN aufzurufen. Also füge ich eine Schaltfläche in ArcMap 10 hinzu, um meinen Python-Befehl auszuführen. Es hat nicht funktioniert. Es scheint, dass GetParameterAsText nur funktioniert, wenn Sie den Python-Code in ein Werkzeug in der ArcToolbox verwandeln. Daher wusste ich nicht, wie ich die Eingabe-Feature-Classes und/oder Feature-Classes festlegen konnte, indem ich in Visual Studio Python-Code aus C# aufruft und dieses Problem löste. Ich wünschte, ich könnte es klarer erklären. Bitte helfen Sie! – user1293655

Antwort

0

Gefunden ein paar Optionen:

  1. Verwenden IronPython Bibliotheken Python-Skripte und Call-Methoden von C# -Code direkt zu laden. Guter Artikel mit Beispielcode und detaillierte Erklärung für jeden Schritt gefunden here.

    oder

  2. Verwenden Process.Start() das Skript auszuführen mit Python ausführbaren

Bevorzugte Methode wäre Option 1. Es scheint, eine „vollständig“ Lösung zu sein Methode ermöglicht Python-Skript ruft direkt aus C#, während gleichzeitig Ausnahmen möglich sind. Mit Option 2 sind Sie vollständig auf den separaten Python-Prozess zur Fehlerbehandlung und Protokollierung angewiesen.

Ich zögerte, Option 2 zur Verfügung zu stellen, aber es kann erforderlich sein, wenn Sie das arcpy Modul nicht bekommen können, um schön mit IronPython zu spielen.

+0

Vielen Dank für Ihren Vorschlag. Ich habe Process.Start verwendet, um Python aufzurufen.Aber das Problem ist, dass, wenn ich den vollständigen Pfad für den Arbeitsbereich und Eingabe- und Ausgabeparameter wie c: /test/shapefile.shp innerhalb des Python-Skripts schreibe, läuft es ohne Probleme. Aber ich möchte, dass es in der arcmap wie ein Knopf verwendet wird, dann klicke ich auf den Knopf, es erscheint ein Textfeld, in dem die Eingabe- und Ausgabeinformationen für Parameter gefragt werden. Wie kann ich das machen? Vielen Dank. – user1293655

+0

Ich bin mit ArcMap nicht vertraut, nehme aber an, dass Sie die Flexibilität haben, eine Schnittstelle hinzuzufügen, die Benutzereingaben akzeptiert. Wenn dies der Fall ist, fragen Sie den Benutzer nach Eingabe-/Ausgabewerten und übergeben Sie diese als Argumente an das Python-Skript. Sehen Sie sich "argparse" an, um mit Argumenten zu definieren und zu arbeiten, die an das Python-Skript übergeben werden. http://docs.python.org/library/argparse.html – Bryan

+0

Danke trotzdem. Ich werde mir die argparse ansehen. Ich denke, es wird helfen. Danke noch einmal. – user1293655

1

Es gibt ein Beispiel in der .NET-Entwickler-Hilfe an den Esri Seiten: http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Walkthrough_Consuming_a_geoprocessing_model_tool_in_NET/0001000001sw000000/

Arbeit durch, und Sie haben gelernt, wie sollten ein Geoverarbeitungswerkzeugs von ArcMap nennen. Um dies zu tun, müssen Sie eine Toolbox erstellen, die Ihr Python-Skript enthält. Dies kann mit .NET-Code aufgerufen werden (siehe den Walkthrough).

Hinweis: Die meisten dieser grundlegenden Entwicklung Sachen sind bereits gut an den Esri Seiten dokumentiert, aber manchmal schwer ;-)