Más

¿Cómo convertir una cadena a OpenLayers.Geometry.Polygon usando javascript?

¿Cómo convertir una cadena a OpenLayers.Geometry.Polygon usando javascript?


Estoy usando Javascript, jQuery, Java, GeoServer, OpenLayers y PostGIS.

Usando la clase javaConjunto resultanteDevuelvo esta cadena:

POLÍGONO ((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))

Bastante largo, ¿no? Entonces, usando la función ajax de JQuery, capturo esta cadena y ahora quiero convertirla en unaOpenLayers.Geometry.Polygon, esta es la línea donde uso la función ajax:

$ .ajax ({url: "Catcher", data: query, type: "POST", dataType: "text", success: function (data) {var fea = new OpenLayers.Feature.Vector (data); // this no funciona vectorLayer.addFeatures ([fea]); // aquí agrego la característica a la capa vectorial que creé como una variable global map.zoomToExtent (límites);}});

¿Cómo puedo realizar la conversión?


Utilice la clase OpenLayers.Format.WKT.

Intente reemplazar esta línea:

var fea = new OpenLayers.Feature.Vector (datos); // esto no funciona

Para esta línea (si data.d = "POLYGON ((516000…"):

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

Aquí hay un ejemplo de cómo usarlo: http://dev.openlayers.org/examples/vector-formats.html


OpenLayers. Proyección

Métodos de transformación de coordenadas entre sistemas de coordenadas. De forma predeterminada, OpenLayers se envía con la capacidad de transformar coordenadas entre sistemas de referencia de coordenadas geográficas (EPSG: 4326) y mercator esférico o web (EPSG: 900913 et al.). Consulte el método de transformación para obtener detalles sobre el uso.

Se pueden agregar transformaciones adicionales utilizando la biblioteca proj4js. Si se incluye la biblioteca proj4js, el método de transformación funcionará entre dos sistemas de referencia de coordenadas cualesquiera con definiciones de proj4js.

Si la biblioteca proj4js no está incluida, o si desea permitir transformaciones entre sistemas de referencia de coordenadas arbitrarias, use el método addTransform para registrar un método de transformación personalizado.

OpenLayers. ProyecciónMétodos de transformación de coordenadas entre sistemas de coordenadas.
Propiedades
proyecto Instancia de Proj4js.Proj.
projCode
titleRegEx expresión regular para quitar el título de una definición de proj4js
Constructor
OpenLayers. ProyecciónEsta clase ofrece varios métodos para interactuar con un objeto de proyección pro4js envuelto.
Funciones y propiedades
getCodeObtenga el código SRS de cadena.
getUnitsObtenga la cadena de unidades para la proyección: devuelve nulo si proj4js no está disponible.
EncadenarConvierta la proyección en cadena (contenedor getCode).
es igual aPruebe la igualdad de dos instancias de proyección.
destruirDestruye el objeto de proyección.
transforma Transforms es un objeto, con propiedades from, cada una de las cuales puede tener una propiedad to.
valores predeterminados Valores predeterminados para los códigos SRS conocidos por OpenLayers (actualmente EPSG: 4326, CRS: 84, urn: ogc: def: crs: EPSG: 6.6: 4326, EPSG: 900913, EPSG: 3857, EPSG: 102113 y EPSG: 102100).
addTransformEstablezca un método de transformación personalizado entre dos proyecciones.
transformarTransforma una coordenada de un punto de una proyección a otra.
nullTransform

Propiedades

ProjCode

TitleRegEx

expresión regular para quitar el título de una definición de proj4js

Constructor

OpenLayers. Proyección

Esta clase ofrece varios métodos para interactuar con un objeto de proyección pro4js envuelto.

Parámetros

projCode Una cadena que identifica el identificador conocido de la proyección.
opciones Un objeto opcional para establecer propiedades adicionales en la proyección.

Devoluciones

Funciones y propiedades

GetCode

Devoluciones

GetUnits

Obtenga la cadena de unidades para la proyección: devuelve nulo si proj4js no está disponible.

Devoluciones

Encadenar

Convierta la proyección en cadena (contenedor getCode).

Devoluciones

Es igual a

Pruebe la igualdad de dos instancias de proyección. Determina la igualdad basándose únicamente en el código de proyección.

Devoluciones

Las dos proyecciones son equivalentes.

Destruir

Destruye el objeto de proyección.

Transforma

Transforms es un objeto, con propiedades from, cada una de las cuales puede tener una propiedad to. Esto le permite definir proyecciones sin requerir soporte para la inclusión de proj4js.

Este objeto tiene claves que corresponden a un objeto de proyección & lsquosource & rsquo. Las claves deben ser cadenas, correspondientes al valor de projection.getCode (). Cada objeto de proyección de origen debe tener un conjunto de claves de proyección de destino incluidas en el objeto.

Cada valor en el objeto de destino debe ser una función de transformación, donde se espera que a la función se le pase un objeto con una propiedad .xy una propiedad .y. La función debe devolver el objeto, con .xy .y transformados de acuerdo con la función de transformación.

NotaLas propiedades de este objeto no deben establecerse directamente. Para agregar un método de transformación a este objeto, use el método addTransform. Para obtener un ejemplo de uso, consulte el archivo OpenLayers.Layer.SphericalMercator.

Valores predeterminados

Valores predeterminados para los códigos SRS conocidos por OpenLayers (actualmente EPSG: 4326, CRS: 84, urn: ogc: def: crs: EPSG: 6.6: 4326, EPSG: 900913, EPSG: 3857, EPSG: 102113 y EPSG: 102100). Las claves son el código SRS, los valores son unidades, maxExtent (la extensión de validez para el SRS) e yx (verdadero si se sabe que este SRS tiene un orden de eje inverso).

AddTransform

Establezca un método de transformación personalizado entre dos proyecciones. Utilice este método en los casos en los que la biblioteca proj4js no esté disponible o en los que sea necesario gestionar proyecciones personalizadas.

Parámetros

de El código para la proyección fuente
a el código para la proyección de destino
método Una función que toma un punto como argumento y transforma ese punto desde la proyección de origen a la de destino en su lugar. El punto original debe modificarse.

Transformar

Transforma una coordenada de un punto de una proyección a otra. Tenga en cuenta que el punto de entrada se transforma en su lugar.


Si quieres reportar un error, o si quieres hacer una sugerencia, no dudes en enviarnos un e-mail:

Su mensaje ha sido enviado a W3Schools.

Tutoriales principales

Referencias principales

Ejemplos principales

Cursos web

W3Schools está optimizado para el aprendizaje y la formación. Los ejemplos pueden simplificarse para mejorar la lectura y el aprendizaje. Los tutoriales, las referencias y los ejemplos se revisan constantemente para evitar errores, pero no podemos garantizar la total corrección de todo el contenido. Mientras usa W3Schools, acepta haber leído y aceptado nuestros términos de uso, cookies y política de privacidad.


Gestionar errores y reintentos

Si recibe respuestas UNKNOWN_ERROR, estas son causadas por errores transitorios y es mejor tratarlas volviendo a intentarlo después de un breve retraso. Recomendamos hacer uso de las bibliotecas cliente de servicios web de Google Maps Platform, que incluyen lógica de reintento y son compatibles con la autenticación del Plan Premium de Google Maps Platform. El cliente Java, el cliente Python, el cliente Go y el cliente Node.js para los servicios de Google Maps son bibliotecas cliente compatibles con la comunidad, disponibles para descargar y contribuciones en GitHub, donde también encontrará instrucciones de instalación y código de muestra.

Si obtiene un código de estado OVER_QUERY_LIMIT como respuesta, ha excedido los límites de uso de la API. Le recomendamos que pruebe estas estrategias de optimización de uso.

Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Creative Commons Attribution 4.0, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulte las Políticas del sitio para desarrolladores de Google. Java es una marca comercial registrada de Oracle y / o sus afiliadas.


OpenLayers. Proyección

Métodos de transformación de coordenadas entre sistemas de coordenadas. De forma predeterminada, OpenLayers se envía con la capacidad de transformar coordenadas entre sistemas de referencia de coordenadas geográficas (EPSG: 4326) y mercator esférico o web (EPSG: 900913 et al.). Consulte el método de transformación para obtener detalles sobre el uso.

Se pueden agregar transformaciones adicionales utilizando la biblioteca proj4js. Si se incluye la biblioteca proj4js, el método de transformación funcionará entre dos sistemas de referencia de coordenadas cualesquiera con definiciones de proj4js.

Si la biblioteca proj4js no está incluida, o si desea permitir transformaciones entre sistemas de referencia de coordenadas arbitrarias, use el método addTransform para registrar un método de transformación personalizado.

OpenLayers. ProyecciónMétodos de transformación de coordenadas entre sistemas de coordenadas.
Propiedades
proyecto Instancia de Proj4js.Proj.
projCode
titleRegEx expresión regular para quitar el título de una definición de proj4js
Constructor
OpenLayers. ProyecciónEsta clase ofrece varios métodos para interactuar con un objeto de proyección pro4js envuelto.
Funciones y propiedades
getCodeObtenga el código SRS de cadena.
getUnitsObtenga la cadena de unidades para la proyección: devuelve nulo si proj4js no está disponible.
EncadenarConvierta la proyección en cadena (contenedor getCode).
es igual aPruebe la igualdad de dos instancias de proyección.
destruirDestruye el objeto de proyección.
transforma Transforms es un objeto, con propiedades from, cada una de las cuales puede tener una propiedad to.
valores predeterminados Valores predeterminados para los códigos SRS conocidos por OpenLayers (actualmente EPSG: 4326, CRS: 84, urn: ogc: def: crs: EPSG: 6.6: 4326, EPSG: 900913, EPSG: 3857, EPSG: 102113, EPSG: 102100 y OSGEO: 41001).
addTransformEstablezca un método de transformación personalizado entre dos proyecciones.
transformarTransforma una coordenada de un punto de una proyección a otra.
nullTransform

Propiedades

ProjCode

TitleRegEx

expresión regular para quitar el título de una definición de proj4js

Constructor

OpenLayers. Proyección

Esta clase ofrece varios métodos para interactuar con un objeto de proyección pro4js envuelto.

Parámetros

projCode Una cadena que identifica el identificador conocido de la proyección.
opciones Un objeto opcional para establecer propiedades adicionales en la proyección.

Devoluciones

Funciones y propiedades

GetCode

Devoluciones

GetUnits

Obtenga la cadena de unidades para la proyección: devuelve nulo si proj4js no está disponible.

Devoluciones

Encadenar

Convierta la proyección en cadena (contenedor getCode).

Devoluciones

Es igual a

Pruebe la igualdad de dos instancias de proyección. Determina la igualdad basándose únicamente en el código de proyección.

Devoluciones

Las dos proyecciones son equivalentes.

Destruir

Destruye el objeto de proyección.

Transforma

Transforms es un objeto, con propiedades from, cada una de las cuales puede tener una propiedad to. Esto le permite definir proyecciones sin requerir soporte para la inclusión de proj4js.

Este objeto tiene claves que corresponden a un objeto de proyección & lsquosource & rsquo. Las claves deben ser cadenas, correspondientes al valor de projection.getCode (). Cada objeto de proyección de origen debe tener un conjunto de claves de proyección de destino incluidas en el objeto.

Cada valor en el objeto de destino debe ser una función de transformación, donde se espera que a la función se le pase un objeto con una propiedad .xy una propiedad .y. La función debe devolver el objeto, con .xy .y transformados de acuerdo con la función de transformación.

NotaLas propiedades de este objeto no deben establecerse directamente. Para agregar un método de transformación a este objeto, use el método addTransform. Para obtener un ejemplo de uso, consulte el archivo OpenLayers.Layer.SphericalMercator.

Valores predeterminados

Valores predeterminados para los códigos SRS conocidos por OpenLayers (actualmente EPSG: 4326, CRS: 84, urn: ogc: def: crs: EPSG: 6.6: 4326, EPSG: 900913, EPSG: 3857, EPSG: 102113, EPSG: 102100 y OSGEO: 41001). Las claves son el código SRS, los valores son unidades, maxExtent (la extensión de validez para el SRS en coordenadas proyectadas), worldExtent (la extensión world & rsquos en EPSG: 4326) e yx (verdadero si se sabe que este SRS tiene un orden de eje inverso).

AddTransform

Establezca un método de transformación personalizado entre dos proyecciones. Utilice este método en los casos en los que la biblioteca proj4js no esté disponible o cuando sea necesario gestionar proyecciones personalizadas.

Parámetros

de El código para la proyección fuente
a el código para la proyección de destino
método Una función que toma un punto como argumento y transforma ese punto desde la proyección de origen a la de destino en su lugar. El punto original debe modificarse.

Transformar

Transforma una coordenada de un punto de una proyección a otra. Tenga en cuenta que el punto de entrada se transforma en su lugar.


¿Cómo convertir una cadena a OpenLayers.Geometry.Polygon usando javascript? - Sistemas de Información Geográfica

Lenguaje de marcado de geografía

Ron Lake
Galdos Systems Inc

Este documento proporciona una breve introducción al lenguaje de marcado geográfico (GML). El artículo es el primero de una serie de artículos para familiarizarlo con esta emocionante manera de representar y manipular la información geográfica. Los siguientes artículos de este sitio le presentarán una variedad de temas de GML, incluida la creación de mapas GML, transformaciones de datos GML, consultas espaciales y análisis geográfico, bases de datos espaciales basadas en GML y una variedad de aplicaciones GML, incluidas aplicaciones para sistemas informáticos móviles. Esperamos que GML revolucione el tratamiento de la información espacial. GML es compatible con la web. Por primera vez, la información espacial tendrá un estándar de codificación verdaderamente público.

GML o Geography Markup Language es un estándar de codificación basado en XML para información geográfica desarrollado por OpenGIS Consortium (OGC). Su estado actual es un RFC bajo revisión dentro del Consorcio OpenGIS. El RFC cuenta con el respaldo de una variedad de proveedores, incluidos Oracle Corporation, Galdos Systems Inc, MapInfo, CubeWerx y Compusult Ltd. GML se implementó y probó a través de una serie de demostraciones que formaron parte del Banco de pruebas de mapeo web (WMT) del Consorcio OpenGIS realizado en Septiembre de 1999. Estas pruebas involucraron a clientes de mapeo GML que interactuaban con proveedores de servicios y servidores de datos GML.

2.2 Geografía, gráficos y mapas

Antes de analizar el GML en sí, es importante que establezcamos algunas distinciones claras entre los datos geográficos (que están codificados en GML) y las interpretaciones gráficas de esos datos que podrían aparecer en un mapa u otra forma de visualización. Los datos geográficos se refieren a una representación del mundo en términos espaciales que es independiente de cualquier visualización particular de esos datos. Cuando hablamos de datos geográficos, intentamos capturar información sobre las propiedades y la geometría de los objetos que pueblan el mundo que nos rodea. Cómo los simbolizamos en un mapa, qué colores o grosores de línea usamos es algo bastante diferente. Así como XML está ayudando a la Web a separar claramente el contenido de la presentación, GML hará lo mismo en el mundo de la geografía.

GML se ocupa de la representación del contenido de datos geográficos. Por supuesto, también podemos usar GML para hacer mapas. Esto podría lograrse mediante el desarrollo de una herramienta de reproducción para interpretar los datos GML, sin embargo, esto iría en contra del enfoque GML para la estandarización y la separación de contenido y presentación. Para hacer un mapa a partir de GML, solo necesitamos diseñar los elementos de GML en una forma que se pueda interpretar para visualización gráfica en un navegador web. Los posibles formatos de visualización gráfica incluyen W3C Scalable Vector Graphics (SVG), Microsoft Vector Markup Language (VML) y X3D. Por tanto, se utiliza un modelador de mapas para localizar elementos GML e interpretarlos utilizando estilos gráficos particulares. El próximo artículo de esta serie se ocupará de generar un mapa a partir de GML utilizando SVG y X3D.

Como cualquier codificación XML, GML representa información geográfica en forma de texto. Si bien hace poco tiempo esto podría haberse considerado prohibido en el mundo de los sistemas de información espacial, la idea ahora está ganando mucho impulso. El texto tiene cierta simplicidad y visibilidad de lado. Es fácil de inspeccionar y fácil de cambiar. Agregue XML y también se puede controlar.

Los formatos de texto para geometría y geografía se han empleado antes. El trabajo pionero de la provincia de Columbia Británica con su formato SAIF es solo un ejemplo. En la provincia de Columbia Británica, más de 7000 archivos de datos a escala 1: 20.000 que incluyen topografía, planimetría (hidrografía, edificios, carreteras, etc.) y toponimia están disponibles en formato SAIF. La Provincia ha demostrado que los formatos de texto son prácticos y fáciles de usar. Otro ejemplo del uso de texto para conjuntos de datos geométricos complejos es el de VRML (Vector Markup Language). Se han creado y navegado modelos VRML grandes y complejos a través de la Web, todos utilizando codificación basada en texto. Curiosamente, la geometría y el comportamiento de VRML ahora se están reformulando en XML gracias a los esfuerzos del Grupo de Trabajo X3D.

2.4 Geometría y propiedades de la función de codificación GML

GML se basa en el modelo abstracto de geografía desarrollado por el OGC. Esto describe el mundo en términos de entidades geográficas llamadas características. Básicamente, una característica no es más que una lista de propiedades y geometrías. Las propiedades tienen el nombre, el tipo y la descripción del valor habituales. Las geometrías se componen de bloques de construcción de geometría básica como puntos, líneas, curvas, superficies y polígonos. Para simplificar, la especificación GML inicial está restringida a la geometría 2D, sin embargo, aparecerán en breve extensiones que manejarán geometría 2 1/2 y 3D, así como relaciones topológicas entre entidades.

La codificación GML ya permite funciones bastante complejas. Por ejemplo, una característica puede estar compuesta por otras características. Por tanto, una única característica como un aeropuerto podría estar compuesta por otras características como vías de rodaje, pistas, colgadores y terminales aéreas. La geometría de una entidad geográfica también puede estar compuesta por muchos elementos geométricos. Por tanto, una entidad geométricamente compleja puede consistir en una combinación de tipos de geometría, incluidos puntos, cadenas de líneas y polígonos.

Para codificar la geometría de una característica como un edificio, simplemente escribimos:

Un componente esencial de un sistema geográfico es un medio de referenciar las características geográficas a la superficie de la tierra o a alguna estructura relacionada con la superficie de la tierra. La versión actual de GML incorpora un sistema de referencia espacial basado en la tierra que es extensible y que incorpora la proyección principal y los marcos de referencia geocéntricos que se utilizan en la actualidad. Este es capaz de codificar todos los sistemas de referencia que se pueden encontrar en el sitio web del European Petroleum Standards Group (EPSG). Además, el esquema de codificación permite unidades definidas por el usuario y parámetros del sistema de referencia. Es probable que las versiones futuras de GML proporcionen codificaciones aún más flexibles para manejar sistemas de coordenadas locales, como los utilizados para el registro de millas, etc.

  • Validación del cliente de un sistema de referencia espacial especificado por el servidor. El cliente puede solicitar la descripción del SRS (un documento XML) y compararla con sus propias especificaciones o mostrársela a un usuario para su verificación.
  • Visualización del cliente de un sistema de referencia espacial especificado por el servidor.
  • Utilizado por un servicio de transformación de coordenadas para validar un sistema de referencia espacial de fuentes de datos de entrada.
  • Un servicio de transformación de coordenadas puede comparar la descripción del SRS con sus propias especificaciones para ver si el SRS es coherente con la transformación seleccionada.
  • Controlar la transformación de coordenadas automatizada proporcionando valores de argumentos y nombres de sistemas de referencia de entrada y salida.

Con la codificación GML para referencias espaciales, es posible crear un sitio web que almacene cualquier número de definiciones de sistemas de referencia espacial. Esté atento al sitio de GeoJava para obtener codificaciones estándar de sistemas de referencia espacial comunes.

2.6 Colecciones de funciones GML

La Recomendación XML 1.0 del W3C se basa en la noción de documento. La versión actual de GML se basa en XML 1.0 y utiliza FeatureCollection como base de su documento. Un FeatureCollection es una colección de Características GML junto con un Sobre (que limita el conjunto de Características), una colección de Propiedades que se aplican a FeatureCollection y una lista opcional de Definiciones del Sistema de Referencia Espacial. Una FeatureCollection también puede contener otras FeatureCollections, siempre que el Sobre de la FeatureCollection delimitante delimite los Envelopes de todas las FeatureCollections contenidas.

Cuando se realiza una solicitud de datos GML desde un servidor GML, los datos siempre se devuelven en FeatureCollections. No hay límite en el RFC de GML sobre el número de características que pueden incluirse en una FeatureCollection. Debido a que FeatureCollections puede contener otras FeatureCollections, es un procedimiento relativamente simple "unir" FeatureCollections recibidas de un servidor en colecciones aún más grandes.

2.7 GML: más que un transporte de datos

Si bien GML es un medio eficaz para transportar información geográfica de un lugar a otro, esperamos que también se convierta en un medio importante para almacenar información geográfica. El elemento clave aquí es XLink y XPointer. Si bien estas dos especificaciones están rezagadas en el área de desarrollo e implementación, son muy prometedoras para la creación de conjuntos de datos geográficos complejos y distribuidos. Los datos geográficos son, bueno, geográficos. Se distribuye naturalmente sobre la faz de la tierra. El interés en los datos sobre Flin Flon, Saskatchewan es mucho mayor cerca de Flin Flon que en Pasadena, California. Al mismo tiempo, hay aplicaciones que necesitan llegar y obtener datos a nivel mundial para análisis a gran escala o debido al interés en un dominio vertical estrecho. Las aplicaciones del último tipo también abundan en una colección diversa de campos, desde la protección ambiental hasta la minería, la construcción de carreteras y la gestión de desastres. ¿Qué tan bueno sería si los datos pudieran desarrollarse a escala local e integrarse fácilmente a la escala regional y global?

En la mayoría de las jurisdicciones, los datos geográficos son recopilados por agencias particulares para un propósito particular. Las oficinas forestales recopilan información sobre la disposición de los árboles (diámetros de los árboles, condiciones del sitio, tasas de crecimiento) para el manejo eficaz de los bosques comerciales. Los departamentos de medio ambiente recopilan información sobre la distribución de los animales y el hábitat de los animales. Los intereses de desarrollo mantienen información sobre la demografía y las características existentes en el entorno construido. Sin embargo, los problemas del mundo real rara vez respetan los límites parroquiales de los departamentos, ministerios y oficinas. ¿Qué tan bueno sería si los datos desarrollados para un propósito pudieran integrarse fácilmente con los datos desarrollados para otro?

Creemos que GML como formato de almacenamiento, combinado con XLink y XPointer proporcionará algunas contribuciones útiles a estos problemas. Mire el sitio de GeoJava para ver nuestro artículo sobre bases de datos espaciales GML.

2.8 ¿De qué tecnologías depende?

GML se basa en XML. XML, aunque a veces se habla de un reemplazo de HTML, se considera mejor como un lenguaje para la descripción de datos. Más correctamente, XML es un lenguaje para expresar lenguajes de descripción de datos. Sin embargo, XML no es un lenguaje de programación. No hay mecanismos en XML para expresar el comportamiento o realizar cálculos. Eso queda para otros lenguajes como Java y C ++.

XML 1.0 proporciona un medio para describir (marcar) datos utilizando etiquetas definidas por el usuario. Cada segmento de un documento XML está delimitado por etiquetas de inicio y finalización. Esto se ve como sigue:

& ltFeature>
. más descripciones XML.
.
& lt / Característica>

Los nombres de etiqueta válidos están determinados por la definición del tipo de documento. El DTD también determina qué etiquetas pueden aparecer encerradas dentro de un par de etiquetas de apertura y cierre.

Las etiquetas XML también pueden tener atributos asociados. Estos también están restringidos por el DTD en el nombre y, en algunos casos, en términos de los valores que pueden asumir los atributos.

Normalmente, un analizador XML lee XML. Todos los analizadores XML comprueban que los datos estén bien formados para que la corrupción de los datos (p. Ej., Falta la etiqueta de cierre) no pase sin ser detectada. Muchos analizadores XML también están validando, lo que significa que verifican que el documento se ajuste a la DTD asociada.

El uso de XML es comparativamente fácil de generar y validar estructuras de datos jerárquicas complejas. Tales estructuras son comunes en aplicaciones geográficas.

2.8.2 XSL y XSLT (Transformando la WWW)

El enfoque original de XML era proporcionar un medio para describir datos separados de su presentación, especialmente en el contexto de la World Wide Web. La versión 1.0 de XML se ocupa de la descripción de datos. Una tecnología complementaria, llamada XSL, se encargaría del aspecto de la presentación. Con el tiempo, se ha hecho evidente que XSL son en realidad dos tecnologías diferentes. Uno, ahora llamado XSLT (la T significa Transformación), se centra en la transformación de XML. La otra tecnología se ocupa del formateo real de texto o imágenes y se denomina en términos de objetos de formato u objetos de flujo. En nuestras discusiones solo nos preocupamos por XSLT. Dado que muchas herramientas (por ejemplo, MS IE 5.0) se desarrollaron antes de que se pegara la etiqueta XSLT, XSL todavía se usa a menudo cuando solo se pretende XSLT. Seguiremos esa práctica.

Si sigue xml.com, es posible que recuerde una gran cantidad de discusiones sobre los méritos de XSL. La aclaración de XSLT ha ayudado a amortiguar un poco esta discusión, sin embargo, todavía hay mucho escepticismo con respecto a la utilidad y la necesidad de XSL en algunos sectores de la comunidad XML. Estamos en el lado opuesto del problema. Creemos que lo más importante es el carácter transformacional de XML, y XSL (XSLT) proporciona un medio declarativo limpio para expresar estas transformaciones. En nuestra opinión, XSLT es tan esencial para GML como el propio XML.

XSL es un lenguaje bastante simple. Proporciona una potente sintaxis para expresar la coincidencia y el reemplazo de patrones. Es declarativo. Puede leer fácilmente lo que dice XSLT. No puedes ver cómo se logra. Usando sus especificaciones complementarias (XPath y XQL) puede especificar algunas consultas muy poderosas en un documento XML. Además, XSLT incorpora la capacidad de llamar a funciones en otro lenguaje de programación como VBScript o Java mediante el uso de funciones de extensión. Esto significa que XSL se puede utilizar para realizar la consulta y la selección, y luego llamar a Java u otro lenguaje para realizar los cálculos necesarios o la manipulación de cadenas. Para tareas simples, XSLT proporciona capacidades aritméticas y de manejo de cadenas integradas.

2.8.3 SVG, VML y X3D: gráficos vectoriales para la Web

XML ha hecho sentir su presencia en muchos sectores diferentes, entre los que se encuentran los gráficos vectoriales. Se han desarrollado varias especificaciones basadas en XML para describir elementos gráficos vectoriales, incluidos Scalable Vector Graphics (SVG), Vector Markup Language (VML) de Microsoft y X3D, la encarnación XML de la sintaxis y el comportamiento de VRML (Virtual Reality Markup Language). Estas especificaciones son similares en muchos aspectos a GML, pero tienen un objetivo muy diferente. Cada uno tiene un medio para describir la geometría. Sin embargo, las especificaciones gráficas se centran en la apariencia y, por lo tanto, incluyen propiedades y elementos de colores, grosores de línea y transparencia, por nombrar solo algunos aspectos. Para ver un archivo de datos SVG, VML o X3D, es necesario tener un visor gráfico de datos adecuado. En el caso de VML, esto está integrado en IE 5.0 (y en ningún otro lugar). En el caso de SVG, Adobe está desarrollando una serie de complementos para Internet Explorer y Netscape Communicator, así como Adobe Illustrator, mientras que IBM y varias otras empresas son, o ya han desarrollado, visores SVG o bibliotecas de gráficos compatibles. Varios visores SVG de Java están disponibles o en desarrollo.

Para dibujar un mapa a partir de datos GML, debe transformar el GML en uno de los formatos de datos vectoriales gráficos, como SVG, VML o VRML. Esto significa asociar un "estilo" gráfico (por ejemplo, símbolo, color, textura) con cada tipo de característica GML o instancia de característica. Tendremos más que decir sobre esto en el artículo de GeoJava, Making Maps from GML.

La Figura 1. ilustra el dibujo del mapa usando una hoja de estilo XSLT en un cliente de mapeo adecuado.

Con la tecnología HTML actual es posible crear conjuntos de datos geográficos vinculados. Se pueden construir fácilmente mapas de imágenes que están vinculados a otros mapas de imágenes. Sin embargo, el mecanismo de enlace HTML tiene muchas limitaciones y, como resultado, no es práctico construir grandes conjuntos de datos distribuidos complejos como ocurre en los sistemas del mundo real. La limitación más significativa es que un enlace HTML está efectivamente codificado en los documentos fuente (& lta href =.>) Y destino (ancla), un hecho que haría que cualquier sistema significativo fuera frágil e imposible de escalar. XLink soluciona estos problemas permitiendo enlaces "fuera de línea". En un enlace fuera de línea, la fuente apunta solo a una base de datos de enlaces y es la base de datos de enlaces la que proporciona el puntero a elementos XML específicos en el documento de destino. Por lo tanto, el enlace no está codificado de forma rígida en ninguno de los documentos. Esto es de gran importancia en relación con GML, ya que permite crear conjuntos de datos geográficos distribuidos y escalables. Aún más importante, XLink y XPointer permiten crear índices específicos de aplicaciones para fechas. ¿Necesita tener un grupo de edificios organizados por dirección postal? ¿Quiere crear un índice de parcelas agrícolas basado en el tipo de cultivo? Con XLink y XPointer, estos y muchos otros esquemas de indexación se pueden construir fácilmente, y todo sin alterar los datos de origen en sí. Tendremos mucho más que decir sobre esto en los próximos artículos.

¿Por qué introducir GML en absoluto? Ya existe una gran cantidad de estándares de codificación para información geográfica, incluidos COGIF, MDIFF, SAIF, DLG, SDTS, por nombrar solo algunos. ¿Qué tiene de diferente GML? De alguna manera nada. GML es una codificación simple basada en texto de características geográficas. Algunos de estos otros formatos no están basados ​​en texto, sin embargo, algunos de ellos (por ejemplo, SAIF) con certeza sí lo están. GML se basa en un modelo común de geografía (OGC Abstract Specification) que ha sido desarrollado y aceptado por la gran mayoría de los proveedores de SIG del mundo. Sin embargo, lo que es más importante, GML se basa en XML. ¿Por qué debería importar esto? Hay varias razones por las que XML es importante. Para empezar, XML proporciona un método para verificar la integridad de los datos. En segundo lugar, cualquier documento XML se puede leer y editar con un sencillo editor de texto. No se requiere nada más que el Bloc de notas de MS para ver o cambiar un documento XML. En tercer lugar, dado que hay un número cada vez mayor de lenguajes XML, será cada vez más fácil integrar datos GML con datos no espaciales. Incluso en el caso de datos no espaciales no XML, este es el caso. Quizás, lo más importante, XML es fácil de transformar. Usando XSLT o casi cualquier otro lenguaje de programación (VB, VBScript, Java, C ++, Javascript) podemos transformar XML de una forma a otra. Por lo tanto, se puede emplear un único mecanismo para una gran cantidad de transformaciones, desde la visualización de datos hasta las transformaciones coordinadas, las consultas espaciales y la generalización geoespacial.

GML se basa de forma segura en un estándar público ampliamente adoptado, el de XML. Esto asegura que los datos GML se puedan ver, editar y transformar mediante una amplia variedad de herramientas comerciales y gratuitas. Por primera vez podemos hablar de verdad sobre información geográfica abierta.

3.1 Verificación automatizada de la integridad de los datos

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. Nota: 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 tipo 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 tipo 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 y 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> y <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.


Ver el vídeo: How to create an Interactive map layers