Suite

Comment convertir une chaîne en OpenLayers.Geometry.Polygon en utilisant javascript ?


J'utilise Javascript, jQuery, Java, GeoServer, OpenLayers et PostGIS.

Utiliser la classe JavaEnsemble de résultatsJe renvoie cette chaîne :

POLYGONE ((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))

Assez long n'est-ce pas ? Donc, en utilisant la fonction ajax de JQuery, j'attrape cette chaîne et maintenant je veux la convertir en unOpenLayers.Geometry.Polygon, c'est la ligne où j'utilise la fonction ajax :

$.ajax({ url:"Catcher", data:query, type:"POST", dataType:"text", success:function(data){ var fea=new OpenLayers.Feature.Vector(data); //ceci ne fonctionne pas vectorLayer.addFeatures([fea]); // ici, j'ajoute l'entité à la couche vectorielle que j'ai créée en tant que variable globale map.zoomToExtent(bounds); } });

Comment puis-je faire la conversion?


Utilisez la classe OpenLayers.Format.WKT.

Essayez de remplacer cette ligne :

var fea=new OpenLayers.Feature.Vector(data); //ça ne marche pas

Pour cette ligne(si data.d = "POLYGONE((516000… ") :

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

Voici un exemple d'utilisation : http://dev.openlayers.org/examples/vector-formats.html


OpenLayers. Projection

Méthodes pour les transformations de coordonnées entre les systèmes de coordonnées. Par défaut, OpenLayers est livré avec la possibilité de transformer les coordonnées entre les systèmes de référence de coordonnées géographiques (EPSG:4326) et Web ou sphériques (EPSG:900913 et al.). Voir la méthode de transformation pour plus de détails sur l'utilisation.

Des transformations supplémentaires peuvent être ajoutées en utilisant la bibliothèque proj4js. Si la bibliothèque proj4js est incluse, la méthode de transformation fonctionnera entre deux systèmes de référence de coordonnées avec des définitions proj4js.

Si la bibliothèque proj4js n'est pas incluse ou si vous souhaitez autoriser les transformations entre des systèmes de référence de coordonnées arbitraires, utilisez la méthode addTransform pour enregistrer une méthode de transformation personnalisée.

OpenLayers. ProjectionMéthodes pour les transformations de coordonnées entre les systèmes de coordonnées.
Propriétés
proj Instance Proj4js.Proj.
CodeProj
titreRegEx expression régulière pour supprimer le titre d'une définition proj4js
Constructeur
OpenLayers. ProjectionCette classe propose plusieurs méthodes pour interagir avec un objet de projection pro4js encapsulé.
Fonctions et propriétés
obtenir le codeObtenez le code SRS de la chaîne.
getUnitsRécupère la chaîne d'unités pour la projection -- renvoie null si proj4js n'est pas disponible.
toStringConvertir la projection en chaîne (capteur getCode).
équivaut àTestez l'égalité de deux instances de projection.
détruireDétruire l'objet de projection.
se transforme Transforms est un objet, avec des propriétés from, chacune pouvant avoir une propriété to.
valeurs par défaut Valeurs par défaut des codes SRS connus d'OpenLayers (actuellement EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113 et EPSG:102100).
ajouterTransformerDéfinissez une méthode de transformation personnalisée entre deux projections.
transformerTransformez une coordonnée de point d'une projection à une autre.
nullTransform

Propriétés

CodeProj

TitreRegEx

expression régulière pour supprimer le titre d'une définition proj4js

Constructeur

OpenLayers. Projection

Cette classe propose plusieurs méthodes pour interagir avec un objet de projection pro4js encapsulé.

Paramètres

CodeProj Une chaîne identifiant l'identificateur bien connu de la projection.
options Un objet facultatif pour définir des propriétés supplémentaires sur la projection.

Retour

Fonctions et propriétés

Obtenir le code

Retour

GetUnits

Récupère la chaîne d'unités pour la projection -- renvoie null si proj4js n'est pas disponible.

Retour

ToString

Convertir la projection en chaîne (capteur getCode).

Retour

Équivaut à

Testez l'égalité de deux instances de projection. Détermine l'égalité basée uniquement sur le code de projection.

Retour

Les deux projections sont équivalentes.

Détruire

Détruire l'objet de projection.

Se transforme

Transforms est un objet, avec des propriétés from, chacune pouvant avoir une propriété to. Cela vous permet de définir des projections sans nécessiter la prise en charge de proj4js à inclure.

Cet objet possède des clés qui correspondent à un objet de projection &lsquosource&rsquo. Les clés doivent être des chaînes, correspondant à la valeur projection.getCode(). Chaque objet de projection source doit avoir un ensemble de clés de projection de destination incluses dans l'objet.

Chaque valeur dans l'objet de destination doit être une fonction de transformation, où la fonction doit recevoir un objet avec une propriété .x et une propriété .y. La fonction doit renvoyer l'objet, avec les .x et .y transformés selon la fonction de transformation.

NoterLes propriétés de cet objet ne doivent pas être définies directement. Pour ajouter une méthode de transformation à cet objet, utilisez la méthode addTransform. Pour un exemple d'utilisation, consultez le fichier OpenLayers.Layer.SphericalMercator.

Valeurs par défaut

Valeurs par défaut des codes SRS connus d'OpenLayers (actuellement EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113 et EPSG:102100). Les clés sont le code SRS, les valeurs sont les unités, maxExtent (l'étendue de validité pour le SRS) et yx (vrai si ce SRS est connu pour avoir un ordre d'axe inversé).

AjouterTransformer

Définissez une méthode de transformation personnalisée entre deux projections. Utilisez cette méthode dans les cas où la bibliothèque proj4js n'est pas disponible ou lorsque des projections personnalisées doivent être gérées.

Paramètres

de Le code de la projection source
à le code de la projection de destination
méthode Une fonction qui prend un point comme argument et transforme ce point de la source à la projection de destination en place. Le point d'origine doit être modifié.

Transformer

Transformez une coordonnée de point d'une projection à une autre. Notez que le point d'entrée est transformé en place.


Si vous souhaitez signaler une erreur, ou si vous souhaitez faire une suggestion, n'hésitez pas à nous envoyer un e-mail :

Votre message a été envoyé à W3Schools.

Top Tutoriels

Meilleures références

Principaux exemples

Cours Web

W3Schools est optimisé pour l'apprentissage et la formation. Les exemples pourraient être simplifiés pour améliorer la lecture et l'apprentissage. Les didacticiels, les références et les exemples sont constamment révisés pour éviter les erreurs, mais nous ne pouvons garantir l'exactitude totale de tout le contenu. En utilisant W3Schools, vous acceptez d'avoir lu et accepté nos conditions d'utilisation, notre politique de confidentialité et de cookies.


Gestion des erreurs et des tentatives

Si vous recevez des réponses UNKNOWN_ERROR, celles-ci sont causées par des erreurs transitoires et il est préférable de réessayer après un court délai. Nous vous recommandons d'utiliser les bibliothèques clientes de services Web de Google Maps Platform, qui incluent une logique de nouvelle tentative et prennent en charge l'authentification Google Maps Platform Premium Plan. Le client Java, le client Python, le client Go et le client Node.js pour les services Google Maps sont des bibliothèques clientes prises en charge par la communauté, disponibles pour téléchargement et contributions sur GitHub, où vous trouverez également des instructions d'installation et un exemple de code.

Si vous obtenez un code d'état OVER_QUERY_LIMIT en réponse, vous avez dépassé les limites d'utilisation de l'API. Nous vous recommandons d'essayer ces stratégies d'optimisation de l'utilisation.

Sauf indication contraire, le contenu de cette page est sous licence Creative Commons Attribution 4.0 et les exemples de code sont sous licence Apache 2.0. Pour plus de détails, consultez les règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses filiales.


OpenLayers. Projection

Méthodes pour les transformations de coordonnées entre les systèmes de coordonnées. Par défaut, OpenLayers est livré avec la possibilité de transformer les coordonnées entre les systèmes de référence de coordonnées géographiques (EPSG:4326) et Web ou sphériques (EPSG:900913 et al.). Voir la méthode de transformation pour plus de détails sur l'utilisation.

Des transformations supplémentaires peuvent être ajoutées en utilisant la bibliothèque proj4js. Si la bibliothèque proj4js est incluse, la méthode de transformation fonctionnera entre deux systèmes de référence de coordonnées avec des définitions proj4js.

Si la bibliothèque proj4js n'est pas incluse ou si vous souhaitez autoriser les transformations entre des systèmes de référence de coordonnées arbitraires, utilisez la méthode addTransform pour enregistrer une méthode de transformation personnalisée.

OpenLayers. ProjectionMéthodes pour les transformations de coordonnées entre les systèmes de coordonnées.
Propriétés
proj Instance Proj4js.Proj.
CodeProj
titreRegEx expression régulière pour supprimer le titre d'une définition proj4js
Constructeur
OpenLayers. ProjectionCette classe propose plusieurs méthodes pour interagir avec un objet de projection pro4js encapsulé.
Fonctions et propriétés
obtenir le codeObtenez le code SRS de la chaîne.
getUnitsRécupère la chaîne d'unités pour la projection -- renvoie null si proj4js n'est pas disponible.
toStringConvertir la projection en chaîne (capteur getCode).
équivaut àTestez l'égalité de deux instances de projection.
détruireDétruire l'objet de projection.
se transforme Transforms est un objet, avec des propriétés from, chacune pouvant avoir une propriété to.
valeurs par défaut Valeurs par défaut des codes SRS connus d'OpenLayers (actuellement EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113, EPSG:102100 et OSGEO : 41001).
ajouterTransformerDéfinissez une méthode de transformation personnalisée entre deux projections.
transformerTransformez une coordonnée de point d'une projection à une autre.
nullTransform

Propriétés

CodeProj

TitreRegEx

expression régulière pour supprimer le titre d'une définition proj4js

Constructeur

OpenLayers. Projection

Cette classe propose plusieurs méthodes pour interagir avec un objet de projection pro4js encapsulé.

Paramètres

CodeProj Une chaîne identifiant l'identificateur bien connu de la projection.
options Un objet facultatif pour définir des propriétés supplémentaires sur la projection.

Retour

Fonctions et propriétés

Obtenir le code

Retour

GetUnits

Récupère la chaîne d'unités pour la projection -- renvoie null si proj4js n'est pas disponible.

Retour

ToString

Convertir la projection en chaîne (capteur getCode).

Retour

Équivaut à

Testez l'égalité de deux instances de projection. Détermine l'égalité basée uniquement sur le code de projection.

Retour

Les deux projections sont équivalentes.

Détruire

Détruire l'objet de projection.

Se transforme

Transforms est un objet, avec des propriétés from, chacune pouvant avoir une propriété to. Cela vous permet de définir des projections sans nécessiter la prise en charge de proj4js à inclure.

Cet objet possède des clés qui correspondent à un objet de projection &lsquosource&rsquo. Les clés doivent être des chaînes, correspondant à la valeur projection.getCode(). Chaque objet de projection source doit avoir un ensemble de clés de projection de destination incluses dans l'objet.

Chaque valeur dans l'objet de destination doit être une fonction de transformation, où la fonction doit recevoir un objet avec une propriété .x et une propriété .y. La fonction doit renvoyer l'objet, avec les .x et .y transformés selon la fonction de transformation.

NoterLes propriétés de cet objet ne doivent pas être définies directement. Pour ajouter une méthode de transformation à cet objet, utilisez la méthode addTransform. Pour un exemple d'utilisation, consultez le fichier OpenLayers.Layer.SphericalMercator.

Valeurs par défaut

Valeurs par défaut des codes SRS connus d'OpenLayers (actuellement EPSG:4326, CRS:84, urn:ogc:def:crs:EPSG:6.6:4326, EPSG:900913, EPSG:3857, EPSG:102113, EPSG:102100 et OSGEO : 41001). Les clés sont le code SRS, les valeurs sont les unités, maxExtent (l'étendue de validité du SRS en coordonnées projetées), worldExtent (l'étendue du monde dans EPSG:4326) et yx (vrai si ce SRS est connu pour avoir un ordre d'axe inversé).

AjouterTransformer

Définissez une méthode de transformation personnalisée entre deux projections. Utilisez cette méthode dans les cas où la bibliothèque proj4js n'est pas disponible ou lorsque des projections personnalisées doivent être gérées.

Paramètres

de Le code de la projection source
à le code de la projection de destination
méthode Une fonction qui prend un point comme argument et transforme ce point de la source à la projection de destination en place. Le point d'origine doit être modifié.

Transformer

Transformez une coordonnée de point d'une projection à une autre. Notez que le point d'entrée est transformé en place.


Comment convertir une chaîne en OpenLayers.Geometry.Polygon en utilisant javascript ? - Systèmes d'information géographique

Langage de balisage géographique

Lac Ron
Systèmes Galdos Inc

Cet article fournit une brève introduction au langage de balisage géographique (GML). L'article est le premier d'une série d'articles pour vous familiariser avec cette façon passionnante de représenter et de manipuler l'information géographique. Les articles suivants sur ce site vous présenteront une variété de sujets GML, notamment la création de cartes GML, les transformations de données GML, les requêtes spatiales et l'analyse géographique, les bases de données spatiales basées sur GML et une variété d'applications GML, y compris les applications aux systèmes informatiques mobiles. Nous nous attendons à ce que GML révolutionne le traitement de l'information spatiale. GML est compatible avec le Web. Pour la première fois, l'information spatiale disposera d'un véritable standard de codage public.

GML ou Geography Markup Language est un standard de codage basé sur XML pour les informations géographiques développé par l'OpenGIS Consortium (OGC). Son statut actuel est une RFC en cours d'examen au sein du Consortium OpenGIS. Le RFC est pris en charge par divers fournisseurs, notamment Oracle Corporation, Galdos Systems Inc, MapInfo, CubeWerx et Compusult Ltd. GML a été mis en œuvre et testé à travers une série de démonstrations qui faisaient partie du Web Mapping Test Bed (WMT) du Consortium OpenGIS mené en Septembre 1999. Ces tests impliquaient des clients de mappage GML interagissant avec des serveurs de données et des fournisseurs de services GML.

2.2 Géographie, graphiques et cartes

Avant d'examiner le GML lui-même, il est important d'établir des distinctions claires entre les données géographiques (qui sont codées en GML) et les interprétations graphiques de ces données telles qu'elles pourraient apparaître sur une carte ou une autre forme de visualisation. Les données géographiques concernent une représentation du monde en termes spatiaux qui est indépendante de toute visualisation particulière de ces données. Lorsque nous parlons de données géographiques, nous essayons de capturer des informations sur les propriétés et la géométrie des objets qui peuplent le monde qui nous entoure. La façon dont nous les symbolisons sur une carte, les couleurs ou les épaisseurs de ligne que nous utilisons est quelque chose de très différent. Tout comme XML aide maintenant le Web à séparer clairement le contenu de la présentation, GML fera de même dans le monde de la géographie.

GML s'occupe de la représentation du contenu des données géographiques. Bien sûr, nous pouvons également utiliser GML pour faire des cartes. Cela pourrait être accompli en développant un outil de rendu pour interpréter les données GML, cependant, cela irait à l'encontre de l'approche GML de la normalisation et de la séparation du contenu et de la présentation. Pour créer une carte à partir de GML, il suffit de styliser les éléments GML sous une forme pouvant être interprétée pour un affichage graphique dans un navigateur Web. Les formats d'affichage graphique potentiels incluent les graphiques vectoriels évolutifs du W3C (SVG), le langage de balisage vectoriel de Microsoft (VML) et le X3D. Un styler de carte est ainsi utilisé pour localiser les éléments GML et les interpréter à l'aide de styles graphiques particuliers. Le prochain article de cette série traitera de la génération d'une carte à partir de GML en utilisant SVG et X3D.

Comme tout encodage XML, GML représente des informations géographiques sous forme de texte. Alors qu'il y a peu de temps, cela pouvait être considéré comme verboten dans le monde des systèmes d'information spatiale, l'idée prend maintenant beaucoup d'ampleur. Le texte a une certaine simplicité et visibilité de son côté. Il est facile à inspecter et facile à changer. Ajoutez XML et il peut également être contrôlé.

Des formats de texte pour la géométrie et la géographie ont été utilisés auparavant. Le travail de pionnier de la province de la Colombie-Britannique avec son format SAIF n'en est qu'un exemple. Dans la province de la Colombie-Britannique, plus de 7 000 fichiers de données à l'échelle 1:20 000 incluant la topographie, la planimétrie (hydrographie, bâtiments, routes, etc.) et la toponymie sont disponibles au format SAIF. La province a démontré que les formats de texte sont pratiques et faciles à utiliser. Un autre exemple d'utilisation du texte pour des ensembles de données géométriques complexes est celui du VRML (Vector Markup Language). Des modèles VRML volumineux et complexes ont été créés et parcourus sur le Web à l'aide d'un codage basé sur du texte. Il est intéressant de noter que la géométrie et le comportement VRML sont eux-mêmes en train d'être refondus en XML grâce aux efforts du groupe de travail X3D.

2.4 GML encode la géométrie et les propriétés des caractéristiques

GML est basé sur le modèle abstrait de géographie développé par l'OGC. Cela décrit le monde en termes d'entités géographiques appelées entités. Essentiellement, une caractéristique n'est rien de plus qu'une liste de propriétés et de géométries. Les propriétés ont le nom habituel, le type, la description de la valeur. Les géométries sont composées de blocs de construction de géométrie de base tels que des points, des lignes, des courbes, des surfaces et des polygones. Pour plus de simplicité, la spécification GML initiale est limitée à la géométrie 2D, cependant, des extensions apparaîtront sous peu pour gérer la géométrie 2 1/2 et 3D, ainsi que les relations topologiques entre les entités.

L'encodage GML permet déjà des fonctionnalités assez complexes. Une caractéristique peut par exemple être composée d'autres caractéristiques. Un élément unique comme un aéroport peut ainsi être composé d'autres éléments tels que des voies de circulation, des pistes, des hangars et des aérogares. La géométrie d'une entité géographique peut également être composée de plusieurs éléments géométriques. Une entité géométriquement complexe peut ainsi consister en un mélange de types de géométrie comprenant des points, des chaînes de lignes et des polygones.

Pour coder la géométrie d'un élément comme un bâtiment, nous écrivons simplement :

Une composante essentielle d'un système géographique est un moyen de référencer les caractéristiques géographiques à la surface de la terre ou à une structure liée à la surface de la terre. La version actuelle de GML incorpore un système de référence spatiale basé sur la terre qui est extensible et qui incorpore la projection principale et les cadres de référence géocentriques utilisés aujourd'hui. Celui-ci est capable d'encoder tous les systèmes de référence disponibles sur le site Web de l'European Petroleum Standards Group (EPSG). De plus, le schéma de codage permet des unités définies par l'utilisateur et des paramètres de système de référence. Les futures versions de GML fourniront probablement des codages encore plus flexibles afin de gérer les systèmes de coordonnées locaux tels que ceux utilisés pour la journalisation des kilomètres, etc.

  • Validation client d'un système de référence spatiale spécifié par le serveur. Le client peut demander la description SRS (un document XML) et la comparer à ses propres spécifications ou la montrer à un utilisateur pour vérification.
  • Affichage client d'un système de référence spatiale spécifié par le serveur.
  • Utilisation par un service de transformation de coordonnées pour valider un système de référence spatiale de sources de données d'entrée.
  • Un service de transformation de coordonnées peut comparer la description du SRS avec ses propres spécifications pour voir si le SRS est cohérent avec la transformation sélectionnée.
  • Pour contrôler la transformation automatisée des coordonnées en fournissant des noms de système de référence d'entrée et de sortie et des valeurs d'argument.

Avec l'encodage GML pour les références spatiales, il est possible de créer un site Web qui stocke un nombre quelconque de définitions de système de référence spatiale. Restez à l'écoute du site GeoJava pour les codages standard des systèmes de référence spatiale communs.

2.6 Collections de fonctionnalités GML

La recommandation XML 1.0 du W3C est basée sur la notion de document. La version actuelle de GML est basée sur XML 1.0 et utilise une FeatureCollection comme base de son document. Une FeatureCollection est une collection de fonctionnalités GML avec une enveloppe (qui délimite l'ensemble de fonctionnalités), une collection de propriétés qui s'appliquent à la FeatureCollection et une liste facultative de définitions de système de référence spatiale. Une FeatureCollection peut également contenir d'autres FeatureCollections, à condition que l'enveloppe de la FeatureCollection englobante délimite les enveloppes de toutes les FeatureCollections contenues.

Lorsqu'une demande est faite pour des données GML à partir d'un serveur GML, les données sont toujours renvoyées dans FeatureCollections. Il n'y a pas de limite dans la RFC GML sur le nombre de fonctionnalités qui peuvent être contenues dans une FeatureCollection. Étant donné que les FeatureCollections peuvent contenir d'autres FeatureCollections, il s'agit d'une procédure relativement simple pour "coller ensemble" les FeatureCollections reçues d'un serveur dans des collections encore plus grandes.

2.7 GML - Plus qu'un transport de données

Bien que GML soit un moyen efficace de transporter des informations géographiques d'un endroit à un autre, nous pensons qu'il deviendra également un moyen important de stocker des informations géographiques. L'élément clé ici est XLink et XPointer. Bien que ces deux spécifications soient en retard dans le domaine du développement et de la mise en œuvre, elles sont très prometteuses pour la construction d'ensembles de données géographiques complexes et distribués. Les données géographiques sont, eh bien, géographiques. Il est naturellement réparti sur la surface de la terre. L'intérêt pour les données sur Flin Flon, en Saskatchewan, est beaucoup plus élevé près de Flin Flon qu'il ne le serait à Pasadena, en Californie. Dans le même temps, il existe des applications qui doivent atteindre et obtenir des données sur une base mondiale pour une analyse à grande échelle ou en raison de l'intérêt pour un domaine vertical étroit. Les applications de ce dernier type abondent également dans une collection diversifiée de domaines allant de la protection de l'environnement à l'exploitation minière, à la construction d'autoroutes et à la gestion des catastrophes. Ce serait bien si les données pouvaient être développées à l'échelle locale et facilement intégrées à l'échelle régionale et mondiale ?

Dans la plupart des juridictions, les données géographiques sont collectées par des agences particulières dans un but particulier. Les bureaux forestiers recueillent des informations sur la disposition des arbres (diamètres des arbres, conditions du site, taux de croissance) pour une gestion efficace des forêts commerciales. Les services environnementaux collectent des informations sur la répartition des animaux et leur habitat. Les intérêts de développement maintiennent des informations sur la démographie et les caractéristiques existantes dans l'environnement bâti. Cependant, les problèmes du monde réel respectent rarement les limites paroissiales des départements, ministères et bureaux. Ce serait bien si les données développées pour un objectif pouvaient être facilement intégrées aux données développées pour un autre ?

Nous pensons que GML en tant que format de stockage, combiné avec XLink et XPointer apportera des contributions utiles à ces problèmes. Regardez le site GeoJava pour notre article sur les bases de données spatiales GML.

2.8 De quelles technologies dépend-il ?

GML est basé sur XML. XML, bien qu'on parle parfois de remplacement du HTML, est mieux considéré comme un langage de description de données. Plus correctement, XML est un langage pour exprimer des langages de description de données. XML n'est cependant pas un langage de programmation. Il n'y a aucun mécanisme dans XML pour exprimer un comportement ou effectuer des calculs. Cela reste pour d'autres langages tels que Java et C++.

XML 1.0 fournit un moyen de décrire (baliser) les données à l'aide de balises définies par l'utilisateur. Chaque segment d'un document XML est délimité par des balises de début et de fin. Cela ressemble à ceci :

<Fonctionnalité>
. plus de descriptions XML .
.
</Fonctionnalité>

Les noms de balise valides sont déterminés par la définition du type de document. Les balises qui peuvent apparaître enfermées dans une paire de balises d'ouverture et de fermeture sont également déterminées par la DTD.

Les balises XML peuvent également avoir des attributs qui leur sont associés. Ceux-ci sont également limités par la DTD en termes de nom et dans certains cas en termes de valeurs que les attributs peuvent prendre.

XML est généralement lu par un analyseur XML. Tous les analyseurs XML vérifient que les données sont bien formées afin que la corruption de données (par exemple, une balise de fermeture manquante) ne puisse pas passer inaperçue. De nombreux analyseurs XML effectuent également une validation, ce qui signifie qu'ils vérifient que le document est conforme à la DTD associée.

En utilisant XML, il est relativement facile de générer et de valider des structures de données hiérarchiques complexes. De telles structures sont courantes dans les applications géographiques.

2.8.2 XSL et XSLT (Transformer le WWW)

L'objectif initial de XML était de fournir un moyen de décrire les données indépendamment de leur présentation, en particulier dans le contexte du World Wide Web. XML version 1.0 traite de la description des données. Une technologie d'accompagnement, appelée XSL, devait s'occuper du côté présentation. Au fil du temps, il est devenu évident que XSL est en fait deux technologies différentes. L'un, maintenant appelé XSLT (le T signifie Transformation), est axé sur la transformation de XML. L'autre technologie concerne le formatage réel du texte ou des images et est désignée en termes d'objets de format ou d'objets de flux. Dans nos discussions, nous ne nous intéressons qu'à XSLT. Étant donné que de nombreux outils (par exemple MS IE 5.0) ont été développés avant que l'étiquette XSLT ne soit collée, XSL est encore souvent utilisé lorsque seul XSLT est prévu. Nous suivrons cette pratique.

Si vous suivez xml.com, vous vous souviendrez peut-être de nombreuses discussions sur les mérites de XSL. La clarification de XSLT a contribué à atténuer quelque peu cette discussion, cependant, il y a encore beaucoup de scepticisme concernant l'utilité et la nécessité de XSL dans certains secteurs de la communauté XML. Nous sommes de l'autre côté de la question. Nous pensons que c'est le caractère transformationnel de XML qui est le plus important, et XSL (XSLT) fournit un moyen déclaratif propre pour exprimer ces transformations. À notre avis, XSLT est aussi essentiel pour GML que XML lui-même.

XSL est un langage assez simple. Il fournit une syntaxe puissante pour exprimer la correspondance et le remplacement de modèles. C'est déclaratif. Vous pouvez facilement lire ce que dit le XSLT. Vous ne voyez pas comment cela est accompli. En utilisant ses spécifications associées (XPath et XQL), vous pouvez spécifier des requêtes très puissantes sur un document XML. De plus, XSLT intègre la possibilité d'appeler des fonctions dans un autre langage de programmation tel que VBScript ou Java grâce à l'utilisation de fonctions d'extension. Cela signifie que XSL peut être utilisé pour effectuer l'interrogation et la sélection, puis appeler Java ou un autre langage pour effectuer le calcul ou la manipulation de chaîne nécessaire. Pour les tâches simples, XSLT fournit une gestion des chaînes et des capacités arithmétiques intégrées.

2.8.3 SVG, VML et X3D - Graphiques vectoriels pour le Web

XML a fait sentir sa présence dans de nombreux domaines différents, dont le moindre n'est pas celui des graphiques vectoriels. Plusieurs spécifications basées sur XML pour décrire les éléments graphiques vectoriels ont été développées, notamment Scalable Vector Graphics (SVG), le langage de balisage vectoriel (VML) de Microsoft et X3D, l'incarnation XML de la syntaxe et du comportement du VRML (Virtual Reality Markup Language). Ces spécifications sont à bien des égards similaires à GML, mais ont un objectif très différent. Chacun a un moyen de décrire la géométrie. Les spécifications graphiques, cependant, sont axées sur l'apparence et incluent donc des propriétés et des éléments pour les couleurs, les épaisseurs de ligne et la transparence pour ne citer que quelques aspects. Pour visualiser un fichier de données SVG, VML ou X3D, il est nécessaire de disposer d'un visualiseur de données graphique adapté. Dans le cas de VML, cela est intégré à IE 5.0 (et nulle part ailleurs). Dans le cas de SVG, Adobe développe une série de plug-ins pour Internet Explorer et Netscape Communicator ainsi qu'Adobe Illustrator, tandis qu'IBM et plusieurs autres sociétés développent ou ont déjà développé des visionneuses SVG ou des bibliothèques graphiques de support. Plusieurs visionneuses Java SVG sont disponibles ou en cours de développement.

Pour dessiner une carte à partir de données GML, vous devez transformer le GML en l'un des formats de données vectorielles graphiques tels que SVG, VML ou VRML. Cela signifie associer un "style" graphique (par exemple, un symbole, une couleur, une texture) à chaque type d'entité ou d'instance d'entité GML. Nous aurons plus à dire à ce sujet dans l'article de GeoJava, Making Maps from GML.

La figure 1. illustre le dessin de la carte à l'aide d'une feuille de style XSLT sur un client de cartographie approprié.

Avec la technologie HTML actuelle, il est possible de créer des ensembles de données géographiques liées. On peut facilement construire des images cliquables qui sont liées à d'autres images cliquables. Le mécanisme de liaison HTML a cependant de nombreuses limitations et, par conséquent, il n'est pas pratique de construire de grands ensembles de données distribués complexes comme cela se produit dans les systèmes du monde réel. La limitation la plus importante est qu'un lien HTML est effectivement codé en dur dans les documents source (<a href = . >) et cible (ancre), ce qui rendrait tout système important à la fois fragile et impossible à mettre à l'échelle. XLink contourne ces problèmes en autorisant les liens "hors ligne". Dans un lien hors ligne, la source pointe uniquement vers une base de données de liens et c'est la base de données de liens qui fournit le pointeur vers des éléments XML spécifiques dans le document cible. Le lien n'est donc pas codé en dur dans l'un ou l'autre document. Ceci est d'une grande importance par rapport au GML car il permet de construire des ensembles de données géographiques évolutives et distribuées. Plus important encore, XLink et XPointer permettent de créer des index spécifiques à une application pour une date. Besoin d'avoir un groupe de bâtiments organisé par adresse ? Vous souhaitez créer un index parcellaire agricole par type de culture ? Avec XLink et XPointer, ces schémas d'indexation et bien d'autres peuvent être facilement construits, et le tout sans altérer les données source elles-mêmes. Nous aurons beaucoup plus à dire à ce sujet dans les prochains articles.

Pourquoi introduire GML ? Il existe déjà une multitude de normes de codage pour l'information géographique, notamment COGIF, MDIFF, SAIF, DLG, SDTS pour n'en citer que quelques-unes. En quoi GML est-il si différent ? À certains égards, rien. GML est un codage textuel simple d'entités géographiques. Certains de ces autres formats ne sont pas basés sur du texte, cependant, certains d'entre eux (par exemple, SAIF) le sont. GML est basé sur un modèle géographique commun (OGC Abstract Specification) qui a été développé et accepté par la grande majorité de tous les fournisseurs de SIG dans le monde. Plus important encore, GML est basé sur XML. Pourquoi est-ce important ? Il y a plusieurs raisons pour lesquelles XML est important. Pour commencer, XML fournit une méthode pour vérifier l'intégrité des données. Deuxièmement, tout document XML peut être lu et modifié à l'aide d'un simple éditeur de texte. Rien de plus que MS Notepad n'est requis pour afficher ou modifier un document XML. Troisièmement, comme il existe un nombre croissant de langages XML, il sera de plus en plus facile d'intégrer des données GML avec des données non spatiales. Même dans le cas de données non spatiales non XML, c'est le cas. Peut-être, plus important encore, XML est facile à transformer. En utilisant XSLT ou presque n'importe quel autre langage de programmation (VB, VBScript, Java, C++, Javascript), nous pouvons facilement transformer XML d'une forme à une autre. Un mécanisme unique peut ainsi être utilisé pour une multitude de transformations de la visualisation des données aux transformations de coordonnées, aux requêtes spatiales et à la généralisation géospatiale.

GML repose en toute sécurité sur un standard public largement adopté, celui de XML. Cela garantit que les données GML peuvent être visualisées, modifiées et transformées par une grande variété d'outils commerciaux et gratuits. Pour la première fois, on peut vraiment parler d'information géographique ouverte.

3.1 Vérification automatisée de l'intégrité des données

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. Noter: 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 et 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> et <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.


Voir la vidéo: Style Web Map Vector Layers with OpenLayers (Octobre 2021).