Kategorien

Eigene Geoprocessing-Tools mit ArcObjects Teil 3: IGPFunction

Die Implementierung von IGPFunction ist etwas aufwendiger als die von IGPFunctionFactory. Hier wird nun das eigentliche GP-Tool definiert. Von zentraler Bedeutung sind dabei die Eigenschaft ParameterInfo sowie die Methoden Validate und Execute, die in den anschliessenden drei Beiträgen genauer beschrieben werden. Hier geht es um die übrigen Eigenschaften und Methoden.

Die String-Eigenschaften Name und DisplayName geben dem Tool einen Namen. DisplayName ist derjenige Name, der in der ArcGIS-Umgebung angezeigt wird (in der Toolbox oder auf der Kommandozeile). Eine ausführlichere Beschreibung des Tools erfolgt in der Eigenschaft FullName, die ein IName-Objekt zurückgibt, das u.a. auch eine ausführliche Text-Beschreibung des Tools enthalten kann:

public ESRI.ArcGIS.esriSystem.IName FullName {
    get {
     IGPName gpName = new GPFunctionNameClass() as IGPName;
     gpName.Category = "";
     gpName.Description = "Ausführliche Textbeschreibung des Tools";
     gpName.Name = "Tool-Name";
     gpName.DisplayName = "Tool-DisplayName";
     gpName.Factory = (IGPFunctionFactory) new ToolFunctionFactory();
     return gpName as IName;
    }
}

Es wird ausserdem auch mit der Untereigenschaft Factory die Beziehung zwischen GP-Tool und der dazugehörigen GPFunctionFactory hergestellt. Die Untereigenschaft Category dient dazu, innerhalb der logischen Tools-Gruppe weitere Untergruppierungen vorzunehmen.

Die Eigenschaft DialogCLSID wird nur benötigt, wenn dem Tool eine eigene GUI verpasst werden soll, die nicht der Standard Geoprocessing-GUI von ArcGIS entspricht. Dies ist wahrscheinlich nur sehr selten notwendig, so dass hier meistens NULL zurückgegeben werden kann.

Die Methode GetRenderer soll für einen der Tool-Parameter einen Renderer zurückgeben. Hier bin ich ehrlich gesagt nicht ganz schlau geworden, was diese Methode bringen soll und habe sie ebenfalls auf NULL gesetzt, ohne dass Komplikationen aufgetreten sind.

Mit den Eigenschaften HelpFile, HelpContext und MetadataFile kann dem Tool-Benutzer zusätzliche Hilfestellung gegeben werden. Ich habe mich damit begnügt, die Tools bzw. die benötigten Parameter in der Eigenschaft ParameterInfo ausführlich zu beschreiben. Der Benutzer kann die Tools auch anhand dieser Beschreibungen benutzen, ohne dass ich noch irgendwelche Helpfile schreiben muss. Wenn aber Helpfiles gewünscht werden, dann ist hier der richtige Ort.

Die IsLicensed-Methode prüft, ob dem Tool das richtige Lizenz-Level zur Verfügung steht. Ist dies nicht der Fall, wird das Tool gar nicht erst ausgeführt. In diesem Beispiel wird geprüft, ob eine ArcInfo-Lizenz vorhanden ist:

public bool IsLicensed()
{
	IESRILicenseInfo licInfo = new ESRILicenseInfoClass();
	return licInfo.IsLicensed(esriProductCode.esriProductCodeProfessional);
}

Übersicht:
Teil 1 (Einführung)
Teil 2 (Implementierung von IGPFunctionFactory)
Teil 3 (Implementierung von IGPFunction)
Teil 4 (Implementierung von IGPFunction:ParameterInfo)
Teil 5 (Implementierung von IGPFunction:Validate)
Teil 6 (Implementierung von IGPFunction:Execute)
Teil 7 (Fazit)

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>