如何使用Geotools编写GML?


Answers:


9

我将尝试将geotools文档迁移到其他技术(而不是Wiki),以使代码示例不会过时。

现在完成更新(我收集了所有东西,以便所有几何示例都在一起):

这是该页面上的完整示例:

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解析技术的其他示例。

  1. 萨克斯
  2. DOM
  3. GTXML版本1.x(用于WFSDataStore VERSION = 1.0中的GML2)
  4. GTXML版本4.x(现在用于其他所有功能)

两种GTXML技术基本上是SAX解析器的最佳组成部分的结合,能够确定使用哪个代码片段(称为绑定)来解析每个元素(基于在元素中查找元素)模式)。


尝试使用上述代码对SimpleFeatureCollection进行编码时,出现以下异常。“ java.lang.IllegalStateException:无法使用GML2编码功能集(仅WFS)”。我正在使用8.3,知道吗?
托马斯


3

尝试:

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

说明文件:


正确的链接,错误的代码示例?;)...猜猜你的意思是org.geotools.xml.Encoder而不是解析器
Underdark

是的,如上所述。
脆弱的

我做了[复制/粘贴]错误的日子;)
Mapperz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.