7 votos

¿Cómo analizar datos KML con geotools?

Geotools contiene algunos paquetes relacionados con KML: org.geotools.kml y org.geotools.kml.bindings . Supongo que se diseñó para analizar datos KML.

¿Sabes cómo utilizarlo?

4voto

Jody Garnett Puntos 202

La compatibilidad con KML está vinculada a las funciones XML de codificación y análisis sintáctico de la geometría.

La guía del usuario de GeoTools ha sustituido a los enlaces wiki proporcionados por Ian más arriba - con una página clara y agradable dedicada a la manipulación de la geometría y XML:

http://docs.geotools.org/latest/userguide/library/xml/geometry.html

Uno de los epígrafes de esa página está dedicado a KML .

La política del sitio nos pide que incluyamos la respuesta en lugar de limitarnos a proporcionar enlaces. Teniendo esto en cuenta:

Encoder encoder = new Encoder(new KMLConfiguration());
encoder.setIndenting(true);

encoder.encode(featureCollection, KML.kml, outputstream );

O para analizar KML es necesario tener en cuenta la geometría y el estilo, ya que KML incluye ambos. He aquí un ejemplo que recupera una colección de características.

Parser parser = new Parser(new KMLConfiguration());
SimpleFeature f = (SimpleFeature) parser.parse( inputStream );
Collection placemarks = (Collection) f.getAttribute("Feature");

También puedes pedirle un flujo de resultados (en caso de que el archivo sea más grande que la memoria):

StreamingParser parser = new StreamingParser( inputStream, KML.Placemark);
SimpleFeature f = null;

while ((f = (SimpleFeature) parser.parse()) != null) {
    FeatureTypeStyle style = (FeatureTypeStyle) f.getAttribute("Style");

    Symbolizer[] syms = style.getRules()[0].getSymbolizers();
    assertEquals(3, syms.length);

    count++;
}

Mucha suerte (y en caso de duda, revise los casos de prueba).

0 votos

Muchas gracias por el seguimiento. No obstante, he desarrollado mi propio analizador KML, utilizando JAXB ( opencarto.svn.sourceforge.net/viewvc/opencarto/trunk/ )

0 votos

¿Puede decirme qué dependencia de maven contiene el archivo org.geotools.kml.KMLConfiguration ¿Clase?

1 votos

El artefacto maven es org.geotools.xsd gt-xsd-kml

3voto

Adam Ernst Puntos 6939

Hay un ejemplo de KMLE en http://svn.osgeo.org/geotools/trunk/demo/example/src/main/java/org/geotools/demo/xml/KMLExample.java que muestra los enlaces KML en uso para la escritura. De otras discusiones en la lista de usuarios parece que los enlaces KML funcionan de forma similar a los enlaces GML, así que echa un vistazo a http://docs.codehaus.org/display/GEOTDOC/GML+XML+Soporte para obtener más pistas.

Cuando tengas una solución, no dudes en publicarla en el wiki de GeoTools.

0 votos

Muchas gracias por tu útil respuesta, pero no he conseguido utilizar los enlaces KML de geotools. He utilizado en su lugar xstream y el enfoque presentado aquí: cse-mjmcl.cse.bris.ac.uk/blog/2007/02/28/1172675719703.html . Es pesado, pero funciona.

0 votos

Para su información: los enlaces no funcionan, pero siguen siendo útiles.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X