Montag, 29. April 2013

Publizieren nach Mapserver/MapGuide - Vorsicht Spassbremse


Publiziert man eine Karte aus Map nach MapGuide/AIMS kann es passieren, dass im Web-Projekt pro Layer ein Spatial-Filter gesetzt wird, der sich sehr nachteilig auf die Performance auswirkt.
 
Das Problem hatte ich nach einiger Suche schon vor einiger Zeit entdeckt und mir ein kleines PHP Script geschrieben, dass in einem Web-Projekt die Spatial Filter entfernt. Leider hatte ich das bei einem kürzlich publizierten Projekt mit schlechter Kartenperformance schon wieder vergessen. Daher hatte ich begonnen, die Ursache zu suchen : liegt es an den verwendeten Symbolen, an der Vielzahl der Klassen je Layer oder an etwas anderem? Mit AIMS 2013 kann man je Karte einen einfachen Performancebericht erstellen. Nachdem ich entsprechend einige Tests durchgeführt hatte fiel mir dann aber doch noch auf, dass bei den Layern der Spatial Filter gesetzt war. Kaum waren diese entfernt, hatte sich die Kartenperformance wesentlich verbessert. Die Performanceberichte zeigen dies deutlich:
 
Karte 5 Layer:
- mit einem Spatial Filter je Layer : Kartenaufbau ca 2.5 sec


 
- ohne Spatial Filter je Layer: Kartenaufbau ca. 0.01 sec

 
Der Layerfilter stammt aus dem Darstellungsmodell. Wann genau der Layerfilter mit übergeben wird habe ich nicht weiter untersucht. Er sollte z.B. nicht mit übertragen werden, wenn man die Option "Auf Ansichtsfenster begrenzen" im Darstellungsmodell nicht verwendet. Jedenfalls empfiehlt es sich, nach dem Publizieren im Layer-Editor in Studio zu schauen, ob die Layer einen Spatial Filter haben oder nicht:
 

 
Die Performanceeinbusse kommt zu Stande, da jede Layer- Abfrage in Oracle nun zwei Spatial Filter enthält - einen aus der Layerdefinition und den zweiten aus den Koordinaten für die neue Karte. Der Filter aus der Layerdefinition ist wohl in den meisten Fällen nicht gewollt.
 
Per Script kann ich die unerwünschten Spatial Filter entfernen und die anderen Filter beibehalten:

Freitag, 26. April 2013

Log Dateien in Map und AIMS

Ab und zu erhält man in Map eine Fehlermeldung, ohne das daraus klar wird, was genau die Ursache bzw. der Grund ist. Auch bei einem der relativ seltenen Abstürze erhält man nicht immer eine ausreichende Angabe, warum das Problem aufgetreten ist.
Im Falle eines Absturzes mit CER Bericht kann man manchmal die Details zu dem Problem in der Datei "Dumpuserinfo.xml" finden, die sich direkt per Link aus dem CER Fenster öffnen lässt. 


Für einen kürzlich aufgetretenen Crash lautet der entsprechende Eintrag in der Dumpuserinfo.xml:
<InnerException type="Autodesk.Map.IM.Data.AttributeNotFoundException"><Message>Attribut "F_CLASS_ID_ATTR" nicht gefunden in der Tabelle "konnte nicht ausgewertet werden"</Message>
Anhand der genaueren Beschreibung kann man in einigen Fällen die Ursache dann selber beseitigen.
Bei Topobase bezogenen Fehlermeldungen in Map lohnt sich ein Blick in die "Applicationlog.xml" Datei. Diese findet sich im Unterorder "Log" des Installationsverzeichnisses. Nicht nur Map hat dieses zusätzliche Logging für die Topobase Funktionen sondern auch der Administrator und TBWEB (AIMS mit IAE).
Die Angaben über den genauen Zeitpunkt des Loggings der Meldung ist in einem Timestamp codiert, so dass sich Datum und Zeit nicht direkt ablesen lässt:



Zudem kann man in einer guten gefüllten Log Datei wichtige Meldungen leicht übersehen. Für die sauber strukturierte Anzeige der Meldungen gibt es das kostenlos erhätliches Programm "chainsaw". In Chainsaw werden Meldungen nach Bedeutung farblich getrennt dargestellt. Insgesamt bleibt der Überblick so besser gewahrt:



Das Programm ist schon relativ alt (2006) und wird nicht weiterentwickelt. Ob es andere Viewer für die Log Dateien gibt ist mir nicht bekannt. Die Log Dateien basieren scheinbar auf dem Log4net Framework.
Das Tool steht hier zum Download bereit.

CountryKit Dumps - Tablespaceeinstellungen

Bis auf Strom werden die CK CHs mit einem Dump ausgeliefert. Die exportierten Oracle User wurden mit den Tablespace - Einstellungen "USERS" und "INDX" erstellt. Der Export wurde von einem DBA vorgenommen.

Ist in der eigenen Oracle Datenbank ein Tablespace "USERS" vorhanden - was bei vielen Oracle Datenbanken der Fall sein dürfte - dann landen beim Import der Dumps die Datenbankobjekte auch dort. Dies ist unabhängig davon, ob man den Oracle Benutzer vorgängig anlegt und einen anderen Default-Tablespace zuweist oder beim Import über den AIA entsprechend Einstellungen vornimmt.

Der "alte" Oracle Import lässt es nicht zu, die Tablespace Einstellungen während des Imports zu ändern. In der Map Hilfe heisst es entsprechend:

Beim Importieren wendet Oracle die folgende Logik an:
•Wenn die Zieldatenbank einen Tablespace mit demselben Namen wie die ursprüngliche Datenbank enthält, wird die Tabelle in diesem Tablespace platziert. Sie können den Ziel-Tablespace nicht ändern.
•Wenn die Zieldatenbank keinen Tablespace mit demselben Namen enthält, wird die Tabelle im Vorgabe-Tablespace (wird während Schema-Erstellung mit dem Wert aus dem Dialogfeld Dump-Import angegeben) platziert.

Mit dem neuen Datapump ist während des Imports eine neue Zuweisung des Tablespaces - oder auch mehrerer Tablespaces - möglich. Die CK Dumps lassen sich jedoch nur mit dem "alten" imp.exe importieren, nicht mit dem neuen DataPump-Import.

Welche Lösungen gibt es für das Problem?

Oracle-seitig gibt es zwei Möglichkeiten, deren Beschreibung man hier findet:

Nähere Hinweise zu zweiten Varianten findet sich auch bei Oracle:

Hier ist zu beachten - die CK Dumps wurden von einem Oracle Benutzer mit DBA Rolle erstellt. Für den Import ist daher ebenfalls eine DBA Rolle erforderlich. Die DBA Rolle beinhaltet das Privileg "unlimited tablespace". Dem Oracle Benutzer, der den Import durchführt das Privileg "unlimited tablespace" zu entziehen reicht daher nicht. Es müsste der DBA Rolle entzogen werden.

Ist keine der beiden Varianten praktikabel, dann bleibt noch, das CK ohne Dump gemäss der Beschreibung im jeweiligen "Workbook"  zu erstellen. Bei Bedarf kann man sich nach der manuellen Einrichtung einen eigenen Vorlage-Dump anlegen.

Donnerstag, 25. April 2013

AutoCAD Map Profil zurücksetzen


Eine neue Funktion in Map 2013 hat mir gerade sehr geholfen. Bei einem Benutzer war der Bildaufbau extrem langsam - tw. Faktor 10 gegenüber anderen Nutzern. Zusätzlich erschien nach dem Digitalisieren eines Features eine Fehlermeldung. Beide Probleme traten nur auf, wenn sich der Nutzer an seinem PC angemeldet hat. Ich konnte die  Probleme an diesem PC mit meinem eigenen Windows Zugang nicht beobachten, auch an allen anderen PCs hat es ohne Schwierigkeiten funktioniert.

Der Tipp zur Lösung kam von Autodesk Support. Im Windows Start Menü von Map findet man die Funktion "Einstellungen auf Vorgabe zurücksetzen". Damit wird das AutoCAD Profil des Benutzers gelöscht und neu angelegt. 


Früher musste man dazu die Registry öffnen und einige Einträge entfernen sowie bestimmte Ordner im Benutzerverzeichnis löschen. Da es doch öfter mal Probleme mit den AutoCAD Profilen geben kann, ist die neue Funktion in Map 2013 (bzw. schon seit 2012 vorhanden) eine echte Erleichterung, um das Profil zurückzusetzen. Für frühere AutoCAD Versionen findet man die Anleitung auf der Autodesk Webseite, z.B. für Map 2010 in TS14062982. (Reinitiating secondary installer )

Wer beim Bildaufbau oder Digitalisieren merkwürdige Fehlermeldungen bekommt, die nur an einem Rechner auftreten - manchmal hilft in diesen Fällen, den Temp-Ordner des Windows-Benutzers  zu leeren. Um in den Temp-Ordner des Benutzer zu gelangen gibt man in '%temp' in die Adressleiste des Windows Explorers ein:


Samstag, 20. April 2013

Infrastructure Modeler 2013 R2

Ich wollte letzte Woche den Infrastructure Modeler 2013 installieren und habe auf der Autodesk - Webseite mit den Servicepacks gesehen, dass es einen "Release 2" gibt, den man im Subscription Center herunterladen könne:

"This hotfix applies to only the R2 release of Autodesk Infraworks 2013. Autodesk Infraworks 2013 R2 is available to product Subscribers on the Autodesk Subscription Center."

Achso, den Infrastructure Modeler gibt es ja nicht mehr - dafür jetzt "Autodesk Infraworks" (scheinbar auch rückwirkend für Version 2013).

Also, nichts wie hin zum Sub-Center und runterladen. Leider habe ich dort bei "Products" keinen "Infrastructure Modeler" gefunden - nur die Design Suite mit ca. 12 GB Umfang. Aber die DesignSuite hab ich ja schon - und ausserdem will ich nicht 12 GB runterladen - wahrscheinlich beinhaltet der Download noch  R1. Support Anfrage bei Autodesk gestellt.....

.... nach einiger Recherche dort stellt sich heraus: ich kann den Download bei "Produkte" nicht sehen, weil wir keine einzelne Lizenz haben sondern nur die DesignSuite-Lizenz. Der R2 steht jedoch bei "Extensions" und nichts bei "Products" zum Download zur Verfügung. Alles klar - hab ich dann dort auch so gefunden. Hätte man das nicht mit erwähnen können beim obigen Verweis auf das Sub-Center? 


Oracle Export bei Job-aktiven Dokumenten


Bei einem Job-aktiven Dokument in AutoCAD Map sind auch für den Dump-Export nur die "Live" Daten sichtbar. Das Job Konzept in Map basiert auf der Virtual Private Database (VPD) in Oracle. Eine kurze Einführung in Deutsch findet man hier  oder ausführlich hier bei Oracle.

Von der Anwendung der VPD wird nur SYS ausgenommen. Um einen vollständigen Export eines Job-aktiven Dokumentes zu erreichen, wäre die erste Möglichkeit, mit dem SYS Account den Export durchzuführen. Der realistische Ansatz ist jedoch, den Oracle Benutzer, der den Export durchführt, von der Anwendung der VPD temporär oder dauerhaft zu befreien. Dies geschieht über die folgende Anweisung:

GRANT EXEMPT ACCESS POLICY TO user_der_export_durchführt;

Um die Änderung wieder zurückzunehmen ist folgende Anweisung erforderlich:

REVOKE EXEMPT ACCESS POLICY FROM user_der_export_durchführt;

Dies ist etwas versteckt - in der ReadMe - auch in Map dokumentiert

http://docs.autodesk.com/MAP/2013/DEU/files/readme-map.htm

Wer aus einer Applikation heraus - z.B. FME - auf alle Daten in einem Job-aktiven Dokument zugreifen will kann dies - beschränkt für die aktuelle Session auf das job-aktive Dokument - über die folgende SQL Anweisung erreichen:

select setjob(-1) from dual

bzw.

call job3.setjob(-1)

Über das Map-interne PL/SQL Paket job3 wird dadurch für die aktuelle Session alle Jobs im Dokument sichtbar. Anstelle "-1" kann eine bestimmte Job ID eingegeben werden, um an die Daten speziell dieses Jobs zu gelangen.

siehe auch: http://aucache.autodesk.com/au2011/sessions/2300/class_handouts/v3_AU2011ClassHandout_GS2300.pdf 
http://de.slideshare.net/SafeSoftware/using-fme-for-the-city-of-palo-alto-topobase-implentation

Map 2013 Abwasser Fachschale - kein Klassifizierungsmodell gefunden

Beim Aufruf der Fachschalenoptionen für die Fachschale Abwasser in Map 2013 erscheint eventuell folgende Meldung:

"Es wurde kein Klassifizierungsmodell im System gefunden. Stellen Sie sicher, dass die entsprechenden Plugins für Abwasser installiert sind."


Das Fenster mit der Meldung ist auch mit einem Warnkreuz-ähnlichen Symbol versehen - das kann nichts Gutes bedeuten, oder? Zumal wenn man gerade auf Suche nach der Lösung für ein Problem ist.....und es auch noch auf drei verschiedenen Rechnern auftritt. Was ist hier los? Muss ich nochmal neu installieren?

Die fehlende Klassifizierung kann als Plugin installiert werden. Dazu muss man jedoch die Abwasser-Extension aus dem Subscription-Center runterladen. Um diesen Zusammenhang zu sehen, musste ich allerdings den Autodesk Support in Anspruch nehmen.

Die "Klassifikation" ist dann zwar als solche in der Begleitdokumentation im Subscription Center erwähnt - was sich genau dahinter verbirgt bleibt aber erstmal unklar. Ich finde es sehr verwirrend, wenn eine "Hinweis" erscheint, die wie eine Fehlermeldung daherkommt und dann nicht genauer erklärt, was es damit auf sich hat.

Warum Map hier überhaupt von der Extension weiss? Wenn sie so wichtig ist, dass man auf ihr Fehlen extra "hinweisen" muss - warum ist sie dann nicht gleich mit in der Fachschale oder im CountryKit enthalten?


Dump Export mit epx.exe in Oracle 11


Wer mit Oracle 11 arbeitet ist angehalten, die neuen "DataPump" Import/Export Funktionen von Oracle zu nutzen. Speziell den alten Export (exp.exe) unterstützt Oracle für Oracle 11g nicht mehr. Das neue "DataPump" dagegen lässt keinen Import oder Export von Dumps von einem beliebigen Rechner mit Oracle Client zu. Dies ist für viele Anwender eine unflexible Lösung.

Der alte Export lässt sich weiterhin noch verwenden. Leider gab es bis einschliesslich Oracle Version 11.2.0.1 ein Problem, dass den alten Export in seiner Anwendbarkeit stark eingeschränkt hat. Der Export ignoriert unter gewissen Umständen leere Tabellen: wird eine neue Tabelle angelegt, ist die Voreinstellung in Oracle 11 R2 nun, dass nicht automatisch auch ein Segment angelegt wird (Deferred Segment Creation). Dies geschieht erst, wenn Daten in die Tabelle eingefügt werden. Diese leeren und bisher noch nicht befüllten Tabellen wurden durch exp.exe nicht exportiert.  Die ReadMe Dateien von AutoCAD Map 2013 und Map 2014 erwähnen diesen Umstand auch:

Das vorgabegemäße Exportdienstprogramm (EXP) wird von Oracle für 11g nicht mehr unterstützt. Das Importieren (IMP) wird aus Gründen der Kompatibilität weiterhin unterstützt. Vorhandene Fachschalen von Oracle 10g, die von AutoCAD Map 3D exportiert wurden, können deshalb dennoch importiert werden, wobei die bekannten Funktionen in System-Administrator verwendet werden.

Wenn Sie mit Oracle 11g R2 aus System-Administrator exportieren, kann in einigen Fällen die daraus resultierende DMP-Datei nicht importiert werden. Das Exportdienstprogramm ignoriert einige leere Tabellen, ohne eine Warnung auszugeben. Dies führt zu einem Fehler, wenn Sie versuchen, den Import durchzuführen.

Mit Version 11.2.0.2 hat Oracle das Problem allerdings behoben - auch wenn es scheinbar an einer entsprechenden Dokumentation fehlt. Der einzige Hinweis darauf habe ich bisher nur hier gefunden:

http://www.dba-oracle.com/t_oracle_deferred_segment_creation.htm

Beim Export mit Oracle 11.2.0.2 oder höher werden leere Tabellen wieder beim "alten" Export (exp.exe) berücksichtigt:

Angemeldet bei: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Exportieren in WE8MSWIN1252-Zeichensatz und AL16UTF16-NCHAR-Zeichensatz durchgeführt

Spezifizierte Benutzer werden gleich exportiert ...
. Prozedurale Pre-Schema-Objekte und -Aktionen werden exportiert
. Fremdfunktions-Bibliotheksnamen für Benutzer TOPO_TEST_RF werden exportiert
. Synonyme vom Typ PUBLIC werden exportiert
. Synonyme vom Typ PRIVATE werden exportiert
. Objekttypdefinitionen für Benutzer TOPO_TEST_RF  werden exportiert
TOPO_TEST_RF Objekte werden gleich exportiert ...
. Datenbank-Links werden exportiert
. Sequenzzahlen werden exportiert
. Clusterdefinitionen werden exportiert
. Tabellen von TOPO_TEST_RF werden gleich exportiert ... über 'Direct Path'
. . Export der Tabelle                            FOO          0 Zeilen exportiert
...
...
Export erfolgreich ohne Warnungen beendet.

Mittwoch, 17. April 2013

Plot-Extension

Es hat mich einige Zeit gekostet, die Plot-Extension zu verstehen. Eigentlich ist die Verwendung nicht kompliziert - es fehlt nur an einer verständlichen Einführung in das Thema. Meinen aktuellen Kenntnisstand habe ich zusammengefasst - zusammen mit dem Plot Tutorial von Autodesk und der Map Hilfe fällt der Einstieg hoffentlich etwas leichter.

Download PDF - AutoCAD Map Plot Extension Hinweise

Montag, 15. April 2013

CountryKit nachinstallieren - vorhandene Installationen werden gelöscht


Wer ein neues CountryKit für den AIA 2013 installiert wird vielleicht feststellen, dass bereits installierte CountryKits daduch gelöscht werden. Die Installationsrountine vom AIA prüft nicht, welche CountryKits bereits installiert sind und löscht vorhandene bei der nachträglichen Installation eines weiteren Countrykits ohne Nachfrage.
 
So passiert es:

1 - CK 1 herunterladen und nach C:\Temp entpacken
2 - AIA Installer aufrufen um CK zu installieren
3 - CK installieren
4 - C\:Temp leeren
5 - CK 2 herunterladen und nach C:\Temp entpacken
6 - AIA Installer aufrufen um CK zu installieren
7 - CK installieren
 
Ergebnis: CK1 ist im "Template" Ordner des AIA "verschwunden".
 
Wer allerdings seinen Temp Ordner nicht aufräumt (Schritt 4), wird das Problem nicht bemerken. Der AIA Installer merkt sich, von welchem Ordner aus er das letzte CK installiert hat. Findet er dort noch die entsprechenden XML Dateien, dann zeigt er diese bei Installation des neuen CK an - der Eindruck entsteht, der AIA erkennt welche CK schon installiert sind. Wahrscheinlich installiert er sie einfach nochmal. Um das Problem zu umgehen muss man also alle CK die man benötigt zur gleichen Zeit installieren. Nachinstallieren ist nicht ohne weiteres möglich.

Sonntag, 14. April 2013

Map - Report mit Karte

Hier die Beschreibung, wie man in einen Map-Bericht eine Karte auf Grundlage von GeoRest einbinden kann.  Vorteil gegenüber der WMS Lösung (beschrieben hier)
– das Objekt kann in der Darstellung hervorgehoben werden.

Voraussetzungen:

   - GeoRest Extension installiert und konfiguriert (siehe auch hier)
   - MapGuide Karte mit zum Bericht passenden Layer(n)

Zunächst die Konfiguration der GeoRest Erweiterung:

   - im CONF Ordner neues Verzeichnis anlegen
   - im Verzeichnis neue "restcfg.xml" erzeugen


<RestConfig>
 <Data>
  <Resource uripart="eos_flaeche_karte">
   <Source type="MapGuide">                               
    <FeatureSource>Library://AV6_UEP/Data/Topobase_1.FeatureSource  
    </FeatureSource>                                 
    <FeatureClass>WT_AV_TEST6_LESEN:LM_V_DSP_SO_SURFACE_ELE 
    </FeatureClass>
    <ServerIp>10.99.20.152</ServerIp>    
    <ServerPort >2821</ServerPort>
   </Source>
   <Representation renderer="PNG8" pattern=".png">                                 
    <MapDefinition>Library://AV6_UEP/Vorgabe.MapDefinition 
    </MapDefinition>                                                       
    <SelectionLayer>Einzelobjekt_Flaechenelement 
    </SelectionLayer>
    <DefaultZoomFactor>15</DefaultZoomFactor>                              
   </Representation>                      
  </Resource>            
 </Data>
</RestConfig>


<Resource uripart="eos_flaeche_karte"> - Adressbestandteil der URL zum Aufruf der GeoRest die die Karte erzeugt
<FeatureSource> - Topobase Datenverbindung
<FeatureClass> - Schema:Featureklasse, für die der Report erzeugt wird und ein Kartenobjekt eingebunden werden soll
..
<MapDefinition> - Kartendefinition für die Kartenerstellung
<SelectionLayer> - Layername für die Markierung des Objektes
<DefaultZoomFactor> - Wert kann auch später noch über URL Parameter überschrieben werden,


Konfiguration des Reports in AIA

1.  Berichtdesigner öffnen
2.  Neuen Bericht für die Featureklasse erstellen, die in der "restcfg.xml" konfiguriert wurde 
3.  Abschnitt "Detail-Körper" im Designer auswählen und Steuerlement "Bild" hinzufügen
4.  Im Menü "Hinzufügen >> Funktion >> Verwalten" eine neue Funktion hinzufügen
(im Beispiel:. georest_karte_eo_flaeche)
5.  VB.Net Script einfügen, URL Adresse anpassen:

Dim eoflaeche_fid as String
Dim URL as String


eoflaeche_fid = (Me.Record.LngValue("Fid")).ToString()

URL = "http://<<mapguide>>/rest/data/eo_flaeche_karte"
URL +=  "/.png?SETVIEWSCALE=500"
URL += "&SETDISPLAYWIDTH=800&SETDISPLAYHEIGHT=800&"
URL += "filter_1_AND_EQUAL_FID="
URL +=  eoflaeche_fid

georest_karte_eo_flaeche = URL

6.  Steuerlement "Bild" auswählen und in den Eigenschaften bei "PictureFile" den Verweis auf die ebene erstellte Funktion einbinden:

{fun.Georest_karte_eo_flaeche}




7.  Für die Kontrolle, ob die URL korrekt ist, Textelement hinzufügen und bei "Content" wie oben auf die VB.NET Funktion verweisen:



Erläuterungen zum Script:

Der Platzhalter <<mapguide>> muss im Script oben mit der korrekten URL zum MapGuide Server ersetzt werden.

Über die URL wird die GeoRest Anwendung aufgerufen und ein Kartenbild zurückgeliefert. Der URL Bestandteil " eo_flaeche_karte" entspricht der Einstellung aus der "restcfg.xml" von oben.

Übergeben wird hier die FID des Objektes, zu dem der Bericht erstellt wird. Über den Filter wird das Objekt gefunden:

URL += "filter_1_AND_EQUAL_FID="
URL +=  eoflaeche_fid

Zusätzlich werden weitere URL Parameter übergeben um die Bildgrösse und den Massstab festzulegen:

URL +=  "/.png?SETVIEWSCALE=500"
URL += "&SETDISPLAYWIDTH=800&SETDISPLAYHEIGHT=800&"

Zu beachten ist, dass beim Einbinden in den Bericht die Karte nicht mehr massstabsgetreu ist.

Zu den einzelnen zulässigen URL Parametern der GeoRest Extension und zu den Einzelheiten des Filters siehe hier

Den Bericht zum Formular hinzufügen und aufrufen:




Keine Anzeige der Makierung - was könnte das Problem sein?
- Layer mit den Features hat Filter oder Themen und nicht alle Features werden dargestellt. Es wird dann beim Aufruf über GeoRest zwar eine Karte erzeugt, da das Feature gemäss Layereinstellungen nicht dargestellt wird fehlt auch die Hervorhebung.
- Layername in Studio (im Layerordner) geändert (wegen Leerzeichen und Umlauten) aber den Layernamen nicht auch in der Kartendefinition entsprechend angepasst

Fehlermeldung - bezüglich GeometryExtent
- genaue Meldung liegt mir nicht mehr vor. Ursache war, dass aus dem Formular eine FID an die GeoRest Anwendung übergeben wurde, die es in der Featureklasse nicht gab bzw. das Objekt dort keine Geometrie hat. Man muss bei komplexeren Datenmodellen darauf achten, dass die FID aus dem Formular (oder welche ID mach auch übergibt) auch zur Featureklasse für die Kartendarstellung passt.




Donnerstag, 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.".

Dienstag, 9. April 2013

TB2DisplayModel – Migration

Wer aus TB2 bestehende Darstellungsmodelle migrieren will muss u.a. folgende Punkte beachten:

(1) Topobase.TB2DisplayModel.dll läuft noch mit Map Enterprise 2012 aber nicht mehr mit Map 2013

(2) Um die Symbole (Blöcke) zu übernehmen ist zusätzlich Topobase Client 20111 erforderlich

(3) Die Migration des Darstellungsmodells erfordert, dass das flach migrierte TB2 Dokument in AIA 2012 verfügbar ist.


Zu (1)
Wegen der internen Änderungen in der API von Map 2012 zu Map 2013 läuft das Plugin nicht mehr. AIA 2013 stürzt beim Start ab.

Zu (2)
Die Blöcke werden durch ein Programm migriert (SymbolGenerator.exe), dass Topobase Client 2011 benötigt. (Topobase Client 2010 wurde nicht getestet, Map 2012 funktionierte nicht). Dabei muss Topobase Client nicht unbedingt installiert sein – es genügt, wenn man eine vorhandene Topobase Client Installation lokal kopiert. Hier genügt es auch, die 32bit Version zu verwenden, wenn Map 2012/2013 bereits auf Windows 7 64bit läuft.
Für das Programm "SymbolGenerator" ist im Gegensatz zu dem Plugin kein Quellcode verfügbar.

Zu(3)
Wer mit Map 2013 die Flatport Migration durchführt und nur mit Map 2012 die TB2 Darstellungsmodelle migrieren will steht vor folgendem Problem: die TB2DisplayModell - Migrationswerkzeuge erfordern, dass das flachmigrierte TB2 Dokument aktiv in AIA 2012 ist, wenn man die TB2DisplayModel Migration durchführt, da dass Werkzeug in dem flach migrierten Dokument u.a. die Tabelle TB_MIGRATION_TAB abfragt.

Map 2013 – In Fachschale konvertieren

Mit Map 2013 gibt es die neue Funktion "In Fachschale konvertieren" mit der sich DWG oder FDO Daten in eine Fachschale  migrieren lassen. Über ein Mapping kann die Zuordnung von Ausgangsdaten (z.B. Layer) zu Zieltabellen gesteuert werden.

Im Zusammenhang mit dem Erstellen eines Mappings sind mir bisher folgende Punkte aufgefallen, die etwas Zeit gekostet haben:

Map Objektdaten 
Diese werden nur aufgelistet, wenn man entsprechend in der Klappliste von "Entity" auf "Object Data" umstellt. Das hatte ich eine ganze Weile übersehen.



Leere Layer
Enthält eine DWG Layer ohne Zeichnungsobjekte, dann werden diese Layer im Mapping Dialog nicht angezeigt. Das ist unschön, wenn man ein Mapping erstellen will und die Ausgangszeichnung zwar alle Layer enthält, nicht unbedingt aber alle Layer auch Daten haben. Lädt man ein bestehendes Mapping bei einer solchen Zeichnung, dann wird auch hier das Mapping des leeren Layers nicht angezeigt. Für den Anwender verwirrend, wenn er das Mapping kontrollieren will und der Eindruck entsteht, dass bestimmte Layer nicht gemappt sind.

Dateiname
Die Mapping Datei lässt sich nur einladen, wenn der Dateiname in der Mapping Datei mit dem Dateinamen der zu migrierenden Zeichnung übereinstimmt. Auch hier muss der Anwender entweder den Dateinamen ändern oder in der Mapping Datei (XML) den Namen anpassen.


Gespeichertes Mapping
Lädt man ein Mapping dann sind alle Einträge auf der Datenquellenseite aktiviert. Hier entsteht der Eindruck, alle Objekte mit allen Attributen werden gemappt. Tatsächlich ist nur gemappt, was auf der Zielseite einen Eintrag hat.




Export-Statistik
Hier wird nur angegeben, wie viele Objekte exportiert wurde. Man erhält keine Information darüber, wie viele Objekte nicht exportiert werden konnten (z.B. weil der Geometrietyp nicht für die Zielfeaturetabelle passt). Die Zeile:

357 von 357 Objekten aus 'CCZ1721-MSI' in 'TV_SCHACHT' eingefügt.

ist irreführend, da z.B. Linien auf dem Layer abgelegt sind (im Testbeispiel), die hier nicht erwähnt werden. Die Anzahl "357" bezieht sich nur auf 357 Blöcke, die exportiert werden können, nicht alle Objekte auf dem Layer (358 = 357 Blöcke plus eine PLinie).

Samstag, 6. April 2013

AutoCAD Map 2013 - Master-Detail Formulare : keine Anzeige im Detailformular

In Master-Detail Formularen kann es vorkommen, dass die Detailinformationen zum Datensatz im Hauptformular nicht angezeigt werden. Ursache dafür sind fehlende Einträge in einer der Map Systemtabellen. Beim Anlegen eines Master-Detail Formulares oder auch beim Kopieren eines bestehenden Formulares werden die Einträge aufgrund eines Fehlers in Map (2013, SP1) nicht erzeugt. 


Um das Problem zu beheben muss man die fehlende Einträge in der Tabelle TB_GN_DIALOG manuell hinzufügen. Am einfachsten kann man dies wie folgt:


- Formular im AIA in der Voransicht öffnen
- Maus in das "Eingabefeld" des Detailformulars setzen
- "STRG+D" drücken



Es öffnet sich das Formular zu der Tabelle TB_GN_DIALOG mit dem passenden Datensatz. Hier müssen die Einträge für Detail_fieldname und Master_fieldname eintragen.


Nach dem Aktualisieren das Projekt schliessen und neu öffnen, damit alle Änderungen wirksam werden.