Thursday, 11 April 2013

GeoREST Erweiterung in MapGuide / AIMS


Um in einem Bericht zum  ausgewählten Objekt auch einen Kartenausschnitt einzubinden ist scheinbar der Rückgriff  auf MapGuide/AIMS erforderlich. Map selbst kann im Rahmen der Reporterstellung scheinbar keine Karte erzeugen.

Im Blog vom Geospatialnavigator ist beschrieben, wie man in einen Topobase Report eine Karte - basierend auf einer WMS Abfrage - einfügen kann. WMS bietet jedoch keine Möglichkeit, ein Objekt hervorzuheben oder zu markieren.

Eine andere Möglichkeit, die Karte zu erzeugen und das Objekt hervorzuheben scheint über GeoREST möglich zu sein. Danke an den Autodesk Support für diesen Hinweis.

Ohne genauere Kenntnisse in der zugrunde liegenden RESTFul Architektur / Softwaremodell  habe ich für AIMS 2012 die GeoREST Erweiterung installiert. Es hat etwas gedauert, bis das erste Beispiel auch funktioniert hat. Hier für andere Einsteiger einige ergänzende Hinweise zur Installation und Konfiguration:

Installiert wurde die "Technology Preview" von der AIMS 2012 CD. Der Installer scheint im wesentlichen Dateien auf die Festplatte zu kopieren. Zumindest bei mir war der IIS anschliessend nicht für die GeoREST Erweiterung konfiguriert. Die Installationsanleitung dazu findet man hier:

Die Anleitung ist kurz und präzise – soweit hat die Einrichtung unter W2008 ohne weiteres funktioniert. Den GeoRestHttpServer (Verknüpfung landet auf dem Desktop nach Installation der Technology Preview) benötigt man dann nicht.  Der Test der Installation über Aufruf der URL (<<mapguide server>>/rest/hello) war erfolgreich:


In der TechnologyPreview sind zwei Beispiele vorbereitet - Sheboygan und Spatiallitedemo.  Falls das MapGuide Beispiel "Sheboygen" noch nicht installiert ist – das MapGuide Package befindet sich auf der AIMS Installations CD bzw. hier.

Für den ersten Einstieg in die GeoRest Extension ist der CONF Ordner und dessen Inhalt von Bedeutung. Der CONF Ordner enthält Projektspezifische Unterordnern (und ggf. weitere Unterordner). Je Ordner ist jeweils eine Konfiguration/Applikation abgespeichert, u.a mit Angaben zu:
  • welche Datenquelle und Karte soll angesprochen werden (MapGuide oder FDO)
  • welche Art von Ausgabemöglichkeit besteht (HTML, XML, ….).
  • Vorlagen für die formatierte Ausgabe (z.B. HTML)

Im Beispiel will ich direkt auf MapGuide zugreifen um letztlich eine Karte zu erzeugen. Die vordefinierte Beispieldatei in "conf\Sheboygan\Property\restcfg.xml" ist jedoch für den Zugriff auf eine SDF Datei (via FDO) vorkonfiguriert. Daher sind folgende Einstellungen erforderlich:

<RestConfig>
  <Data>
    <Resource uripart="property">
      <Source type="MapGuide">            <FeatureSource>Library://Samples/Sheboygan/Data/Parcels.FeatureSource</FeatureSource>    
          <FeatureClass>SHP_Schema:Parcels</FeatureClass>    
          <ServerIp><<server_ip>></ServerIp>    
          <ServerPort >2821</ServerPort>
          </Source>

Wichtig ist der <ServerPort> - hier muss man je nach AIMS / MGOS Version nachschauen, welcher Port verwendet wird. Die Information ist in der "bin\serverconfig.ini" im Abschnitt "[ClientConnectionProperties]" abgelegt oder wird in der MapAdmin Web-Oberfläche von MapGuide angezeigt. Stimmt der Port nicht, erhält man beim Aufruf einer GeoRest Anwendung folgende Fehlermeldung:

Failed to retrieve message for "MgConnectionFailedException".

Ist die RESTCFG.XML entsprechend konfiguriert – und IIS neu gestartet - kann man über die URL http://<<mapguide_server>>/rest/data/property/3.html

einen vordefinierten Bericht mit Karte abrufen:


Welche Logik steht hinter der URL Struktur?

/rest  :  Definiert im IIS für die GeoRest Erweiterung
/rest/data  : "data" scheint fix durch die GeoRest Erweiterung vorgegeben
/resr/data/property/ : "property" ergibt sich aus einer der restcfg.xml Dateien:

<RestConfig>
  <Data>
    <Resource uripart="property">

Jede Konfigurationsdatei definiert einen weiteren Zusatz zur URL "/rest/data" damit unterschiedliche GeoRest Anwendungen umgesetzt werden können. Diese Erweiterung ist unter <Resource uripart=""> abgelegt.

Für das Sheboygan Beispiel ist als Bestandteil der URL für den Aufruf "property" definiert.  Ändert sich der Eintrag hier, muss die URL entsprechend angepasst werden:

<RestConfig>
  <Data>
    <Resource uripart="grundstueck_bericht">

http://<<mapguide server>> /rest/data/grundstueck_bericht/21.html


Ist die RESTCFG.XML hier falsch konfiguriert bzw. passt ein URL Aufruf zu keiner der vorhandenen RESTCFG.XML Dateien wird folgende Fehlermeldung ausgegeben:

Failed to retrieve message for "MgRuntimeException". Failed to retrieve message for "Undefined Resource! Unable to map URL to Resource. Check configuration file.".

2 comments:

  1. Did you try the new version AIMS 2014? Does the folder "GeoREST" work without problem in 2014? I can generate the texture without problem, but the map image can't be generated.

    ReplyDelete
    Replies
    1. Hi,

      no I haven't installed 2014 yet. What do you mean by "texture"?
      Any error messages, have you checked the log file?

      Rob

      Delete