Vous appelez arcpy / python depuis .NET?


15

Y a-t-il des exemples disponibles qui montrent comment python peut être intégré dans un complément ou une extension .NET ArcGIS? J'ai une série de scripts python que j'aimerais appeler à partir d'événements de formulaire (par exemple, les clics sur les boutons) dans .NET. J'aimerais également pouvoir définir des variables dans le script à partir d'un formulaire .NET.

Dois-je mordre la balle et réécrire ces scripts dans .NET, ou existe-t-il un moyen simple d'envelopper le code python?

Réponses:


25

Gardez à l'esprit qu'Arcpy est essentiellement un wrapper autour d'ArcObjects. Mais si vous essayez simplement d'appeler des scripts Python que vous ne voulez pas avoir à réécrire, vous pouvez générer un processus qui appelle l'exécutable python avec vos arguments.

var startInfo = new ProcessStartInfo() {
   CreateNoWindow = false,
   UseShellExecute = false,
   FileName = pathToPythonRuntime,
   WindowStyle = ProcessWindowStyle.Hidden,
   Arguments = pathToYourPythonScriptYouDoNotWantToRewrite+" "+yourOtherArgsEtc
 };
var exeProcess= Process.Start(startInfo);
//If you need synchronous execution you can do this
exeProcess.WaitForExit();

Notez que vous pouvez également faire des trucs multithreads assez sympas.


0

D'après votre question, je ne sais pas à quel point vous êtes connecté à .NET, mais si vous utilisez ArcGIS 10.1 (ou version ultérieure) pour le bureau, je pense qu'une approche plus simple consistera à utiliser un complément Python :

ArcGIS 10.1 introduit Python à la liste des langues pour la création de compléments Desktop, vous offrant une solution simple pour étendre les fonctionnalités du bureau. Pour simplifier le développement des compléments Python, vous devez télécharger et utiliser l'Assistant Complément Python pour déclarer le type de personnalisation. L'assistant va générer tous les fichiers requis nécessaires pour que le complément fonctionne.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.