Mehr

Identifizieren Sie alle Ebenen auf der Karte, ohne das infoWindow vorab zu entwerfen

Identifizieren Sie alle Ebenen auf der Karte, ohne das infoWindow vorab zu entwerfen


Dies gilt für die ArcGIS Server-JavaScript-API 2.4.

Das Beispiel Identify Task zeigt, wie IdentifyTask verwendet werden kann, um Features in mehreren Layern zu finden, wie in den IdentifyParameters angegeben:

identifizierenParams.layerIds = [0,2];

In diesem Beispiel enthält das infoWindow bereits Elemente für die erwarteten Layer, die verwendet werden, um mehrere Features in separaten Registerkarten des infoWindow anzuzeigen:

 //Im JavaScript: dijit.byId("bldgTab").setContent(layerTabContent(bldgResults,"bldgResults")); dijit.byId("parcelTab").setContent(layerTabContent(parcelResults,"parcelResults"));

Gibt es eine Möglichkeit, dies dynamisch zu handhaben und die erforderlichen Registerkarten zur Laufzeit zu erstellen?

Ich möchte beispielsweise IdentifyTask auf allen sichtbaren Ebenen ausführen und die Ergebnisse in einer separaten Registerkarte des infoWindow zurückgeben. Wie kann ich die Registerkarten dynamisch erstellen?


Ja, das ist möglich. Um Ihre Registerkarten dynamisch zu erstellen, sehen Sie sich das programmgesteuerte und das deklarative Erstellen von Dojo-Dijits an. Wenn sich Ihre sichtbaren Ebenen ändern, ändern Sie Ihren Tab-Container, um die entsprechenden Tabs zu entfernen oder hinzuzufügen.

Bearbeiten: Hier ist ein Proof of Concept auf JS Fiddle: http://jsfiddle.net/swingley/wKue4/ Es behandelt nicht wirklich Attribute, aber Sie können auswählen, welche Ebenen identifiziert werden sollen, und den Inhalt des Infofensters dynamisch erstellt.


Ich habe einen Weg gefunden, dies zu tun, aber leider für ein Flex-Projekt. Ich weiß nicht, wie dies auf JavaScript übertragbar ist, aber hoffentlich gibt Ihnen dies eine Vorstellung von der Logik. Für jeden sichtbaren Layer werden die von der IdentifyTask zurückgegebenen Features in einem Datenraster auf einer separaten Registerkarte abgelegt. Obwohl ich den zusätzlichen Code für die Listener, die jeder Zeile im Datagrid hinzugefügt wurden, nicht hinzugefügt habe, wird das Feature auf der Karte hervorgehoben, wenn Sie über jede der Zeilen im Datagrid rollen. Dies können Sie hier in Aktion sehen.

Geschützte Funktion MainMap_mapClickHandler(event:MapMouseEvent):void { var identifizierenParams:IdentifyParameters = new IdentifyParameters(); var clickGraphic:Graphic = new Graphic(event.mapPoint, clickPointSymbol); identifizierenParams.returnGeometry = true; identifizierenParams.tolerance = 5; identifizierenParams.width = MainMap.width; identifizierenParams.height = MainMap.height; identifizierenParams.geometry = event.mapPoint; identifizierenParams.mapExtent = MainMap.extent; identifizierenParams.spatialReference = MainMap.spatialReference; identifizierenParams.layerIds = dynamicLayer.visibleLayers.source; identifizierenParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL; clickGraphicsLayer.clear(); MainMap.infoWindow.hide(); graphicLayer.clear(); CursorManager.setBusyCursor(); identifizierenTask.url = dynamicLayer.url; identifizierenTask.execute(identifyParams, new AsyncResponder(resultFunction, faultFunction, clickGraphic)); function resultFunction(results:Array, clickGraphic:Graphic):void { var myInfoRenderer:InfoRenderer = new InfoRenderer; var mapPoint:MapPoint = MapPoint(clickGraphic.geometry); var point:Point = MainMap.toScreen(mapPoint); if (results && results.length > 0) { var oldLayer:Number = -1; var resultArray:Array = []; var result:IdentifyResult; var resultGraphic:Graphic; var tab:TabNavigator = new TabNavigator(); var newVBox:VBox = neue VBox; var newVBoxDG:VBox = neue VBox; var neuerText:Text = neuer Text; var newDG:DataGrid = neues DataGrid; var-Grafik:Grafik; clickGraphicsLayer.add(clickGraphic); Ergebnis = Ergebnisse[0]; oldLayer = result.layerId; resultsArray.push(result.feature.attributes); neuerText = neuer Text; neuerText.text = result.layerName; Grafik = result.feature; Grafik &agr; = 0,3; graphicLayer.add (Grafik); Tab.-Breite = 400; Tab.höhe = 230; for (var i:int = 1; i < results.length; i++) { result = results[i]; Grafik = neue Grafik; grafik = result.feature; Grafik &agr; = 0,3; graphicLayer.add (Grafik); if (result.layerId == oldLayer) { resultsArray.push(result.feature.attributes); } else { newDG = neues DataGrid; newVBox = neue VBox; newDG.dataProvider = resultsArray; newDG.addEventListener(ListEvent.ITEM_CLICK, newDG_ItemRollOver, false, 0, true); newDG.addEventListener(ListEvent.ITEM_ROLL_OUT, newDG_ItemRollOut, false, 0 ,true); newDG.addEventListener(ListEvent.ITEM_ROLL_OVER, newDG_ItemRollOver, false, 0, true); newVBox.addElement(neuerText); newVBox.addElement(newDG); newVBox.label = oldLayer.toString(); newVBox.label = oldLayer.toString(); tab.addElement(newVBox); myInfoRenderer.addElement(tab); neuerText = neuer Text; neuerText.text = result.layerName; ErgebnisArray = []; resultsArray.push(result.feature.attributes); } oldLayer = result.layerId; } neue VBox = neue VBox; newVBoxDG = neue VBox; newDG = neues DataGrid; newDG.addEventListener(ListEvent.ITEM_CLICK, newDG_ItemRollOver, false, 0, true); newDG.addEventListener(ListEvent.ITEM_ROLL_OUT, newDG_ItemRollOut, false, 0, true); newDG.addEventListener(ListEvent.ITEM_ROLL_OVER, newDG_ItemRollOver, false, 0, true); newVBox.addElement(neuerText); newDG.dataProvider = resultsArray; newVBox.addElement(newDG); newVBox.label = oldLayer.toString(); tab.addElement(newVBox); myInfoRenderer.addElement(tab); CursorManager.removeBusyCursor(); MainMap.infoWindow.content = meinInfoRenderer; MainMap.infoWindow.label = "Ergebnisse"; MainMap.infoWindow.show(MainMap.toMap(Punkt)); MainMap.infoWindow.addEventListener(Event.CLOSE, infoWindow_Close, false, 0, true); } } }

GIS-Mapping: Arten von interaktiven Karten & Anwendungen

Heute ist es einfach nicht möglich, Veränderungen zu überwachen, fundierte Entscheidungen zu treffen und Geotrends zu entdecken, ohne GIS-Kartendaten zu verwenden. Eine GIS-Karte ist ein unverzichtbares Werkzeug, wenn es darum geht, geophysikalische Daten der Welt dynamisch und interaktiv auf dem Bildschirm darzustellen. Je nach zu lösendem Problem gibt es eine Vielzahl von Kartierungsarten im GIS, von Kategoriekarten über Blasenkarten bis hin zu Heatmaps.


8.2 Kartenkachelserver

Der Kartenkachelserver ist eine Caching-Engine für Kartenbilder, die vorgenerierte Kartenbildkacheln mit fester Größe zwischenspeichert und bereitstellt. Es ist als Java-Servlet implementiert, das Teil des MapViewer-Servers ist. Der Kartenkachelserver akzeptiert Anfragen, die Kartenbildkacheln abfragen, die durch Kachelzoomstufe und Kachelort (Mesh-Code) angegeben sind, und sendet die angeforderten Kacheln zurück an die Clients.

Abbildung 8-5 zeigt den grundlegenden Arbeitsablauf des Kartenkachelservers.

Abbildung 8-5 Arbeitsablauf des Kartenkachelservers

Wie in Abbildung 8-5 gezeigt, sucht der Kartenkachelserver, wenn er eine Anfrage nach einer Kartenkachel empfängt, nach der Kachel im Cache-Speichersystem. Wenn die Kachel zwischengespeichert ist, sendet der Kartenkachelserver die Kachel an den Client. Wenn die Kachel nicht zwischengespeichert ist, ruft der Kartenkachelserver die Kachel ab, speichert sie im Cache und sendet sie an den Client.

Sie können das MapViewer-Verwaltungstool verwenden, um den Kartenkachelserver zu verwalten.

8.2.1 Konzepte für Kartenkachelserver

In diesem Abschnitt werden Konzepte für Kartenkachelserver erläutert, die Sie kennen müssen, um Oracle Maps effektiv verwenden zu können.

8.2.1.1 Kartenkachelebenen und Kartenkachelquellen

Alle Kartenkachel-Layer werden vom Kartenkachelserver verwaltet. Der Kartenkachelserver holt und speichert die Kartenbildkacheln, die zu der Kartenkachelschicht gehören, und gibt Kartenbildkacheln an den Client zurück. Der Kartenkachelserver kann mehrere Kartenkachelebenen verwalten.

Jeder Kartenkachel-Layer kann mehrere vordefinierte Zoomstufen haben. Jeder Zoomstufe wird eine Zoomstufennummer im Bereich von 0 bis n-1 zugewiesen, wobei n die Gesamtzahl der Zoomstufen ist. Zoomstufe 0 ist die am stärksten herausgezoomte Stufe und Zoomstufe n-1 ist die am stärksten gezoomte Stufe.

Die Karte ist in jeder Zoomstufe gleichmäßig in kleine Kartenbildkacheln gleicher Größe unterteilt. Clients geben eine Kartenkachel anhand ihrer Zoomstufe und ihres Kachelmeshcodes an.

Ein Kartenkachel-Layer kann aus zwei verschiedenen Arten von Quellen stammen:

Interne MapViewer-Basiskarten, die von der MapViewer-Kartenrendering-Engine gerendert werden. Eine MapViewer-Basiskarte besteht aus einem Satz vordefinierter Themen und muss in der Datenbankansicht USER_SDO_MAPS vordefiniert sein.

Von einem externen Anbieter von Webkartendiensten gerenderte Karten. Ein externer Anbieter von Webkartendiensten ist ein Server, der Karten auf Clientanfragen über das Web rendert und bereitstellt. Wenn Sie einen Adapter, der Karten vom externen Kartendienstanbieter abrufen kann, ordnungsgemäß konfigurieren, kann der Kartenkachelserver vom externen Kartendienstanbieter generierte Kartenkacheln abrufen und zwischenspeichern. (Eine andere MapViewer-Instanz als der MapViewer, in der der Kartenkachelserver ausgeführt wird, gilt ebenfalls als externer Kartendienstanbieter.)

8.2.1.2 Speicherung von Kartenbildkacheln

Oracle Maps verwendet das lokale Dateisystem, um zwischengespeicherte Bildkacheln zu speichern. Sie können den Pfad, der für diesen Speicher verwendet wird, als Teil der Konfigurationseinstellungen des Kartenkachelservers anpassen.

8.2.1.3 Koordinatensystem für Kartenkacheln

Kartenbilder werden vom Kartenkachelserver als kleine rechteckige Bildkacheln gleicher Größe zwischengespeichert und verwaltet. Derzeit unterstützen wir Kacheln auf jedem zweidimensionalen kartesischen Koordinatensystem. Ein geodätisches Koordinatensystem kann auch unterstützt werden, wenn es wie ein kartesisches Koordinatensystem abgebildet wird, wobei Längen- und Breitengrad einfach als zwei senkrechte Achsen behandelt werden, wie in Abbildung 8-6 gezeigt.

Abbildung 8-6 Kacheln mit einem Längen-/Breiten-Koordinatensystem

Auf jeder Zoomstufe werden die Kartenkacheln erstellt, indem das gesamte Kartenkoordinatensystem gleichmäßig entlang der beiden Dimensionen (X und Y, die in Abbildung 8-6 Breiten- und Längengrad darstellen) geteilt wird. Der Kartenkachelserver benötigt diese Dimensionsinformationen des Kartenkoordinatensystems, um Kartenbildkacheln zu erstellen. Daher müssen Sie diese Informationen in die Konfigurationseinstellungen des Kartenkachel-Layers aufnehmen.

Das gesamte Kartenkoordinatensystem kann durch ein Rechteck dargestellt werden, und seine Grenze wird durch (Xmin, Ymin) und (Xmax, Ymax) angegeben, wobei Xmin der minimal zulässige X-Wert im Koordinatensystem ist, Ymin der minimal zulässige Y-Wert , Xmax ist der maximal zulässige X-Wert und Ymax ist der maximal zulässige Y-Wert. In Abbildung 8-6 ist Xmin &ndash180, Ymin &ndash90, Xmax ist 180 und Ymax ist 90.

Sie müssen auch die räumliche Referenz-ID (SRID) des Koordinatensystems angeben, damit der Kartenkachelserver Kartenmaßstäbe berechnen kann.

8.2.1.4 Kachelnetzcodes

Jede Kartenkachel wird durch einen Mesh-Code spezifiziert, der als ein Paar von ganzen Zahlen (Mx, My) definiert ist, wobei Mx den X-Dimensionsindex der Kachel und My den Y-Dimensionsindex der Kachel angibt. Wenn die Kachel die i-te Kachel in der X-Dimension ist, beginnend mit Xmin, dann sollte Mx i-1 sein. Wenn die Kachel die j-te Kachel auf der Y-Dimension ist, beginnend mit Ymin, dann sollte My j-1 sein. Abbildung 8-7 zeigt die Mesh-Codes der Kacheln auf einer Karte.

Abbildung 8-7 Kachelnetzcodes

Der JavaScript-Kartenclient berechnet automatisch, welche Kacheln er für die Darstellung der Karte im Webbrowser benötigt und sendet Anfragen mit den Mesh-Codes an den Server. Mesh-Codes sind für die Anwendung transparent und Anwendungsentwickler müssen sich nicht direkt mit Mesh-Codes befassen.

8.2.1.5 Kachelregeln

Sie müssen Kachelregeln erstellen, die bestimmen, wie die Karte aufgeteilt wird und wie Kacheln erstellt werden. Der Kartenkachelserver verwendet diese Kachelregeln, um die Karte in kleine Kartenbildkacheln aufzuteilen, die in dem Kachelspeichersystem gespeichert werden. Diese Regeln werden auch vom JavaScript-Map-Client verwendet.

Da alle Kacheln auf einer bestimmten Zoomstufe dieselbe Größe haben, muss der Kartenkachelserver die folgenden Informationen kennen, um die Kachelaufteilung durchzuführen:

Die Bildgröße der Kartenkachel (Breite und Höhe), angegeben in Bildschirmpixeln. Dies ist die physische Größe der Kachelbilder.

Die gemäß dem Kartenkoordinatensystem angegebene Kachelgröße. Wenn die Karte beispielsweise ein geodätisches Koordinatensystem verwendet, sollten die Kachelbreite und -höhe in Grad angegeben werden. Die Größe kann entweder explizit durch Kachelbreite und -höhe oder implizit durch Kartenmaßstab angegeben werden. (Der Kartenmaßstab kann in Kombination mit der Kachelbildgröße verwendet werden, um die Kachelbreite und -höhe gemäß dem Kartenkoordinatensystem abzuleiten.)

Die vorstehenden Informationen bilden die Kachelregel für eine gegebene Zoomstufe. Jede Zoomstufe muss eine eigene Kachelregel haben. Sie müssen die Kachelregeln definieren, wenn Sie die Konfigurationseinstellungen für den Kartenkachelserver festlegen, wie in Abschnitt 8.2.2 beschrieben.

8.2.2 Konfiguration des Kartenkachelservers

Die Konfigurationseinstellungen des Kartenkachelservers werden in lokalen Konfigurationsdateien und in Datenbankansichten gespeichert. Sie können diese Einstellungen anpassen.

8.2.2.1 Globale Konfiguration des Kartenkachelservers

Globale Einstellungen des Kartenkachelservers, wie Protokollierungsoptionen und das standardmäßige Cachespeicherverzeichnis, werden in der MapViewer-Konfigurationsdatei mapViewerConfig.xml gespeichert, die sich im Verzeichnis $MAPVIEWER_HOME /web/WEB-INF/conf befindet.

Die Konfigurationseinstellungen für den Kartenkachelserver werden im Element <map_tile_server> im Element <mapperConfig> der obersten Ebene definiert, wie im folgenden Beispiel gezeigt:

Das Element < tile_storage> gibt die Speichereinstellungen für Kartenkacheln an. Das Attribut default_root_path gibt das Standarddateisystemverzeichnis an, unter dem die zwischengespeicherten Kachelbilder gespeichert werden sollen. Wenn das Standard-Root-Verzeichnis nicht festgelegt oder ungültig ist, ist das Standard-Root-Verzeichnis $MAPVIEWER_HOME /web/tilecache . Ein Unterverzeichnis unter diesem Verzeichnis wird erstellt und für einen Kartenkachel-Layer verwendet, wenn die Konfiguration des Kartenkachel-Layers das Speicherverzeichnis der Kartenkacheln nicht für sich selbst angibt. Der Name des Unterverzeichnisses entspricht dem Namen des Kartenkachel-Layers.

8.2.2.2 Konfiguration der Kartenkachelebene

Die Konfigurationseinstellungen für einen Kartenkachel-Layer werden in der Metadatenansicht USER_SDO_CACHED_MAPS gespeichert. Normalerweise sollten Sie diese Ansicht nicht direkt bearbeiten, sondern stattdessen das MapViewer-Verwaltungstool verwenden, das diese Ansicht verwendet, um Kartenkachel-Layer zu konfigurieren.

Jeder Datenbankbenutzer (Schema) hat seine eigene USER_SDO_CACHED_MAPS-Ansicht. Jeder Eintrag in dieser Ansicht speichert die Konfigurationseinstellungen für einen Kartenkachel-Layer. Wenn der Kartenkachel-Layer auf einer internen MapViewer-Basiskarte basiert, muss die dem Kartenkachel-Layer zugeordnete Basiskarte in demselben Datenbankschema definiert werden, in dem die Konfigurationseinstellungen für den Kartenkachel-Layer gespeichert sind.

Der Kartenkachelserver ruft die Kartenquellenkonfiguration ab, indem er die Ansicht USER_SDO_CACHED_MAPS unter Verwendung der von den MapViewer-Datenquellen angegebenen Datenbankverbindungen abfragt. Dies geschieht, wenn der Kartenkachelserver gestartet wird oder als Ergebnis einer MapViewer-Verwaltungsanfrage eine neue Datenquelle zu MapViewer hinzugefügt wird.

Die Ansicht USER_SDO_CACHED_MAPS enthält die in Tabelle 8-1 aufgeführten Spalten.

Tabelle 8-1 USER_SDO_CACHED_MAPS-Ansicht

Eindeutiger Name der zwischengespeicherten Kartenquelle

Optionaler beschreibender Text zur zwischengespeicherten Kartenquelle

JA, wenn der Kartenkachel-Layer online ist, oder NEIN, wenn der Kartenkachel-Layer offline ist. Wenn eine Kachel im Cache fehlt und der Kartenkachel-Layer online ist, ruft der Kartenkachelserver die Kachel ab und gibt die abgerufene Kachel an den Client zurück. Wenn eine Kachel fehlt und der Kartenkachel-Layer offline ist, ruft der Kartenkachelserver die Kachel nicht ab, sondern gibt ein leeres Bild an den Client zurück.

JA, wenn die Kartenquelle eine interne Kartenquelle ist, oder NEIN, wenn die Kartenquelle eine externe Kartenquelle ist

XML-Definition des Kartenkachel-Layers, wie weiter unten in diesem Abschnitt beschrieben.

Name der zwischengespeicherten MapViewer-Basiskarte, wenn die Kartenquelle eine interne Kartenquelle ist

Die JAR-Datei, die die Adapter-Java-Klassen des externen Kartenservice-Providers enthält, wie weiter unten in diesem Abschnitt beschrieben.

Für die Spalte DEFINITION hat die Zuordnungsquellendefinition das folgende allgemeine Format:

Die DTD der Kartenkachel-Layer-Definitions-XML ist in Abschnitt A.9 aufgeführt.

Beispiel 8-3 zeigt die XML-Definition eines internen Kartenkachel-Layers und Beispiel 8-4 zeigt die XML-Definition eines externen Kartenkachel-Layers. Erläuterungen zum Element <map_tile_layer> und seinen Unterelementen folgen diesen Beispielen.

Beispiel 8-3 XML-Definition eines internen Kartenkachel-Layers

Beispiel 8-4 XML-Definition eines externen Kartenkachel-Layers

Das Element der obersten Ebene ist <map_tile_layer> . Das Attribut image_format gibt das Kachelbildformat an. Die derzeit unterstützten Werte für dieses Attribut sind PNG, GIF und JPG. PNG- und GIF-Bilder eignen sich im Allgemeinen besser für Vektor-Basiskarten, während JPG-Bilder aufgrund eines besseren Komprimierungsverhältnisses im Allgemeinen besser für Rasterkarten wie Satellitenbilder geeignet sind. Derzeit können nur Kachelbilder im PNG-Format einen transparenten Hintergrund haben.

Das Element <intern_map_source> ist nur erforderlich, wenn die Kartenkacheln von der lokalen MapViewer-Instanz gerendert werden. Das base_map-Attribut ist erforderlich und gibt die vordefinierte MapViewer-Basiskarte an, die vom Kartenkachelserver zwischengespeichert wird. Ihr Wert sollte mit einem Eintrag in der Spalte BASE_MAP in der Ansicht USER_SDO_CACHED_MAPS übereinstimmen. Das Attribut bgcolor ist optional und gibt die Hintergrundfarbe der Karte an. Wenn der Wert dieses Attributs auf NONE gesetzt ist, ist der Hintergrund transparent. (Derzeit kann MapViewer nur transparente PNG-Kartenkacheln rendern.)

Das Element <extternal_map_source> ist nur erforderlich, wenn die Kartenkacheln von einem externen Kartendienstanbieter gerendert werden. Dieses Element hat die folgenden Attribute:

Das url-Attribut ist erforderlich und gibt die Kartenservice-URL an, von der die Kartenkacheln abgerufen werden können (z. B. http://myhost/mapviewer/omserver ).

Das Attribut adapter_class ist erforderlich und gibt den vollständigen Namen der Kartenadapterklasse an, einschließlich der Paketnamen (z. B. mcsadapter.MVAdapter ).

Die Attribute proxy_host und proxy_port werden nur benötigt, wenn auf den externen Kartenanbieterserver über einen Proxyserver zugegriffen werden muss. Diese Attribute geben den Hostnamen bzw. die Portnummer des Proxyservers an. Wenn proxy_host als NONE angegeben ist, werden alle Kartenkachelanforderungen direkt an den Remoteserver gesendet, ohne einen Proxyserver zu durchlaufen. Wenn proxy_host weggelassen wird oder eine leere Zeichenfolge angibt, wird die globale MapViewer-Proxy-Einstellung verwendet, die in der Datei mapViewerConfig.xml definiert ist, wenn Kartenkachelanforderungen gesendet werden.

Das Attribut timeout ist optional und gibt die Anzahl von Millisekunden an, die der Kartenkachelserver auf ein externes Kartenkachelbild warten muss, bevor er den Versuch aufgibt. Der Standardwert für das Zeitlimit ist 15000.

Das Attribut request_method ist optional und die HTTP-Anforderungsmethode zum Senden von Kartenkachelanforderungen kann der Wert POST (Standard) oder GET sein.

Das Element <properties> im Element <external_map_source> kann mehrere <property>-Elemente enthalten, von denen jedes einen benutzerdefinierten Parameter zur Verwendung durch den Kartenadapter beim Abrufen von Kartenkacheln spezifiziert. Derselbe Kartenquelladapter kann unterschiedliche Parametersätze verwenden, um verschiedene Kartenkachel-Layer abzurufen. Der mit MapViewer gelieferte Beispiel-MapViewer-Adapter mcsadapter.MVAdapter akzeptiert beispielsweise Parameter, die wie folgt definiert sind:

Durch Ändern der Wertattributwerte können Sie diesen Adapter jedoch verwenden, um eine andere Basiszuordnung aus derselben Datenquelle oder einer anderen Datenquelle abzurufen.

Das Element <tile_storage> gibt Speichereinstellungen für den Kartenkachel-Layer an. Das optionale Attribut root_path gibt das Dateisystemverzeichnis an, das als Stammverzeichnis des Kachelspeichers verwendet werden soll. Wenn dieses Attribut weggelassen oder ungültig ist, wird das in der Datei mapViewerConfig.xml definierte Standard-Stammverzeichnis verwendet.

Das Element <coordinate_system> gibt das Kartenkoordinatensystem an und hat mehrere erforderliche Attribute. Das srid-Attribut gibt die Raumbezugs-ID des Koordinatensystems an. Das minX-Attribut gibt die untere Grenze der X-Dimension an, das minY-Attribut gibt die untere Grenze der Y-Dimension an, das maxX-Attribut gibt die obere Grenze der X-Dimension an und das maxY-Attribut gibt die obere Grenze der Y-Dimension an. Für das Standard-Längen-/Breiten-Koordinatensystem (WGS 84) beträgt der srid-Wert 8307 und die minX-, minY-, maxX- und maxY-Werte sind -180, -90, 180 bzw. 90.

Bei einem internen Kartenkachel-Layer kann sich das Kartenkoordinatensystem vom Datenkoordinatensystem unterscheiden. Wenn die beiden unterschiedlich sind, transformiert der Kartenkachelserver die Kartendaten in das im <coordinate_system>-Element definierte Koordinatensystem und rendert Kartenkachelbilder unter Verwendung dieses Koordinatensystems.

Das Element <tile_image> gibt die Kachelbildgrößeneinstellungen an und hat die folgenden erforderlichen Attribute: width gibt die Breite der Kachelbilder in Bildschirmpixeln an, und height gibt die Höhe der Kachelbilder in Bildschirmpixeln an.

Das optionale Element <tile_bound> gibt den Begrenzungsrahmen der zwischengespeicherten Kartenkacheln an. Der Kartenkachelserver ruft nur Kacheln innerhalb dieser Box ab und gibt eine leere Kachel zurück, wenn sich die angeforderte Kachel außerhalb dieser Box befindet. Der Begrenzungsrahmen wird durch ein Rechteck im Kartendaten-Koordinatensystem angegeben. Das Rechteck wird durch ein <coordinates>-Element im folgenden Format angegeben:

Die standardmäßige Begrenzungsbox für den Cache ist dieselbe Begrenzungsbox, die im Element <coordinate_system> angegeben ist.

Das Element <zoom_levels> gibt die vordefinierten Zoomstufen an. Nur Bildkacheln mit vordefinierten Zoomstufen werden zwischengespeichert und vom Kartenkachelserver bereitgestellt. Das <zoom_levels>-Element kann mehrere <zoom_level>-Elemente haben, von denen jedes eine vordefinierte Zoomstufe spezifiziert. Wenn keine <zoom_level>-Elemente vorhanden sind, generiert der Kartenkachelserver automatisch die <zoom_level>-Elemente unter Verwendung der folgenden Attribute innerhalb des <zoom_levels>-Elements. (Diese Attribute können weggelassen werden und werden ignoriert, wenn <zoom_level>-Elemente vorhanden sind.)

Stufen gibt die Gesamtzahl der Zoomstufen an.

min_scale gibt den Maßstab von Kartenbildern bei der höchsten (am stärksten gezoomten) Zoomstufe an.

max_scale gibt den Maßstab von Kartenbildern bei der niedrigsten (am stärksten ausgezoomten) Zoomstufe an.

min_tile_width gibt die Breite der Kartenkacheln bei der höchsten Zoomstufe an. Die Breite wird in Kartendateneinheiten angegeben.

max_tile_width gibt die Breite der Kartenkacheln bei der niedrigsten Zoomstufe an. Die Breite wird in Kartendateneinheiten angegeben.

Damit der Kartenkachelserver die Definitionen der einzelnen Zoomstufen automatisch generieren kann, müssen Sie eine der folgenden Kombinationen der vorstehenden Attribute angeben:

level , min_scale und max_scale

Ebenen , min_tile_width und max_tile_width

Wenn die Zoomstufen auf diese Weise definiert sind, leitet der Kartenkachelserver automatisch die Definition aller einzelnen Zoomstufen ab und aktualisiert die XML-Definition mit den für die Zoomstufen generierten <zoom_level>-Elementen. Sie können dann bei Bedarf Anpassungen an jeder Zoomstufe vornehmen.

Jeder Zoomstufe wird vom Kartenkachelserver basierend auf der Reihenfolge, in der die Zoomstufen definiert sind, eine Zoomstufennummer zugewiesen. Die erste im Element <zoom_levels> definierte Zoomstufe ist Zoomstufe 0, die zweite Zoomstufe ist Zoomstufe 1 und so weiter. Diese Zoomstufennummern werden in den Kachelanforderungen verwendet, um auf die vordefinierten Zoomstufen zu verweisen.

Das Element <zoom_level> gibt eine vordefinierte Zoomstufe an und hat mehrere Attribute. Das Beschreibungsattribut ist optional und gibt die Textbeschreibung der Zoomstufe an. Das Attribut level_name ist optional und gibt den Namen der Zoomstufe an. Das scale-Attribut gibt den Kartenmaßstab der Zoomstufe an, die erforderlich ist, wenn die Attribute tile_width und tile_height nicht definiert sind. Die Attribute tile_width und tile_height geben die Kachelbreite bzw. -höhe in Kartendateneinheiten an. Das Attribut fetch_larger_tiles ist optional und gibt an, ob größere Kartenbilder anstelle der kleinen Kartenbildkacheln abgerufen werden sollen. Ein Wert von TRUE (Standard) bedeutet, dass größere Kartenbilder, die aus mehreren Kartenkacheln bestehen können, abgerufen und in kleine Kartenbildkacheln aufgeteilt werden. Dies könnte Netzwerk-Roundtrips zwischen dem Kartenkachelserver und dem Kartendienstanbieter sparen.

Im Element <zoom_level> müssen Sie entweder das scale-Attribut oder sowohl die Elemente tile_width als auch tile_height angeben.

Das Element <tile_bound> innerhalb des Elements <zoom_level> gibt optional die Begrenzungsbox der zwischengespeicherten Kartenkacheln für die Zoomstufe an. Der Kartenkachelserver ruft nur Kacheln innerhalb dieser Box ab und gibt eine leere Kachel zurück, wenn sich die angeforderte Kachel außerhalb dieser Box befindet. Der Begrenzungsrahmen wird durch ein Rechteck angegeben, das im Kartendaten-Koordinatensystem angegeben ist. Das Rechteck wird durch ein <coordinates>-Element angegeben (weiter oben in diesem Abschnitt erläutert). Wenn Sie das <tile_bound>-Element innerhalb des <zoom_level>-Elements angeben, überschreibt es die allgemeinen Cache-Begrenzungsrahmeneinstellungen, die durch das <tile_bound>-Element festgelegt sind, das sich in der XML-Hierarchie darüber befindet.

8.2.3 Externer Kartenquellenadapter

Ein externer Kartenquellenadapter ist die Schnittstelle zwischen einem Kartenkachelserver und einem externen Kartendienstanbieter. Wenn eine Kartenbildkachel vom externen Kartendienstanbieter abgerufen werden muss, ruft der Kartenkachelserver den Adapter mit Informationen über die Zoomstufe, Größe und Position der Kachel auf. Der Adapter erstellt dann eine anbieterspezifische Anfrage, sendet die Anfrage an den externen Kartendienstanbieter und gibt die resultierende Bildkachel an den Kartenkachelserver zurück.

Der externe Kartenquellenadapter ist eine Java-Klasse, die die abstrakte Java-Klasse oracle.mapviewer.share.mapcache.MapSourceAdapter erweitern muss, die wie folgt definiert ist:

Ein Adapter, der diese Klasse erweitert, muss die folgende Methode implementieren:

public String getMapTileRequest(TileDefinition-Kachel)

Diese Methode sollte die Logik implementieren, um die HTTP-Anforderungszeichenfolge zu erstellen, die an den Kartendienstanbieter gesendet werden kann, um die Kartenbildkachel abzurufen. Wenn die URL einer Kartenkachel beispielsweise http://myhost/mymapserver?par1=v1&par2=v2&par3=v3 lautet, sollte die von dieser Methode zurückgegebene HTTP-Anforderungszeichenfolge par1_v1&par2=v2&par3=v3 lauten.

Wenn der Kartenkachelserver eine bestimmte Kartenkachel nicht finden kann, ruft er die Methode getTileImageBytes auf, um die Binärdaten des Kachelbilds abzurufen, und diese Methode ruft die Methode getMapTileRequest auf, um die Kartenkachelanforderung zu erstellen, bevor die Kachel abgerufen wird. Die Methode getMapTileRequest verwendet einen Parameter: ein TileDefinition-Objekt, das die Zoomstufe, den Begrenzungsrahmen, die Bildgröße und das Bildformat der angeforderten Kachel angibt. Diese Methode gibt die HTTP-Anforderungszeichenfolge zurück.

Der Kartenquellenadapter erbt auch alle Methoden, die in der Klasse MapSourceAdapter implementiert sind. Unter ihnen sind die folgenden Methoden wichtiger als die anderen:

public byte[] getTileImageBytes(TileDefinition-Kachel)

Diese Methode ruft die eigentlichen binären Kartenkachel-Bilddaten vom externen Kartendienstanbieter ab. Diese Methode ist bereits implementiert. Es ruft die abstrakte Methode getMapTileRequest auf, um die Kartenkachelanforderung zu erstellen und sendet die Anforderung an den externen Kartendienstanbieter. Wenn die Kartenkacheln nicht durch Senden von HTTP-Anforderungen abgerufen werden können, können Sie diese Methode überschreiben, um die entsprechende Logik zum Abrufen einer Bildkachel aus der Kartenquelle zu implementieren. Diese Methode benötigt einen Parameter: ein TileDefinition-Objekt, das die Zoomstufe, den Begrenzungsrahmen, die Bildgröße und das Bildformat der angeforderten Kachel angibt. Diese Methode gibt die binären Kachelbilddaten zurück, die in dem Bildformat codiert sind, das in den Konfigurationseinstellungen des Kartenkachel-Layers angegeben ist.

öffentliche Eigenschaften getProperties()

Diese Methode gibt die anbieterspezifischen Parameter zurück, die in den in Abschnitt 8.2.2.2 erläuterten Konfigurationseinstellungen des Kartenkachel-Layers definiert sind.

Die Klassen MapSourceAdapter und TileDefinition sind in mvclient.jar gepackt, die Sie im Verzeichnis $MAPVIEWER_HOME /web/WEB/lib finden.

Beispiel 8-5 zeigt einen externen Map-Quelladapter.

Beispiel 8-5 Externer Kartenquellenadapter


Wähle aus Hineinzoomen Werkzeug, um die Karte in einem größeren Maßstab zu vergrößern. Sie können entweder auf einen einzelnen Punkt auf der Karte klicken, um eine Zoomstufe zu vergrößern, oder auf einen allgemeinen Bereich zoomen, indem Sie den Cursor anklicken und ziehen, um ein Auswahlfeld um Ihren Interessenbereich zu erstellen. Da die Karte voreingestellte Zoomstufen verwendet, ist die resultierende Ausdehnung die dem ausgewählten Bereich am nächsten liegende voreingestellte Zoomstufe. Das Werkzeug Vergrößern zentriert die Kartenanzeige automatisch auf den ausgewählten Punkt oder die Mitte des Auswahlfelds.

Drücke den Rauszoomen Werkzeug, um die Karte um eine Zoomstufe zu verkleinern.

Wähle aus Karte schwenken Klicken Sie dann auf die Karte und ziehen Sie sie in eine beliebige Richtung.

Drücke den Zoom auf volles Ausmaß Werkzeug, um die Karte maximal zu verkleinern. Dadurch wird die Kartenanzeige auf die Standardausdehnung des Bundesstaates Massachusetts zurückgesetzt.

Drücke den Zum vorherigen Umfang gehen Werkzeug, um die Karte wieder auf eine zuvor angezeigte Ausdehnung zurückzusetzen.

Drücke den Weiter zum nächsten Umfang Werkzeug, um die Karte auf die zuvor angezeigte Ausdehnung vorwärts zu zoomen.

Ebenen mit einem Symbol im Fenster Kartenebenen unterstützen das Werkzeug Identifizieren.

Das Auf Adresse zoomen öffnet ein Dialogfeld auf der Karte. Geben Sie eine vollständige Straße ein (Beispiel: 1 Winter St Boston, MA 02108) in das Dialogfeld (bitte Gemeinde und Postleitzahl angeben) und klicken Sie dann auf einreichen. Es erscheint ein Popup-Fenster mit den Ergebnissen der Adresssuche und einer Punktzahl, die die Standortqualität angibt. Je höher der Wert, desto höher das Vertrauen in die Standortgenauigkeit. Klicken Sie auf a Zoomen Schaltfläche neben der Adresse, um die Karte auf das Adressergebnis zu zoomen.
Ein Adressmarker wird auf der Karte mit dem geschätzten Standort der Adresse angezeigt. Um die Markierung von der Karte zu entfernen, klicken Sie auf das Klar in der unteren rechten Ecke des Fensters Auf Adresse zoomen.

Das Auf Stadt zoomen öffnet ein Kombinationsfeld mit einer Liste der 351 Gemeinden von Massachusetts. Wenn eine Gemeinde aus der Liste ausgewählt wird, zoomt die Karte auf das ungefähre Zentrum der Gemeinde.

Das Kartentransparenz Tool öffnet ein Popup-Fenster mit einem Schieberegler. Wählen Sie die Registerkarte für die Ebene aus, die Sie anpassen möchten, und bewegen Sie den Schieberegler, um die Deckkraft (Transparenz) dieser Ebene zu ändern.

Wähle aus XY-Informationen Werkzeug, dann klicken Sie auf die Karte. Ein Popup-Fenster mit Koordinateninformationen für diesen Standort wird angezeigt und an der Stelle, an der auf die Karte geklickt wurde, wird ein orangefarbenes Kreuz angezeigt. Verwenden Sie die Klar in der unteren rechten Ecke des XY-Informations-Popup-Fensters, um XY-Markierungen aus der Karte zu löschen.

Layer mit einem Symbol im Fenster Kartenlayer unterstützen das Werkzeug Identifizieren.

Das Messen -Tool kann verwendet werden, um Entfernung und Fläche auf der Karte zu messen. Auswählen Länge Länge messen oder Bereich um die Fläche auf der Karte zu messen.


Cartographica 1.4 – Erkunden und verfeinern Sie Daten, erstellen Sie schöne Karten und mehr.

Kartographie ist ein geografisches Informationssystem (GIS) für Ihren Mac, mit dem Sie Daten erkunden und verfeinern, schöne Karten erstellen und Informationen für das Web mit Google Maps und Google Earth exportieren können (über unsere KML-Exportfunktionen).

Führen Sie Daten aus mehreren Quellen zusammen. Erhalten Sie lokale Daten von Ihrer Regierung in CSV Latitude und Longitude (oder in Ihrer Landesebene hat Cartographica ein tiefes Verständnis von Koordinatenreferenzsystemen), fügen Sie diese mit Satelliten- oder topografischen Informationen über Webkartendienste wie Terraserver oder NASAs Blue Earth hinzu , bringen Sie Straßeninformationen vom US Census Bureau TIGER ein und sehen Sie sie alle an einem Ort.

Cartographica umfasst die wichtigsten Macintosh-Technologien, darunter die Verwendung von Drag & Drop, 64-Bit-Datenzugriff, ODBC für den Datenbankzugriff, umfassendes Rückgängigmachen, Scrollräder und vieles mehr, um das beste Macintosh-Erlebnis beim Anzeigen, Bearbeiten und Ausgeben Ihrer Geodaten zu bieten.


Standortdaten für Kartenebenen

Karten unterstützen mehrere Möglichkeiten zum Bestimmen von Positionen in einer Ebene. Sie können die dem Layer hinzugefügte Bemaßung verwenden. You can alternatively specify fields containing location data for the layer, if the layer dimension does not contain geographic data. In the Location properties, you can specify additional parameters for the location field, such as adding additional fields that include country or administrative area information. For example, if you have a field containing custom area geometries and a field containing the names of the custom areas, you can set the name field as the dimension and then set the area geometry field as the location field in Location in the map properties.

Locations can be either geometries or names of locations such as names of countries, regions, cities, postal codes etc. Layer locations can be defined using fields that contain names and codes. Qlik Sense can identify the following types of locations:

  • Continent names
  • Country names
  • ISO alpha 2 country codes
  • ISO alpha 3 country codes
  • First-order administrative area names, such as a state or province names
  • Second-order administrative area names
  • Third-order administrative area names
  • Fourth-order administrative area names
  • Postal codes or ZIP Codes
  • City, village, or other populated place names
  • IATA airport codes
  • ICAO airport codes

Availability of locations may vary by country. If the named location is not available, use coordinate or area data for the location.

Qlik Sense uses map and location data obtained from recognized field leaders who use accepted methodologies and best practices in marking borders and naming countries within their mappings. Qlik Sense provides flexibility to enable users to integrate their own, separate background maps. If the standard maps do not fit, Qlik Sense offers the option to load customer provided background maps, borders, and areas.

Geometries can either be added at load time by the data preparation service or loaded from geographic sources such as KML . Point layers also support latitudes and longitudes in separate fields. For area layers, areas can be defined using geometries from a geographic data source such as KML files. For more information, see Loading your own map data. Line layers support the same point data as point layers. Line layers also support strings with line geometries in GeoJSON LineString or MultiLineString formats.

If you are using a custom map in a background layer that uses non- WGS-84 coordinates, you can use a field with locations defined in the coordinate system the map uses (either degrees or meters). For more information, see Using non-WGS-84 coordinate systems.


Trimble TID 4.0

Trimble Identity (TID) provides access to cloud based communication and collaboration within Trimble as part of the user authentication process to ensure this user is allowed to use Trimble software applications. The TID provides authentication but does not provide the authorization to use any specific software program.

Trimble Corporation has upgraded the Trimble Identity (TID) authentication integration to a new version. All Trimble applications using TID for authentication are required to update the application to use this new version by August 30, 2021.

Beginnend September 1, 2021, the current version of TID authentication will be replaced.

Trimble’s TID v4.0 solution provides:

  • An updated app login screen and new versions of the app(s)
  • A change in how to create a TID account
  • Updated password requirements and how the Routing Portal works

TID v4.0 integrates with TMWGo! Dispatch/Driver, TruckMate DASH Driver/Dispatch and D2Link 3.0 Mobile Imaging.


Outer Core

Below the mantle lies the layer known as the Outer Core. This is a thick layer - some 2,200 km (1367 miles) thick - that consists of liquid iron and nickel. In order for the nickel and iron to be in liquid form, the core must sustain intensely high heat. The Outer Core is thought to be as hot as 6,100 degrees celsius (11000 Ferenhaiet) It has been determined that this layer is liquid, based on the extensive study of seismic waves, and the way in which they bounce off the center of the Earth. The waves move differently through solid or liquids, thus distinguishing the outer core from its solid inner counterpart. This layer is also not static. As the Earth rotates on its axis, the liquid metal of the outer core also spins, turning approximately 0.3 to 0.5 degrees per year relative to the rotation of the surface. The outer core is also thought to be the cause of the magnetic field on Earth. It is this field which allows for life to be sustained here, as the field helps form a protective layer around the Earth’s atmosphere, blocking harmful solar winds.


Volcano World

The Earth is composed of four different layers. Many geologists believe that as the Earth cooled the heavier, denser materials sank to the center and the lighter materials rose to the top. Because of this, the crust is made of the lightest materials (rock- basalts and granites) and the core consists of heavy metals (nickel and iron).

The crust is the layer that you live on, and it is the most widely studied and understood. The mantle is much hotter and has the ability to flow. The Outer and Inner Cores are hotter still with pressures so great that you would be squeezed into a ball smaller than a marble if you were able to go to the center of the Earth.

The Earth's Crust is like the skin of an apple. It is very thin in comparison to the other three layers. The crust is only about 3-5 miles (8 kilometers) thick under the oceans(oceanic crust) and about 25 miles (32 kilometers) thick under the continents (continental crust). The temperatures of the crust vary from air temperature on top to about 1600 degrees Fahrenheit (870 degrees Celcius) in the deepest parts of the crust. You can bake a loaf of bread in your oven at 350 degrees Fahrenheit , at 1600 degrees F. rocks begin to melt.

The crust of the Earth is broken into many pieces called plates. The plates "float" on the soft, plastic mantle which is located below the crust. These plates usually move along smoothly but sometimes they stick and build up pressure. The pressure builds and the rock bends until it snaps. When this occurs an Earthquake is the result!

Notice how thin the crust of the Earth is in comparison to the other layers. The seven continents and ocean plates basically float across the mantle which is composed of much hotter and denser material.

The crust is composed of two basic rock types granite and basalt. The continental crust is composed mostly of granite. The oceanic crust consists of a volcanic lava rock called basalt.

Basaltic rocks of the ocean plates are much denser and heavier than the granitic rock of the continental plates. Because of this the continents ride on the denser oceanic plates. The crust and the upper layer of the mantle together make up a zone of rigid, brittle rock called the Lithosphere. The layer below the rigid lithosphere is a zone of asphalt-like consistancy called the Asthenosphere. The asthenosphere is the part of the mantle that flows and moves the plates of the Earth.

The mantle is the layer located directly under the sima. It is the largest layer of the Earth, 1800 miles thick. The mantle is composed of very hot, dense rock. This layer of rock even flows like asphalt under a heavy weight. This flow is due to great temperature differences from the bottom to the top of the mantle. The movement of the mantle is the reason that the plates of the Earth move! The temperature of the mantle varies from 1600 degrees Fahrenheit at the top to about 4000 degrees Fahrenheit near the bottom!

The mantle is made of much denser, thicker material, because of this the plates "float" on it like oil floats on water.

Many geologists believe that the mantle "flows" because of convection currents. Convection currents are caused by the very hot material at the deepest part of the mantle rising, then cooling, sinking again and then heating, rising and repeating the cycle over and over. The next time you heat anything like soup or pudding in a pan you can watch the convection currents move in the liquid. When the convection currents flow in the mantle they also move the crust. The crust gets a free ride with these currents. A conveyor belt in a factory moves boxes like the convection currents in the mantle moves the plates of the Earth.

The core of the Earth is like a ball of very hot metals. (4000 degrees F. to 9000 degrees F.) The outer core is so hot that the metals in it are all in the liquid state. The outer core is located about 1800 milesbeneath the crust and is about 1400 miles thick. The outer core is composed of the melted metals nickel and iron.

The inner core of the Earth has temperatures and pressures so great that the metals are squeezed together and are not able to move about like a liquid, but are forced to vibrate in place as a solid. The inner core begins about 4000 miles beneath the crust and is about 800 miles thick. The temperatures may reach 9000 dgrees F. and the pressures are 45,000,000 pounds per square inch. This is 3,000,000 times the air pressure on you at sea level.

Answer the following questions on a sheet of paper with your partner. If you need to look back to find the answers use the page titles located directly under the questions to help you. When you finish the questions click on the Earth icon to return the program to the beginning.

1. Name the four layers of the Earth in order from the outside to the center of the Earth.

2. What causes the mantle to "flow"?

3. What are the two main metals that make up the outer and inner core?

4. Describe in your own words how the Earth's layers were formed. "The Four Layers" will help you.


ESRI JavaScript API FeatureLayer Click Event

I am using FeatureLayers in the API to load in a layer. I have an info template set for the layer for identifying individual features.

I am trying to disconnect the click event from the layer while I am drawing a polygon for another tool. However, I haven't found a good way to disconnect that handler since it isn't one I assign.

I have tried layer.disableMapEvents() which didn't work. I don't have an info template set for the map itself either, so I don't think that one is firing.

I have searched through some other posts here, and so far the only solution I have found is to attach another handler to the map click event and call map.infoWindow.hide() while I am doing the drawing. This still goes through the identify process but keeps the window away.

I also tried calling the map.graphics.disableMouseEvents() , but that doesn't work either.

I am looking for a way to either handle the map click event myself and disconnect ESRI's standard way for the FeatureLayer. I just want to be able to shut off identifying of features temporarily.

A way to disconnect the event and hook it up again would be great. That would help if I want to attach it to another mouse event, too.


Create custom tooltips

You can create custom tooltips to show additional information about your locations when your audience hovers or clicks on them. You can type in your own information to appear for all marks, or add a field that will update with information specific to each mark.

To add a field to a tooltip:

On the Marks card, click Tooltip .

In the Edit Tooltip dialog box, format the tooltip how you would like it to appear.