Kategorien

Eigene Geoprocessing-Tools mit ArcObjects Teil 2: IGPFunctionFactory

Die Implementierung von IGPFunctionFactory ist recht einfach zu bewerkstelligen. Es geht im Prinzip nur darum, dass man alle die GP-Tools auflistet, die zu der logischen Tools-Gruppe gehören.

Die String-Eigenschaften Name und Alias stehen für die Namen, die man der logischen Gruppe von GP-Tools geben will und können natürlich frei gewählt werden. Die CLSID-Eigenschaft nimmt die CLSID der Tools-Gruppe auf, z.B. so:

public ESRI.ArcGIS.esriSystem.UID CLSID {
    get {
     UID theUID = new UIDClass();
     theUID.Value = "ToolGruppenName";
     return theUID;
    }
}

Die GetFunction-Methode nimmt den Namen eines GP-Tools entgegen und gibt das dazugehörige GPFunction-Objekt zurück:

public IGPFunction GetFunction(string Name)
{
    IGPFunction gpFunction = null;
    switch(Name)
    {
    case "GP-Tool1":
        gpFunction = new Tool1GPFunction();
        break;
    case "GP-Tool2":
        gpFunction = new Tool2GPFunction();
        break;
    }
    return gpFunction;
}

Die Methode GetFunctionName nimmt den Namen (String) eines GP-Tools entgegen und gibt das dazugehörige Name-Objekt zurück:

public ESRI.ArcGIS.Geodatabase.IGPName GetFunctionName(string Name)
{
	IGPFunction gpFunction = this.GetFunction(Name);
	return gpFunction.FullName as IGPName;
}

Die Methode GetFunctionNames liefert eine Aufzählung mit allen Funktionsnamen der logischen Tools-Gruppe zurück:

public ESRI.ArcGIS.Geodatabase.IEnumGPName GetFunctionNames()
{
	IArray functionNamesArray = new EnumGPNameClass();
	functionNamesArray.Add(this.GetFunctionName("GP-Tool1"));
	functionNamesArray.Add(this.GetFunctionName("GP-Tool2"));
	return (EnumGPNameClass) functionNamesArray;
}

Die Methode GetFunctionEnvironments liefert eine Aufzählung aller GP-Environments zurück, die von dieser Gruppe kontrolliert werden. Diese Methode habe ich jedoch nicht weiter implementiert, so dass sie einfach null zurückgibt. Bisher habe ich damit keine negativen Erfahrungen gemacht. Sie ist in der ESRI-Dokumentation auch als optional angegeben.

Ü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>