Der WMS Dienst des AIMS kann in Topobase Reports eingebunden werden.
Dazu muß folgende Funktion (hier ein Punktförmiges Objekt) in den Report eingebunden werden:

Dim geom as Autodesk.Map.IM.Graphic.Geometry
geom = Me.Record.GeometryValue(„GEOM“)

Dim URL as String

if not (geom is nothing) then
dim x as long
dim y as long
dim xmin as long
dim ymin as long
dim xmax as long
dim ymax as long

x = (geom.Bounds.MinX + geom.bounds.MaxX) / 2
y = (geom.Bounds.MinY + geom.Bounds.MaxY) / 2

xmin = x-100
ymin = y-100
xmax = x+100
ymax = y+100

URL = „http://SERVERNAME/mapserver2014/mapagent/mapagent.fcgi?REQUEST=GETMAP&SERVICE=WMS&VERSION=1.1.1&FORMAT=image/png&Layers=VOLLSTÄNDIGER/PFAD/ZUM/LAYER1,VOLLSTÄNDIGER/PFAD/ZUM/LAYER1,&SRS=EPSG:31467&BBOX=“ & xmin & „,“ & ymin & „,“ & xmax & „,“ & ymax &“&Width=1200&Height=1200″

else
URL=““
end if

wms = URL

Voraussetzung: Die angesprochenen Layer sind „WMS aktiviert“
Die Schreibweise des Vollständigen Pfades des ist korrekt (Groß-, Kleinschreibung beachten!)

Um das Bild im Bericht zu sehen wird dort ein „Bild“ hinzugefügt.
Die Option PictureFile bekommt für obiges Beispiel den Inhalt: {fun.wms}

Die eigentliche Funktion wurde dem geospatial navigator entnommen und auf aktuelle Versionen (2012-2014) angepaßt.

Nachtrag:
Der Skript Code wurde von einem Mitglied etwas angepasst und kommentiert. Der WMS Dienst ist hier ein öffentlicher!
Mit dem Hinweis das kein „Perfektionspreis“ im VBS vergeben wird hier der CODE:

‚ VB-Script, um in Reports von Autocad Map 3D zum jeweils dargestellten Punktobjekt ein WMS-Bild anzuzeigen
‚ Hinweise:
‚ a) Die Parameter für den WMS-Aufruf in der URL sind nicht einheitlich und müssen je nach WMS-Anbieter ‚ in jedem Detail ausgetestet werden.
‚ b) Das Script ist für Map 3D mit „Oracle / Industry Model“. Für normale Map-FDO ist es nicht getestet; dort gibt es auch Script mit direktem Zugriff auf die Geometrie
‚ Grundidee des Scripts:
‚ – lese die Punktkoordinaten aus den schon im Bericht vorhandenen Werten {North} und {East}
‚ – berechne daraus mit dem definierten Abstand eine umhüllende Begrenzungsbox. Abstand ist in Meter, Abstand = 20 ergibt ein Quadrat 40×40
‚ – setze einen String als URL-Aufruf zusammen
‚ – diese VB-Funktion wird dann im Report als Bilddefinition festgelegt: z.B. {fun.meine_WMS_Funktion}
‚ – Der Report startet die Funktion, die erzeugt die URL und gibt das erzeugte Bild an den Report zurück

Dim URL as String

‚ X und Y als Rechts/East und Hoch/North-Koordinaten. Long hat keine Dezimalen
Dim x as Long
Dim y as Long

‚ Werte aus den schon vorhandenen Feldern abrufen. Das sind Strings, die dann automatisch in Zahlen umgewandelt werden.
‚ Aber da die Strings eventuell Tausender-Formatierungen haben, müssen diese zuerst entfernt werden.
‚ Diese Trennzeichen können je nach System verschieden sein. x = 2,707,382.92 y =1,278,834.45
x = Replace(me.Record.Value(„EAST“), „,“, „“) ‚ ersetze Komma , durch nichts
y = Replace(me.Record.Value(„NORTH“), „,“, „“)

‚ Wenn Koordinaten vorhanden sind
if x > 0 then

Dim abstand as Long
Dim xmin as Long
Dim ymin as Long
Dim xmax as Long
Dim ymax as Long

‚ Berechnung der Bildbegrenzung in Metern. Die Proportionen des Bildplatzhalters im Report
‚ müssen den Proportionen des Bildes entsprechen (z.B. Quadrat -> Quadrat). Sonst wird verzerrt
abstand = 20
xmin = x-abstand
ymin = y-abstand
xmax = x+abstand
ymax = y+abstand

‚ Zusammensetzung der URL. Hochkommas sorgfältig beachten.
URL = „https://ows-raster.geo.tg.ch/wms/swissimage2019.wms?service=WMS&version=1.3.0&request=GetMap&width=500&height=300&styles=&layers=SwissImage_2019&format=image/png&crs=EPSG:2056&bbox=“ & xmin & „,“ & ymin & „,“ & xmax & „,“ & ymax

‚ Wenn Koordinaten fehlen die URL auf leer setzen oder wahlweise auf Ersatzbild mit „https….“
else
URL=““
end if

‚ Rückgabebefehl an den Report
MEINE_WMS_FUNKTION = URL

GordenKock
Author: GordenKock