Me gustaría escribir GML usando Geotools. Desafortunadamente, no puedo encontrar documentación en un escritor GML (excepto este de 2006: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore ).
¿Podría indicarme documentación / ejemplos?
Me gustaría escribir GML usando Geotools. Desafortunadamente, no puedo encontrar documentación en un escritor GML (excepto este de 2006: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore ).
¿Podría indicarme documentación / ejemplos?
Respuestas:
Intentaré migrar la documentación de geotools a una tecnología diferente (que no sea wiki) para que los ejemplos de código no se desactualicen.
Actualice esto ya está hecho (reuní cosas para que todos los ejemplos de geometría estén juntos):
Aquí hay un ejemplo completo de esa página:
SimpleFeatureType TYPE = DataUtilities.createType("location", "geom:Point,name:String");
File locationFile = new File("location.xsd");
locationFile = locationFile.getCanonicalFile();
locationFile.createNewFile();
URL locationURL = locationFile.toURI().toURL();
URL baseURL = locationFile.getParentFile().toURI().toURL();
FileOutputStream xsd = new FileOutputStream(locationFile);
GML encode = new GML(Version.GML2);
encode.setBaseURL(baseURL);
encode.setNamespace("location", locationURL.toExternalForm());
encode.encode(xsd, TYPE);
xsd.close();
SimpleFeatureCollection collection = FeatureCollections.newCollection("internal");
WKTReader2 wkt = new WKTReader2();
collection.add(SimpleFeatureBuilder.build(TYPE, new Object[] { wkt.read("POINT (1 2)"),"name1" }, null));
collection.add(SimpleFeatureBuilder.build(TYPE, new Object[] { wkt.read("POINT (4 4)"),"name2" }, null));
ByteArrayOutputStream xml = new ByteArrayOutputStream();
GML encode2 = new GML(Version.GML2);
encode2.setBaseURL(baseURL);
encode2.setNamespace("location", "location.xsd");
encode2.encode(out2, collection);
xml.close();
String gml = xml.toString();
Ejemplos adicionales de cómo usar las 4 tecnologías de análisis GML diferentes son los casos de prueba incluidos con el código fuente.
Las dos tecnologías GTXML son básicamente una combinación de la mejor parte del analizador SAX con la capacidad de descubrir qué fragmento de código (llamado enlace) usar para analizar cada elemento a medida que entra (basado en buscar el elemento en el esquema).
También puede consultar http://svn.osgeo.org/geotools/trunk/modules/library/xml/src/test/java/org/geotools/GMLTest.java para ver cómo lo hacen las pruebas. La sección clave parece ser:
GML encode2 = new GML(Version.GML2);
encode2.setBaseURL(baseURL);
encode2.setNamespace("location", "location.xsd");
encode2.encode(out2, collection);
out.close();
Donde la colección es una característica Colección.
Tratar:
//create the encoder with the gml 2.0 configuration
org.geotools.xml.Configuration configuration = new org.geotools.gml2.GMLConfiguration();
org.geotools.xml.Encoder encoder = new org.geotools.xml.Encoder( configuration );
//output stream to serialize to
OutputStream xml = ...
//encode
encoder.encode( featureCollection, new QName( "http://www.geotools.org/test", "featureType1"));
Documentación: