Я хотів би написати GML за допомогою Geotools. На жаль, я не можу знайти документацію на GML Writer (крім цієї з 2006 року: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore ).
Не могли б ви вказати мені документацію / приклади?
Я хотів би написати GML за допомогою Geotools. На жаль, я не можу знайти документацію на GML Writer (крім цієї з 2006 року: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore ).
Не могли б ви вказати мені документацію / приклади?
Відповіді:
Я намагаюся перенести документацію на geotools на іншу технологію (крім вікі), щоб приклади коду не застаріли.
Оновлення це зараз зроблено (я зібрав речі, щоб усі приклади геометрії були разом):
Ось повний приклад з цієї сторінки:
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();
Додатковими прикладами використання 4 різних технологій розбору GML є тестові випадки, що входять до вихідного коду.
Дві технології GTXML - це, як правило, комбінація найкращої частини аналізатора SAX з можливістю визначити, який фрагмент коду (званий прив'язкою) використовувати для розбору кожного елемента, як він входить (на основі пошуку елемента в схема).
Ви також можете подивитися на http://svn.osgeo.org/geotools/trunk/modules/library/xml/src/test/java/org/geotools/GMLTest.java, щоб побачити, як це роблять тести. Ключовим розділом, здається, є:
GML encode2 = new GML(Version.GML2);
encode2.setBaseURL(baseURL);
encode2.setNamespace("location", "location.xsd");
encode2.encode(out2, collection);
out.close();
Де колекція є особливістюКолекція.
Спробуйте:
//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"));
Документація: