Mehr

Wie konvertiert man einen String mit Javascript in OpenLayers.Geometry.Polygon?


Ich verwende Javascript, jQuery, Java, GeoServer, OpenLayers und PostGIS.

Java-Klasse verwendenErgebnismengeIch gebe diesen String zurück:

POLYGON ((516000 2135000,515039.264020162 2125245.48389919,512193.976625564 2115865.82838175,507573.480615127 2107221.48834902,501355.339059327 2099644.66094067,493778.51165098 2093426.51938487,485134.171618255 2088806.02337444,475754.516100806 2085960.73597984,466000 2085000,456245.483899194 2085960.73597984,446865.828381746 2088806.02337444,438221.48834902 2093426.51938487,430644.660940673 2099644.66094067,424426.519384873 2107221.48834902,419806.023374436 2115865.82838175,416960.735979839 2125245,48389919 , 416000 2135000,416960.735979838 2144754.51610081,419806.023374436 2154134.17161825,424426.519384873 2162778.51165098,430644.660940673 2170355.33905933,438221.48834902 2176573.48061513,446865.828381745 2181193.97662556,456245.483899193 2184039.26402016,466000 2185000,475754.516100806 2184039.26402016,485134.171618254 2181193.97662556,493778.51165098 2176573.48061513,501355.339059327 2170355.33905933,507573.480615127 2162778.51165098,512193.976625564 2154134.17161825,515039.264020161 2144754.51610081,516000 2135000))

Ziemlich lang, nicht wahr? Also fange ich mit der Ajax-Funktion von JQuery diesen String und möchte ihn jetzt in a umwandelnOpenLayers.Geometry.Polygon, dies ist die Zeile, in der ich die Ajax-Funktion verwende:

$.ajax({ url:"Catcher", data:query, type:"POST", dataType:"text", success:function(data){ var fea=new OpenLayers.Feature.Vector(data); //this funktioniert nicht vectorLayer.addFeatures([fea]); // hier füge ich das Feature dem von mir erstellten Vektorlayer als globale Variable hinzu map.zoomToExtent(bounds); } });

Wie kann ich die Konvertierung vornehmen?


Verwenden Sie die OpenLayers.Format.WKT-Klasse.

Versuchen Sie, diese Zeile zu ersetzen:

var fea=new OpenLayers.Feature.Vector(data); //das geht nicht

Für diese Zeile(if data.d = "POLYGON((516000…"):

var fea = new OpenLayers.Format.WKT().read(data.d);

Hier ist ein Beispiel für die Verwendung: http://dev.openlayers.org/examples/vector-formats.html


OpenLayer. Projektion

Methoden für Koordinatentransformationen zwischen Koordinatensystemen. OpenLayers wird standardmäßig mit der Fähigkeit geliefert, Koordinaten zwischen geographischen (EPSG:4326) und Web- oder sphärischen Mercator- (EPSG:900913 et al.) Koordinatenreferenzsystemen zu transformieren. Einzelheiten zur Verwendung finden Sie in der Transformationsmethode.

Zusätzliche Transformationen können mithilfe der Bibliothek proj4js hinzugefügt werden. Wenn die Bibliothek proj4js enthalten ist, funktioniert die Transformationsmethode zwischen zwei beliebigen Koordinatenreferenzsystemen mit proj4js-Definitionen.

Wenn die Bibliothek proj4js nicht enthalten ist oder Sie Transformationen zwischen beliebigen Koordinatenreferenzsystemen zulassen möchten, verwenden Sie die Methode addTransform, um eine benutzerdefinierte Transformationsmethode zu registrieren.

OpenLayer. ProjektionMethoden für Koordinatentransformationen zwischen Koordinatensystemen.
Eigenschaften
proj Proj4js.Proj-Instanz.
projCode
TitelRegEx regulärer Ausdruck, um den Titel aus einer proj4js-Definition zu entfernen
Konstrukteur
OpenLayer. ProjektionDiese Klasse bietet mehrere Methoden für die Interaktion mit einem umschlossenen pro4js-Projektionsobjekt.
Funktionen und Eigenschaften
getCodeRufen Sie den String-SRS-Code ab.
getUnitsRufen Sie die Einheitenzeichenfolge für die Projektion ab – gibt null zurück, wenn proj4js nicht verfügbar ist.
toStringKonvertieren Sie die Projektion in einen String (getCode-Wrapper).
gleichTesten Sie die Gleichheit von zwei Projektionsinstanzen.
zerstörenProjektionsobjekt zerstören.
verwandelt sich Transforms ist ein Objekt mit from-Eigenschaften, von denen jede eine to-Eigenschaft haben kann.
Standardeinstellungen Standardwerte für die OpenLayers bekannten SRS-Codes (derzeit EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113 und EPSG:102100).
addTransformLegen Sie eine benutzerdefinierte Transformationsmethode zwischen zwei Projektionen fest.
verwandelnTransformieren einer Punktkoordinate von einer Projektion in eine andere.
nullTransform

Eigenschaften

ProjCode

TitelRegEx

regulärer Ausdruck, um den Titel aus einer proj4js-Definition zu entfernen

Konstrukteur

OpenLayer. Projektion

Diese Klasse bietet mehrere Methoden für die Interaktion mit einem umschlossenen pro4js-Projektionsobjekt.

Parameter

projCode Eine Zeichenfolge, die den Well Known Identifier für die Projektion identifiziert.
Optionen Ein optionales Objekt zum Festlegen zusätzlicher Eigenschaften für die Projektion.

Kehrt zurück

Funktionen und Eigenschaften

GetCode

Kehrt zurück

GetUnits

Holen Sie sich die Einheitenzeichenfolge für die Projektion – gibt null zurück, wenn proj4js nicht verfügbar ist.

Kehrt zurück

ToString

Konvertieren Sie die Projektion in einen String (getCode-Wrapper).

Kehrt zurück

Gleich

Testen Sie die Gleichheit von zwei Projektionsinstanzen. Ermittelt die Gleichheit ausschließlich auf der Grundlage des Projektionscodes.

Kehrt zurück

Die beiden Projektionen sind äquivalent.

Zerstören

Projektionsobjekt zerstören.

Verwandelt sich

Transforms ist ein Objekt mit from-Eigenschaften, von denen jede eine to-Eigenschaft haben kann. Auf diese Weise können Sie Projektionen definieren, ohne dass proj4js unterstützt werden muss.

Dieses Objekt hat Schlüssel, die einem &lsquosource&rsquo-Projektionsobjekt entsprechen. Die Schlüssel sollten Strings sein, die dem Wert von project.getCode() entsprechen. Jedes Quellprojektionsobjekt sollte einen Satz von Zielprojektionsschlüsseln aufweisen, die im Objekt enthalten sind.

Jeder Wert im Zielobjekt sollte eine Transformationsfunktion sein, wobei erwartet wird, dass der Funktion ein Objekt mit einer .x- und einer .y-Eigenschaft übergeben wird. Die Funktion sollte das Objekt zurückgeben, wobei .x und .y gemäß der Transformationsfunktion transformiert wurden.

HinweisEigenschaften für dieses Objekt sollten nicht direkt festgelegt werden. Um diesem Objekt eine Transformationsmethode hinzuzufügen, verwenden Sie die Methode addTransform. Ein Anwendungsbeispiel finden Sie in der Datei OpenLayers.Layer.SphericalMercator.

Standardeinstellungen

Standardwerte für die OpenLayers bekannten SRS-Codes (derzeit EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113 und EPSG:102100). Schlüssel sind der SRS-Code, Werte sind Einheiten, maxExtent (der Gültigkeitsbereich für den SRS) und yx (wahr, wenn bekannt ist, dass dieser SRS eine umgekehrte Achsenreihenfolge hat).

AddTransform

Legen Sie eine benutzerdefinierte Transformationsmethode zwischen zwei Projektionen fest. Verwenden Sie diese Methode in Fällen, in denen die proj4js-Bibliothek nicht verfügbar ist oder benutzerdefinierte Projektionen verarbeitet werden müssen.

Parameter

von Der Code für die Quellprojektion
zu der Code für die Zielprojektion
Methode Eine Funktion, die einen Punkt als Argument verwendet und diesen Punkt von der Quell- in die vorhandene Zielprojektion umwandelt. Der ursprüngliche Punkt sollte geändert werden.

Verwandeln

Transformieren einer Punktkoordinate von einer Projektion in eine andere. Beachten Sie, dass der Eingabepunkt an Ort und Stelle transformiert wird.


Wenn Sie einen Fehler melden oder einen Vorschlag machen möchten, zögern Sie nicht, uns eine E-Mail zu senden:

Ihre Nachricht wurde an W3Schools gesendet.

Top-Tutorials

Top-Referenzen

Top-Beispiele

Webkurse

W3Schools ist für Lernen und Training optimiert. Beispiele können vereinfacht werden, um das Lesen und Lernen zu verbessern. Tutorials, Referenzen und Beispiele werden ständig überprüft, um Fehler zu vermeiden, aber wir können nicht für die vollständige Richtigkeit aller Inhalte garantieren. Bei der Nutzung von W3Schools erklären Sie sich damit einverstanden, unsere Nutzungsbedingungen, Cookie- und Datenschutzrichtlinien gelesen und akzeptiert zu haben.


Verwalten von Fehlern und Wiederholungen

Wenn Sie UNKNOWN_ERROR-Antworten erhalten, werden diese durch vorübergehende Fehler verursacht und werden am besten durch einen erneuten Versuch nach einer kurzen Verzögerung behoben. Wir empfehlen, die Clientbibliotheken der Google Maps Platform-Webdienste zu verwenden, die eine Wiederholungslogik enthalten und die Authentifizierung des Google Maps Platform-Premiumplans unterstützen. Der Java-Client, der Python-Client, der Go-Client und der Node.js-Client für Google Maps Services sind von der Community unterstützte Clientbibliotheken, die auf GitHub zum Download und als Beiträge zur Verfügung stehen, wo Sie auch Installationsanweisungen und Beispielcode finden.

Wenn Sie als Antwort den Statuscode OVER_QUERY_LIMIT erhalten, haben Sie die Nutzungslimits für die API überschritten. Wir empfehlen Ihnen, diese Strategien zur Nutzungsoptimierung auszuprobieren.

Sofern nicht anders angegeben, ist der Inhalt dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Website-Richtlinien für Entwickler von Google. Java ist eine eingetragene Marke von Oracle und/oder seinen verbundenen Unternehmen.


OpenLayer. Projektion

Methoden für Koordinatentransformationen zwischen Koordinatensystemen. OpenLayers wird standardmäßig mit der Fähigkeit geliefert, Koordinaten zwischen geografischen (EPSG:4326) und Web- oder sphärischen Mercator- (EPSG:900913 et al.) Koordinatenreferenzsystemen zu transformieren. Einzelheiten zur Verwendung finden Sie in der Transformationsmethode.

Zusätzliche Transformationen können mithilfe der Bibliothek proj4js hinzugefügt werden. Wenn die Bibliothek proj4js enthalten ist, funktioniert die Transformationsmethode zwischen zwei beliebigen Koordinatenreferenzsystemen mit proj4js-Definitionen.

Wenn die Bibliothek proj4js nicht enthalten ist oder Sie Transformationen zwischen beliebigen Koordinatenreferenzsystemen zulassen möchten, verwenden Sie die Methode addTransform, um eine benutzerdefinierte Transformationsmethode zu registrieren.

OpenLayer. ProjektionMethoden für Koordinatentransformationen zwischen Koordinatensystemen.
Eigenschaften
proj Proj4js.Proj-Instanz.
projCode
TitelRegEx regulärer Ausdruck, um den Titel aus einer proj4js-Definition zu entfernen
Konstrukteur
OpenLayer. ProjektionDiese Klasse bietet mehrere Methoden für die Interaktion mit einem umschlossenen pro4js-Projektionsobjekt.
Funktionen und Eigenschaften
getCodeRufen Sie den String-SRS-Code ab.
getUnitsHolen Sie sich die Einheitenzeichenfolge für die Projektion – gibt null zurück, wenn proj4js nicht verfügbar ist.
toStringKonvertieren Sie die Projektion in einen String (getCode-Wrapper).
gleichTesten Sie die Gleichheit von zwei Projektionsinstanzen.
zerstörenProjektionsobjekt zerstören.
verwandelt sich Transforms ist ein Objekt mit from-Eigenschaften, von denen jede eine to-Eigenschaft haben kann.
Standardeinstellungen Voreinstellungen für die OpenLayers bekannten SRS-Codes (derzeit EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113, EPSG:102100 und OSGEO: 41001).
addTransformLegen Sie eine benutzerdefinierte Transformationsmethode zwischen zwei Projektionen fest.
verwandelnTransformieren einer Punktkoordinate von einer Projektion in eine andere.
nullTransform

Eigenschaften

ProjCode

TitelRegEx

regulärer Ausdruck, um den Titel aus einer proj4js-Definition zu entfernen

Konstrukteur

OpenLayer. Projektion

Diese Klasse bietet mehrere Methoden für die Interaktion mit einem umschlossenen pro4js-Projektionsobjekt.

Parameter

projCode Eine Zeichenfolge, die den Well Known Identifier für die Projektion identifiziert.
Optionen Ein optionales Objekt zum Festlegen zusätzlicher Eigenschaften für die Projektion.

Kehrt zurück

Funktionen und Eigenschaften

GetCode

Kehrt zurück

GetUnits

Holen Sie sich die Einheitenzeichenfolge für die Projektion – gibt null zurück, wenn proj4js nicht verfügbar ist.

Kehrt zurück

ToString

Konvertieren Sie die Projektion in einen String (getCode-Wrapper).

Kehrt zurück

Gleich

Testen Sie die Gleichheit von zwei Projektionsinstanzen. Bestimmt die Gleichheit ausschließlich auf der Grundlage des Projektionscodes.

Kehrt zurück

Die beiden Projektionen sind äquivalent.

Zerstören

Projektionsobjekt zerstören.

Verwandelt sich

Transforms ist ein Objekt mit from-Eigenschaften, von denen jede eine to-Eigenschaft haben kann. Auf diese Weise können Sie Projektionen definieren, ohne dass proj4js unterstützt werden muss.

Dieses Objekt hat Schlüssel, die einem &lsquosource&rsquo-Projektionsobjekt entsprechen. Die Schlüssel sollten Strings sein, die dem Wert von project.getCode() entsprechen. Jedes Quellprojektionsobjekt sollte einen Satz von Zielprojektionsschlüsseln aufweisen, die im Objekt enthalten sind.

Jeder Wert im Zielobjekt sollte eine Transformationsfunktion sein, wobei erwartet wird, dass der Funktion ein Objekt mit einer .x- und einer .y-Eigenschaft übergeben wird. Die Funktion sollte das Objekt zurückgeben, wobei .x und .y gemäß der Transformationsfunktion transformiert wurden.

HinweisEigenschaften für dieses Objekt sollten nicht direkt festgelegt werden. Um diesem Objekt eine Transformationsmethode hinzuzufügen, verwenden Sie die Methode addTransform. Ein Anwendungsbeispiel finden Sie in der Datei OpenLayers.Layer.SphericalMercator.

Standardeinstellungen

Voreinstellungen für die OpenLayers bekannten SRS-Codes (derzeit EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113, EPSG:102100 und OSGEO: 41001). Schlüssel sind der SRS-Code, Werte sind Einheiten, maxExtent (die Gültigkeitsausdehnung für die SRS in projizierten Koordinaten), worldExtent (die Weltausdehnung in EPSG:4326) und yx (wahr, wenn bekannt ist, dass diese SRS eine umgekehrte Achsenreihenfolge hat).

AddTransform

Legen Sie eine benutzerdefinierte Transformationsmethode zwischen zwei Projektionen fest. Verwenden Sie diese Methode in Fällen, in denen die proj4js-Bibliothek nicht verfügbar ist oder benutzerdefinierte Projektionen verarbeitet werden müssen.

Parameter

von Der Code für die Quellprojektion
zu der Code für die Zielprojektion
Methode Eine Funktion, die einen Punkt als Argument verwendet und diesen Punkt von der Quell- in die vorhandene Zielprojektion umwandelt. Der ursprüngliche Punkt sollte geändert werden.

Verwandeln

Transformieren Sie eine Punktkoordinate von einer Projektion in eine andere. Beachten Sie, dass der Eingabepunkt an Ort und Stelle transformiert wird.


Wie konvertiert man einen String mit Javascript in OpenLayers.Geometry.Polygon? - Geografisches Informationssystem

Geografie-Markup-Sprache

Ronsee
Galdos Systems Inc

Dieser Artikel bietet eine kurze Einführung in die Geography Markup Language (GML). Der Artikel ist der erste einer Reihe von Artikeln, die Sie mit dieser spannenden Art der Darstellung und Manipulation von geografischen Informationen vertraut machen. Die folgenden Artikel auf dieser Website werden Sie in eine Vielzahl von GML-Themen einführen, darunter GML-Kartenerstellung, GML-Datentransformationen, räumliche Abfragen und geografische Analysen, GML-basierte räumliche Datenbanken und eine Vielzahl von GML-Anwendungen, einschließlich Anwendungen für mobile Computersysteme. Wir erwarten, dass GML die Behandlung räumlicher Informationen revolutionieren wird. GML ist webfreundlich. Zum ersten Mal haben räumliche Informationen einen wirklich öffentlichen Kodierungsstandard.

GML oder Geography Markup Language ist ein XML-basierter Kodierungsstandard für geografische Informationen, der vom OpenGIS Consortium (OGC) entwickelt wurde. Der aktuelle Status ist ein RFC, der innerhalb des OpenGIS-Konsortiums geprüft wird. Der RFC wird von einer Vielzahl von Anbietern unterstützt, darunter Oracle Corporation, Galdos Systems Inc, MapInfo, CubeWerx und Compusult Ltd. GML wurde implementiert und durch eine Reihe von Demonstrationen getestet, die Teil des Web Mapping Test Bed (WMT) des OpenGIS Consortium waren September 1999. Diese Tests umfassten GML-Mapping-Clients, die mit GML-Datenservern und Dienstanbietern interagierten.

2.2 Geographie, Grafiken und Karten

Bevor wir uns GML selbst ansehen, ist es wichtig, einige klare Unterschiede zwischen geografischen Daten (die in GML kodiert sind) und grafischen Interpretationen dieser Daten, wie sie auf einer Karte oder einer anderen Form der Visualisierung erscheinen können, zu unterscheiden. Geografische Daten befassen sich mit einer räumlichen Darstellung der Welt, die unabhängig von einer bestimmten Visualisierung dieser Daten ist. Wenn wir über geografische Daten sprechen, versuchen wir, Informationen über die Eigenschaften und Geometrie der Objekte zu erfassen, die die Welt um uns herum bevölkern. Wie wir diese auf einer Karte symbolisieren, welche Farben oder Strichstärken wir verwenden, ist etwas ganz anderes. So wie XML jetzt dem Web hilft, Inhalte klar von Präsentationen zu trennen, wird GML dasselbe in der Welt der Geographie tun.

GML beschäftigt sich mit der Darstellung des geographischen Dateninhalts. Natürlich können wir auch GML verwenden, um Karten zu erstellen. Dies könnte durch die Entwicklung eines Rendering-Tools zum Interpretieren von GML-Daten erreicht werden, dies würde jedoch dem GML-Ansatz zur Standardisierung und zur Trennung von Inhalt und Präsentation zuwiderlaufen. Um eine Karte aus GML zu erstellen, müssen wir nur die GML-Elemente in eine Form bringen, die für die grafische Anzeige in einem Webbrowser interpretiert werden kann. Zu den möglichen grafischen Anzeigeformaten gehören W3C Scalable Vector Graphics (SVG), die Microsoft Vector Markup Language (VML) und X3D. Ein Map-Styler wird daher verwendet, um GML-Elemente zu lokalisieren und sie unter Verwendung bestimmter grafischer Stile zu interpretieren. Der nächste Artikel dieser Serie befasst sich mit der Generierung einer Karte aus GML mit SVG und X3D.

Wie jede XML-Codierung repräsentiert GML geografische Informationen in Form von Text. Während dies in der Welt der räumlichen Informationssysteme noch vor kurzem als verboten galt, gewinnt die Idee nun an Fahrt. Text hat eine gewisse Einfachheit und Sichtbarkeit auf seiner Seite. Es ist leicht zu inspizieren und leicht zu ändern. Fügen Sie XML hinzu und es kann auch gesteuert werden.

Textformate für Geometrie und Geographie wurden schon früher verwendet. Die Pionierarbeit der Provinz British Columbia mit ihrem SAIF-Format ist nur ein Beispiel dafür. In der Provinz British Columbia sind mehr als 7000 Dateien mit Daten im Maßstab 1:20.000 einschließlich Topographie, Planimetrie (Hydrographie, Gebäude, Straßen usw.) und Toponymie im SAIF-Format verfügbar. Die Provinz hat gezeigt, dass Textformate praktisch und einfach zu verwenden sind. Ein weiteres Beispiel für die Verwendung von Text für komplexe geometrische Datensätze ist die von VRML (Vector Markup Language). Große und komplexe VRML-Modelle wurden erstellt und durch das Web navigiert, alle mit textbasierter Codierung. Interessanterweise werden die VRML-Geometrie und das VRML-Verhalten jetzt durch die Bemühungen der X3D-Arbeitsgruppe selbst in XML umgeformt.

2.4 GML kodiert Feature-Geometrie und -Eigenschaften

GML basiert auf dem abstrakten Geographiemodell des OGC. Dies beschreibt die Welt in Bezug auf geografische Einheiten, die als Features bezeichnet werden. Im Wesentlichen ist ein Feature nichts anderes als eine Liste von Eigenschaften und Geometrien. Eigenschaften haben den üblichen Namen, Typ, Wertbeschreibung. Geometrien bestehen aus grundlegenden Geometriebausteinen wie Punkten, Linien, Kurven, Flächen und Polygonen. Der Einfachheit halber ist die anfängliche GML-Spezifikation auf 2D-Geometrie beschränkt, jedoch werden in Kürze Erweiterungen erscheinen, die 2 1/2- und 3D-Geometrie sowie topologische Beziehungen zwischen Features behandeln.

Die GML-Kodierung ermöglicht bereits recht komplexe Funktionen. Ein Merkmal kann beispielsweise aus anderen Merkmalen zusammengesetzt sein. Ein einzelnes Merkmal wie ein Flughafen könnte somit aus anderen Merkmalen wie Rollwegen, Start- und Landebahnen, Hangars und Flugterminals zusammengesetzt sein. Die Geometrie eines geografischen Features kann auch aus vielen Geometrieelementen bestehen. Ein geometrisch komplexes Feature kann somit aus einer Mischung von Geometrietypen bestehen, einschließlich Punkten, Linienzügen und Polygonen.

Um die Geometrie eines Features wie eines Gebäudes zu codieren, schreiben wir einfach:

Eine wesentliche Komponente eines geografischen Systems ist ein Mittel, um die geografischen Merkmale auf die Erdoberfläche oder auf eine mit der Erdoberfläche zusammenhängende Struktur zu beziehen. Die aktuelle Version von GML enthält ein erdbasiertes räumliches Referenzsystem, das erweiterbar ist und die heute verwendeten Hauptprojektions- und geozentrischen Referenzsysteme enthält. Dies ist in der Lage, alle Referenzsysteme zu codieren, die auf der Website der European Petroleum Standards Group (EPSG) zu finden sind. Darüber hinaus ermöglicht das Kodierungsschema benutzerdefinierte Einheiten und Referenzsystemparameter. Zukünftige Versionen von GML werden wahrscheinlich noch flexiblere Codierungen bieten, um lokale Koordinatensysteme zu handhaben, wie sie für die Meilenprotokollierung usw. verwendet werden.

  • Client-Validierung eines vom Server angegebenen Raumbezugssystems. Der Kunde kann die SRS-Beschreibung (ein XML-Dokument) anfordern und mit seinen eigenen Spezifikationen vergleichen oder einem Benutzer zur Überprüfung zeigen.
  • Client-Anzeige eines vom Server angegebenen räumlichen Bezugssystems.
  • Wird von einem Koordinatentransformationsdienst verwendet, um das räumliche Bezugssystem einer Eingabedatenquelle zu validieren.
  • Ein Koordinatentransformationsdienst kann die SRS-Beschreibung mit seinen eigenen Spezifikationen vergleichen, um festzustellen, ob die SRS mit der ausgewählten Transformation übereinstimmt.
  • Um die automatisierte Koordinatentransformation zu steuern, indem Sie Eingabe- und Ausgabereferenzsystemnamen und Argumentwerte bereitstellen.

Mit der GML-Kodierung für Raumbezüge ist es möglich, eine Website zu erstellen, die beliebig viele Definitionen von Raumbezugssystemen speichert. Bleiben Sie auf der GeoJava-Site für Standardcodierungen gängiger räumlicher Referenzsysteme auf dem Laufenden.

2.6 GML-Funktionssammlungen

Die XML 1.0-Empfehlung des W3C basiert auf dem Begriff eines Dokuments. Die aktuelle Version von GML basiert auf XML 1.0 und verwendet eine FeatureCollection als Grundlage ihres Dokuments. Eine FeatureCollection ist eine Sammlung von GML-Features zusammen mit einem Umschlag (der den Satz von Features begrenzt), einer Sammlung von Eigenschaften, die für die FeatureCollection gelten, und einer optionalen Liste von räumlichen Referenzsystemdefinitionen. Eine FeatureCollection kann auch andere FeatureCollections enthalten, vorausgesetzt, dass der Envelope der umgebenden FeatureCollection die Envelopes aller enthaltenen FeatureCollections umgrenzt.

Wenn GML-Daten von einem GML-Server angefordert werden, werden Daten immer in FeatureCollections zurückgegeben. Die Anzahl der Features, die in einer FeatureCollection enthalten sein können, ist im GML RFC unbegrenzt. Da FeatureCollections andere FeatureCollections enthalten können, ist es ein relativ einfaches Verfahren, FeatureCollections, die von einem Server empfangen wurden, zu noch größeren Sammlungen zusammenzufügen.

2.7 GML - Mehr als ein Datentransport

Obwohl GML ein effektives Mittel zum Transport von geografischen Informationen von einem Ort zum anderen ist, erwarten wir, dass es auch ein wichtiges Mittel zur Speicherung geografischer Informationen wird. Das Schlüsselelement hier ist XLink und XPointer. Während diese beiden Spezifikationen im Entwicklungs- und Implementierungsbereich hinken, sind sie vielversprechend für den Aufbau komplexer und verteilter geografischer Datensätze. Geografische Daten sind, nun ja, geografisch. Es ist natürlich über die Erdoberfläche verteilt. Das Interesse an Daten über Flin Flon, Saskatchewan, ist in der Nähe von Flin Flon viel höher als in Pasadena, Kalifornien. Gleichzeitig gibt es Anwendungen, die Daten für groß angelegte Analysen oder aus Interesse an einem engen vertikalen Bereich global erreichen und erhalten müssen. Anwendungen der letzteren Art finden sich auch in einer Vielzahl von Bereichen, vom Umweltschutz über den Bergbau, den Straßenbau bis hin zum Katastrophenmanagement. Wie schön wäre es, wenn Daten auf lokaler Ebene entwickelt und leicht in die regionale und globale Ebene integriert werden könnten?

In den meisten Rechtsordnungen werden geografische Daten von bestimmten Behörden für einen bestimmten Zweck erhoben. Forstämter sammeln Informationen über die Disposition von Bäumen (Baumdurchmesser, Standortbedingungen, Wachstumsraten) für die effektive Bewirtschaftung von Wirtschaftswäldern. Umweltabteilungen sammeln Informationen über die Verbreitung von Tieren und den Lebensraum der Tiere. Entwicklungsinteressen halten Informationen über Demografie und vorhandene Merkmale in der gebauten Umgebung bereit. Probleme der realen Welt respektieren jedoch selten die kirchlichen Grenzen von Abteilungen, Ministerien und Ämtern. Wie schön wäre es, wenn Daten, die für einen Zweck entwickelt wurden, problemlos in Daten integriert werden könnten, die für einen anderen entwickelt wurden?

Wir glauben, dass GML als Speicherformat in Kombination mit XLink und XPointer einige nützliche Beiträge zu diesen Problemen liefern wird. Auf der GeoJava-Site finden Sie unseren Artikel zu GML Spatial Databases.

2.8 Von welchen Technologien hängt es ab?

GML basiert auf XML. XML wird zwar manchmal als Ersatz für HTML bezeichnet, kann aber am besten als Sprache für die Datenbeschreibung betrachtet werden. Genauer gesagt ist XML eine Sprache zum Ausdrücken von Datenbeschreibungssprachen. XML ist jedoch keine Programmiersprache. In XML gibt es keine Mechanismen, um Verhalten auszudrücken oder Berechnungen durchzuführen. Das bleibt anderen Sprachen wie Java und C++.

XML 1.0 bietet ein Mittel zum Beschreiben (Markieren) von Daten mit benutzerdefinierten Tags. Jedes Segment eines XML-Dokuments wird durch Start- und End-Tags begrenzt. Das sieht wie folgt aus:

<Funktion>
. mehr XML-Beschreibungen.
.
</Funktion>

Die gültigen Tag-Namen werden durch die Dokumenttypdefinition bestimmt. Welche Tags in einem öffnenden und schließenden Tag-Paar eingeschlossen erscheinen können, wird auch durch die DTD bestimmt.

XML-Tags können auch mit ihnen verknüpfte Attribute haben. Diese werden auch durch die DTD im Namen und in einigen Fällen in Bezug auf die Werte, die die Attribute annehmen können, eingeschränkt.

XML wird normalerweise von einem XML-Parser gelesen. Alle XML-Parser prüfen, ob die Daten wohlgeformt sind, damit Datenbeschädigungen (z. B. fehlendes schließendes Tag) nicht unentdeckt bleiben können. Viele XML-Parser sind auch validierend, dh sie prüfen, ob das Dokument der zugehörigen DTD entspricht.

Mit XML ist es vergleichsweise einfach, komplexe hierarchische Datenstrukturen zu generieren und zu validieren. Solche Strukturen sind bei geographischen Anwendungen üblich.

2.8.2 XSL und XSLT (Transformation des WWW)

Der ursprüngliche Fokus von XML bestand darin, Daten unabhängig von ihrer Präsentation zu beschreiben, insbesondere im Kontext des World Wide Web. XML Version 1.0 befasst sich mit der Beschreibung von Daten. Eine Begleittechnologie namens XSL sollte die Präsentationsseite übernehmen. Im Laufe der Zeit hat sich herausgestellt, dass es sich bei XSL eigentlich um zwei verschiedene Technologien handelt. Eine, jetzt XSLT (das T steht für Transformation) genannt, konzentriert sich auf die Transformation von XML. Die andere Technologie befasst sich mit der eigentlichen Formatierung von Text oder Bildern und wird in Form von Formatobjekten oder Flussobjekten bezeichnet. In unseren Diskussionen beschäftigen wir uns nur mit XSLT. Da viele Tools (z.B. MS IE 5.0) entwickelt wurden, bevor sich das XSLT-Label festsetzte, wird XSL immer noch oft verwendet, wenn nur XSLT beabsichtigt ist. Wir werden dieser Praxis folgen.

Wenn Sie xml.com folgen, erinnern Sie sich vielleicht an viele Diskussionen über die Vorzüge von XSL. Die Klarstellung zu XSLT hat dazu beigetragen, diese Diskussion etwas zu dämpfen, jedoch herrscht in einigen Bereichen der XML-Gemeinde immer noch große Skepsis gegenüber dem Nutzen und der Notwendigkeit von XSL. Wir stehen auf der anderen Seite des Problems. Wir glauben, dass der transformative Charakter von XML am wichtigsten ist, und XSL (XSLT) bietet ein sauberes deklaratives Mittel, um diese Transformationen auszudrücken. Aus unserer Sicht ist XSLT für GML ebenso wichtig wie XML selbst.

XSL ist eine ziemlich einfache Sprache. Es bietet eine leistungsstarke Syntax zum Ausdrücken von Mustervergleichen und -ersetzungen. Es ist deklarativ. Sie können leicht lesen, was das XSLT sagt. Sie können nicht sehen, wie es ausgeführt wird. Mit seinen Begleitspezifikationen (XPath und XQL) können Sie einige sehr leistungsfähige Abfragen für ein XML-Dokument angeben. Darüber hinaus bietet XSLT die Möglichkeit, Funktionen in einer anderen Programmiersprache wie VBScript oder Java durch die Verwendung von Extension Functions aufzurufen. Dies bedeutet, dass XSL verwendet werden kann, um die Abfrage und Auswahl durchzuführen und dann Java oder eine andere Sprache aufzurufen, um die erforderliche Berechnung oder String-Manipulation durchzuführen. Für einfache Aufgaben bietet XSLT eingebaute String-Handling- und arithmetische Funktionen.

2.8.3 SVG, VML und X3D – Vektorgrafiken für das Web

XML hat sich in vielen verschiedenen Bereichen durchgesetzt, nicht zuletzt in Vektorgrafiken. Es wurden mehrere XML-basierte Spezifikationen zur Beschreibung von Vektorgrafikelementen entwickelt, darunter Scalable Vector Graphics (SVG), Microsofts Vector Markup Language (VML) und X3D, die XML-Inkarnation der Syntax und des Verhaltens von VRML (Virtual Reality Markup Language). Diese Spezifikationen ähneln in vielerlei Hinsicht GML, haben aber ein ganz anderes Ziel. Jeder hat ein Mittel zur Beschreibung der Geometrie. Die grafischen Spezifikationen sind jedoch auf das Aussehen fokussiert und beinhalten daher Eigenschaften und Elemente für Farben, Strichstärken und Transparenz, um nur einige Aspekte zu nennen. Um eine SVG-, VML- oder X3D-Datendatei anzuzeigen, ist ein geeigneter grafischer Datenbetrachter erforderlich. Im Fall von VML ist dies in IE 5.0 (und nirgendwo anders) integriert. Im Fall von SVG entwickelt Adobe eine Reihe von Plug-Ins für Internet Explorer und Netscape Communicator sowie Adobe Illustrator, während IBM und mehrere andere Unternehmen SVG-Viewer oder unterstützende Grafikbibliotheken sind oder bereits entwickelt haben. Mehrere alle Java-SVG-Viewer sind verfügbar oder in Entwicklung.

Um eine Karte aus GML-Daten zu zeichnen, müssen Sie die GML in eines der grafischen Vektordatenformate wie SVG, VML oder VRML umwandeln. Dies bedeutet, jedem Typ von GML-Feature oder Feature-Instanz einen grafischen "Stil" (z. B. Symbol, Farbe, Textur) zuzuordnen. Wir werden mehr dazu im GeoJava-Artikel Erstellen von Karten aus GML zu sagen haben.

Abbildung 1. veranschaulicht das Zeichnen einer Karte mit einem XSLT-Stylesheet auf einem geeigneten Mapping-Client.

Mit der aktuellen HTML-Technologie ist es möglich, verknüpfte geografische Datensätze zu erstellen. Man kann ohne weiteres Imagemaps erstellen, die mit anderen Imagemaps verknüpft sind. Der HTML-Verknüpfungsmechanismus weist jedoch viele Einschränkungen auf, und als Ergebnis ist es nicht praktikabel, große komplexe verteilte Datensätze zu erstellen, wie sie in Systemen der realen Welt vorkommen. Die wichtigste Einschränkung besteht darin, dass ein HTML-Link sowohl in den Quell- (<a href = . >) als auch in den Zieldokumenten (Anker) effektiv hartcodiert ist, was jedes bedeutende System sowohl fragil als auch unmöglich skalieren würde. XLink umgeht diese Probleme, indem es "out of line"-Links zulässt. In einem Out-of-Line-Link zeigt die Quelle nur auf eine Link-Datenbank und es ist die Link-Datenbank, die den Zeiger auf bestimmte XML-Elemente im Zieldokument bereitstellt. Der Link ist daher in keinem der Dokumente fest codiert. Dies ist in Bezug auf GML von großer Bedeutung, da es den Aufbau skalierbarer, verteilter geografischer Datensätze ermöglicht. Noch wichtiger ist, dass XLink und XPointer es ermöglichen, anwendungsspezifische Indizes für ein Datum zu erstellen. Müssen Sie eine Gruppe von Gebäuden nach Straßenadressen ordnen? Möchten Sie einen landwirtschaftlichen Parzellenindex basierend auf der Pflanzenart erstellen? Mit XLink und XPointer können diese und viele andere Indizierungsschemata leicht erstellt werden, ohne die Quelldaten selbst zu ändern. Dazu werden wir in den kommenden Artikeln noch viel mehr zu sagen haben.

Warum überhaupt GML einführen? Es gibt bereits eine Vielzahl von Kodierungsstandards für geografische Informationen, darunter COGIF, MDIFF, SAIF, DLG, SDTS, um nur einige zu nennen. Was ist an GML so anders? Irgendwie nichts. GML ist eine einfache textbasierte Codierung geografischer Merkmale. Einige dieser anderen Formate sind nicht textbasiert, einige von ihnen (z. B. SAIF) jedoch sicher. GML basiert auf einem gemeinsamen Geographiemodell (OGC Abstract Specification), das von der überwiegenden Mehrheit aller GIS-Anbieter weltweit entwickelt und akzeptiert wurde. Noch wichtiger ist jedoch, dass GML auf XML basiert. Warum sollte das wichtig sein? Es gibt mehrere Gründe, warum XML wichtig ist. XML bietet zunächst eine Methode zur Überprüfung der Datenintegrität. Zweitens kann jedes XML-Dokument mit einem einfachen Texteditor gelesen und bearbeitet werden. Zum Anzeigen oder Ändern eines XML-Dokuments ist nicht mehr als MS Notepad erforderlich. Drittens wird es aufgrund der zunehmenden Zahl von XML-Sprachen immer einfacher, GML-Daten mit nicht-räumlichen Daten zu integrieren. Auch bei nicht-XML-nicht-räumlichen Daten ist dies der Fall. Am wichtigsten ist vielleicht, dass XML einfach zu transformieren ist. Mit XSLT oder fast jeder anderen Programmiersprache (VB, VBScript, Java, C++, Javascript) können wir XML problemlos von einer Form in eine andere umwandeln. Ein einziger Mechanismus kann somit für eine Vielzahl von Transformationen von der Datenvisualisierung bis hin zu Koordinatentransformationen, räumlichen Abfragen und georäumlicher Generalisierung verwendet werden.

GML basiert sicher auf einem weit verbreiteten öffentlichen Standard, dem von XML. Dadurch wird sichergestellt, dass GML-Daten mit einer Vielzahl kommerzieller und kostenloser Tools angezeigt, bearbeitet und transformiert werden können. Zum ersten Mal können wir wirklich über offene geografische Informationen sprechen.

3.1 Automated Verification of Data Integrity

One of the important features of XML is the ability to verify data integrity. In the XML 1.0 Recommendation this is achieved through the Document Type Definition (DTD). The DTD specifies the structure of an XML document in a such a way that a validating parser can verify that a given document instance complies with this DTD. GML is specified by such a DTD. Future versions of GML will also be supported by XML Schema, a more flexible integrity mechanism than the DTD that should become a W3C Recommendation early in 2000.

Using the GML DTD, servers and clients can readily verify that the data they are to send or receive complies with the specification. Furthermore this can be accomplished with a variety of parsing tools by at least a have a dozen different vendors on a wide variety of operating systems, databases, application servers and browsers.

3.2 GML can be Read by Public Tools

As we have already noted, GML is text and one need have nothing more than a simple text editor to read it. GML, however, is structured, and any of a variety of XML editors can be employed to display that structure. This makes viewing and navigating GML data very easy as shown in Figure 2.

Figure 2. Sample GML File Viewed in XML Spy

3.3 GML can be Easily Edited

Using the many XML editors described in Section 3.2 it is also very easy to edit GML data. Want to add a new feature property or change a property value ? Need to adjust a features geometry. These are easily accomplished with a standard XML editor. Unlike many other text based formats however there is no way you can corrupt the data using an XML editor. The editor can be made to ensure that any data which is created or modified complies with the DTD.

It is also not difficult to create a graphical editor for GML and such products are expected to appear on the market within the coming year. Again the GML DTD can be used to ensure data integrity. Note that when one edits GML graphically an intermediate graphic representation is required (perhaps SVG) which is then used to define the geometry of the associated GML feature. We will have more to say on this subject in our up coming article on Making Maps from GML to appear on the GeoJava site.

3.4 GML can readily Integrate with Non-Spatial Data

Binary data structures are typically very difficult to integrate with one another. A classic example is that of associating a text document, or a parameter list, with a separately developed and maintained spatial database of parcels or land tenure boundaries. With a binary data structure one must understand the file structure or database schema and be able to modify it. In many legacy systems using flat files the data structure cannot be modified without breaking the applications which rely on the existing data structure. With GML it is comparatively easy to provide links to other XML data elements and this will dramatically improve with the introduction of XLink and XPointer. Even links to non-XML elements can be readily handled using the well established URI syntax.

3.5 GML is Transformable

The most important aspect of XML in our view is its transformability. It is quite easy to write a transformation which carries XML data relative to one DTD to XML relative to another. This is exactly what we do when we generate an SVG graphical element stream from a GML data file. Such transformations can be accomplished using a variety of mechanisms including XSLT, Java, Javascript and C++ to name only a few. XSLT in our view is of particular interest. With XSLT it is very easy to write a style sheet which locates and transforms GML elements into other XML elements. Where XSLT is not up to the task, one can readily incorporate XSLT extension functions written in Java or VB (the exact languages supported depends on the implementation) to perform tasks such as string manipulation or mathematical computation. XSLT can also make use of powerful searching syntax (XPath/XQL) so as to retrieve elements that satisfy complex boolean expressions on the elements and their attributes. Using these techniques an XSLT style sheet can perform a wide variety of querying, analysis and transformation functions. Consider the following examples:

Using XSLT with suitable extension functions we can extract spatial elements which satisfy various spatial and attribute queries. Galdos Systems Inc will be providing just such a set of spatial extension functions in the near future on the GeoJava site. Using these functions it will be straightforward to write a spatial query that extracts features of a given type which lie within a specified region or which intersect a particular feature.

Change the XSLT style sheet and we can accomplish a totally different function. We can for example write a style sheet that performs coordinate transformation as was demonstrated in the OGC WMT IOC in Washington, September 10, 1999. This immediately provides us with a coordinate transformation service. Locate GML data in one part of the world in reference system X and simply pass its URI to the service and specify the target reference system, and presto you will have GML in the new frame of reference. Look on the GeoJava site for upcoming coordinate transformation service for GML data.

Change the XSLT style sheet and we can accomplish yet another function. We can for example generate an SVG, VML or X3D map on the server. Select different style sheets for different viewing devices or different types of maps.

The transformability of GML also means that we can readily construct application specific indexes or at least we will be able to once XLink and XPointer implementations start to move toward reality. Look for this to have a huge impact on the utility of GML data sets.

3.6 GML can Transport Behaviour

XML is a language for describing data description languages. GML does not itself encode behaviour. GML can, however, be used in conjunction with languages like Java or C++ to in effect transport geographic behaviour from one place to another. This can be done using a simple object factory which instantiates objects based on received GML data, mapping the GML element names into object classes. In the Java case this would mean mapping the GML elements into Java classes as listed in the OGC Java Simple Features RFC. This "re-hydration" of the GML data then creates Java objects which have the OGC interfaces for Simple Features (of course we did not transport the interfaces). GML and Java (or COM or CORBA) Simple Features can thus get along very well with one another. In many applications one only needs the behaviour for a small number of the elements. With this approach one might receive 10,000 GML elements but only need to construct a hundred or so Java objects on an as needed basis.

4.0 What's Coming Down the Road ?

I think we have made it pretty clear that we think GML is pretty cool. Once you have had the opportunity to play with it you will think it is pretty cool as well. Over the next 6 months a series of articles and services extending your understanding of GML, and how to apply it in real world problems, will appear on the GeoJava website. Look for articles on Map Making, Making maps in SVG, Geographic Transformations, GML Spatial databases, Mobile applications and much more.

What will happen to GML itself ? We expect quite a lot. The current version of GML is based on linear geometry and provide no notions of topology. Over the next several months, new versions of GML will be introduced adding topology, non-linear feature geometries, 21/2 and 3D geometry, support for OGC Coverages, XSLT spatial query extension functions, XLink/XPointer support, and an XML Schema implementation.

GML is a powerful new way to look at spatial information using XML encoding. It promises. however, much more than a mere encoding standard. The inherent transformability and accessibility of GML will open a whole new domain in geo-spatial information management.


How to convert a String to OpenLayers.Geometry.Polygon using javascript? - Geographic Information Systems

Wicket is a lightweight library for translating between Well-Known Text (WKT) and various client-side mapping frameworks:

  • Leaflet (demo)
  • Google Maps API (demo)
  • ESRI ArcGIS JavaScript API (demo)
  • Potentially any other web mapping framework through serialization and de-serialization of GeoJSON (with JSON.parse )

The core Wicket library and the Leaflet extension are both compatible with Node.js the Google Maps and ArcGIS API extensions will not work in Node.js because they require a browser.

If you are looking for Apache Wicket, the web-app development framework for Java, you'll find it here.

Wicket is released under the GNU General Public License version 3 (GPLv3). Accordingly:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The following examples work in any of the mapping environments, as Wicket has a uniform API regardless of the client-side mapping library you're using.

Wicket will read from the geometry objects of any mapping client it understands. Hinweis: Don't use the deconstruct() method! This is used internally by Wkt.Wkt() instances. Use fromObject() instead, as in the following example.

Dependencies and Build Information

Wicket has zero dependencies, however, JSON parsing (from strings) is not provided. Wicket looks for the function JSON.parse , which is provided in most modern browsers (get it with this library, if you need to support older browsers).

Minified versions can be generated via:

Read the documentation here. Documentation can be generated with JSDoc 3.

Either way, make sure you invoke jsdoc from a directory in which you have write access it will output documentation to your current working directory.

Wicket was created out of the need for a lightweight Javascript library that can translate Well-Known Text (WKT) strings into geographic features. This problem arose in the context of OpenClimateGIS, a web framework for accessing and subsetting online climate data.

OpenClimateGIS emits WKT representations of user-defined geometry. The API Explorer allowed users to define arbitrary areas-of-interest (AOIs) and view predefined AOIs on a Google Maps API instance. So, initially, the problem was converting between WKT strings and Google Maps API features. While other mapping libraries, such as OpenLayers, have very nice WKT libraries built-in, the Google Maps API, as of this writing, does not. In the (apparent) absence of a lightweight, easy-to-use WKT library in Javascript, I set out to create one.

That is what Wicket aspires to be: lightweight, framework-agnostic, and useful. I hope it achieves these goals. If you find it isn't living up to that and you have ideas on how to improve it, please fork the code or drop me a line.

Wicket borrows heavily from the experiences of others who came before us:

  • The OpenLayers 2.7 WKT module (OpenLayers.Format.WKT)
  • Chris Pietshmann's article on converting Bing Maps shapes (VEShape) to WKT
  • Charles R. Schmidt's and the Python Spatial Analysis Laboratory's (PySAL) WKT writer

The base library, wicket.js, contains the Wkt.Wkt base object. This object doesn't do anything on its own except read in WKT strings, allow the underlying geometry to be manipulated programmatically, and write WKT strings. By loading additional libraries, such as wicket-gmap3.js, users can transform between between WKT and the features of a given framework (e.g. google.maps.Polygon instances). The intent is to add support for new frameworks as additional Javascript files that alter the Wkt.Wkt prototype.

To extend Wicket, nominally by writing bindings for a new mapping library, add a new file with a name like wicket-libname.src.js (and corresponding minified version wicket-libname.js) where "libname" is some reasonably short, well-known name for the mapping library.

WKT geometries are stored internally using the following convention. The atomic unit of geometry is the coordinate pair (e.g. latitude and longitude) which is represented by an Object with x and y properties. An Array with a single coordinate pair represents a a single point (i.e. POINT feature):

An Array of multiple points (an Array of Arrays) specifies a "collection" of points (i.e. a MULTIPOINT feature):

An Array of multiple coordinates specifies a collection of connected points in an ordered sequence (i.e. LINESTRING feature):

An Array can also contain other Arrays. In these cases, the contained Array(s) can each represent one of two geometry types. The contained Array might reprsent a single polygon (i.e. POLYGON feature):

The above example cannot represent a LINESTRING feature (one of the few type-based constraints on the internal representations), however it may represent a MULTILINESTRING feature. Both POLYGON and MULTILINESTRING features are internally represented the same way. The difference between the two is specified elsewhere (in the Wkt instance's type) and must be retained. In this particular example (above), we can see that the first coordinate in the Array is repeated at the end, meaning that the geometry is closed. We can therefore infer it represents a POLYGON and not a MULTILINESTRING even before we plot it. Wicket retains the type of the feature and will always remember which it is.

Similarly, multiple nested Arrays might reprsent a MULTIPOLYGON feature:

Or a POLYGON with inner rings (holes) in it where the outer ring is the polygon envelope and comes first subsequent Arrays are inner rings (holes):

Or they might represent a MULTILINESTRING where each nested Array is a different LINESTRING in the collection. Again, Wicket remembers the correct type of feature even though the internal representation is ambiguous.


Resource file naming

Resources are named for the full type name of their class minus the assembly name. For example, a French resource in a project whose main assembly is LocalizationWebsite.Web.dll for the class LocalizationWebsite.Web.Startup would be named Startup.fr.resx. A resource for the class LocalizationWebsite.Web.Controllers.HomeController would be named Controllers.HomeController.fr.resx. If your targeted class's namespace isn't the same as the assembly name you will need the full type name. For example, in the sample project a resource for the type ExtraNamespace.Tools would be named ExtraNamespace.Tools.fr.resx.

In the sample project, the ConfigureServices method sets the ResourcesPath to "Resources", so the project relative path for the home controller's French resource file is Resources/Controllers.HomeController.fr.resx. Alternatively, you can use folders to organize resource files. For the home controller, the path would be Resources/Controllers/HomeController.fr.resx. If you don't use the ResourcesPath option, the .resx file would go in the project base directory. The resource file for HomeController would be named Controllers.HomeController.fr.resx. The choice of using the dot or path naming convention depends on how you want to organize your resource files.

Resource name Dot or path naming
Resources/Controllers.HomeController.fr.resx Dot
Resources/Controllers/HomeController.fr.resx Path

Resource files using @inject IViewLocalizer in Razor views follow a similar pattern. The resource file for a view can be named using either dot naming or path naming. Razor view resource files mimic the path of their associated view file. Assuming we set the ResourcesPath to "Resources", the French resource file associated with the Views/Home/About.cshtml view could be either of the following:

If you don't use the ResourcesPath option, the .resx file for a view would be located in the same folder as the view.

RootNamespaceAttribute

The RootNamespaceAttribute attribute provides the root namespace of an assembly when the root namespace of an assembly is different than the assembly name.

This can occur when a project's name is not a valid .NET identifier. For instance my-project-name.csproj will use the root namespace my_project_name and the assembly name my-project-name leading to this error.

If the root namespace of an assembly is different than the assembly name:

  • Localization does not work by default.
  • Localization fails due to the way resources are searched for within the assembly. RootNamespace is a build-time value which is not available to the executing process.

If the RootNamespace is different from the AssemblyName , include the following in AssemblyInfo.cs (with parameter values replaced with the actual values):

The preceding code enables the successful resolution of resx files.


In a new short series of posts, we highlight some of the useful tools and techniques for developers and designers. Recently we’ve covered HTML Emails and SVG Generators. This time we look into different kinds of tools to help you streamline your accessibility testing process. Don’t miss the next one.

Smashing Magazine is so much more than articles.

14 printed books und 67 eBooks. Written for web developers, designers and marketeers.

Jump to books ↬ Free airmail shipping wordlwide. No ifs or buts.

Online workshops with experts. Broken into 2.5h-segments, with interactive, live sessions.

Helping designers and developers find great jobs, and connect with great companies.

A friendly community for people who design and build the web. With discounts, goodies and fancy cats.

Weekly tips on front-end & UX, delivered straight to your inbox. Just practical stuff that you can use.


In this HTML vs HTML5 article, we’ve learned the key features that distinguish HTML5 with its predecessor.

First, HTML5 enhanced tons of areas that its older version was lacking. It supports both video and audio embedding via <audio> und <video> tags, gives full support for JavaScript to run in the background, provides multiple new elements, like date, datalist, summary, etc., and has better compatibility with improved parsing rules.

Second, from a developer standpoint, HTML5 presents improvement in many areas, including persistent error handling, semantics elements, support for web application and mobile usage, utilization for <canvas> element, etc.

Finally, considering how convenient the use of HTML5 in modern-day web technology, we can safely assume that the adoption of this markup language will increase even more rapidly in the years to come.

It’s of paramount importance for you to learn about HTML5 as quickly as possible to maximize the potential of modern-day browsers. We hope that this HTML vs HTML5 article is of help. Best of Luck!

Domantas leads the content and SEO teams forward with fresh ideas and out of the box approaches. Armed with extensive SEO and marketing knowledge, he aims to spread the word of Hostinger to every corner of the world. During his free time, Domantas likes to hone his web development skills and travel to exotic places.


Schau das Video: How to create map with GeoServer Open Layer and WMS. WFS? (Oktober 2021).