Geotools ile GML nasıl yazılır?


Yanıtlar:


9

Kod örnekleri güncel değil böylece geotools belgeleri (wiki dışında) farklı bir teknolojiye geçirmeye çalışacağız.

Güncelleme bu şimdi yapıldı (bir şeyler topladım, böylece tüm geometri örnekleri bir araya geldi):

İşte o sayfadan tam bir örnek:

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 farklı GML ayrıştırma teknolojisinin nasıl kullanılacağına dair ek örnekler, kaynak koduyla birlikte verilen test durumlarıdır.

  1. SAX
  2. DOM
  3. GTXML sürüm 1.x (WFSDataStore VERSION = 1.0'da GML2 için kullanılır)
  4. GTXML sürüm 4.x (şimdi her şey için kullanılıyor)

İki GTXML teknolojisi temel olarak SAX ayrıştırıcısının en iyi bölümünün, her bir öğeyi geldiği gibi ayrıştırmak için hangi öğenin (bağlama olarak adlandırılır) kullanacağını (öğeyi şema).


Yukarıdaki kodu kullanarak bir SimpleFeatureCollection kodlamaya çalışırken aşağıdaki özel durumu alıyorum. "java.lang.IllegalStateException: GML2 (yalnızca WFS) kullanılarak bir özellik koleksiyonu kodlanamıyor". 8.3 kullanıyorum, bir fikrin var mı?
Thomas


3

Deneyin:

//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"));

Belgeler:


Doğru bağlantı, yanlış kod örneği? ;) ... Sanırım org.geotools.xml.Kodlayıcı ve ayrıştırıcı değil
underdark

evet yukarıdaki gibi. lapa lapa internet günü ...
Mapperz

[Kopyala / yapıştır] hata günü yaptım;)
Mapperz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.