Làm cách nào để viết GML bằng Geotools?


Câu trả lời:


9

Tôi sẽ cố gắng di chuyển tài liệu geotools sang một công nghệ khác (trừ wiki) để các ví dụ mã không bị lỗi thời.

Cập nhật điều này đã được thực hiện (Tôi đã thu thập mọi thứ để tất cả các ví dụ hình học được kết hợp với nhau):

Đây là một ví dụ đầy đủ từ trang đó:

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();

Các ví dụ bổ sung về cách sử dụng 4 công nghệ phân tích cú pháp GML khác nhau là các trường hợp thử nghiệm được bao gồm trong mã nguồn.

  1. KÈN
  2. DOM
  3. Phiên bản GTXML 1.x (được sử dụng cho GML2 trong WFSDataStore VERSION = 1.0)
  4. GTXML phiên bản 4.x (được sử dụng cho mọi thứ khác bây giờ)

Hai công nghệ GTXML về cơ bản là sự kết hợp của phần tốt nhất của trình phân tích cú pháp SAX với khả năng tìm ra đoạn mã nào (được gọi là liên kết) để sử dụng để phân tích từng phần tử khi nó xuất hiện (dựa trên việc tìm kiếm phần tử trong lược đồ).


Tôi nhận được ngoại lệ sau khi thử mã hóa SimpleFeatureCollection bằng mã ở trên. "java.lang.IllegalStateException: Không thể mã hóa bộ sưu tập tính năng bằng GML2 (chỉ WFS)". Tôi đang sử dụng 8.3, có ý kiến ​​gì không?
Thomas


3

Thử:

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

Tài liệu:


Liên kết đúng, sai mẫu mã? ;) ... Đoán bạn có nghĩa là org.geotools.xml.Encoder và không phải là trình phân tích cú pháp
underdark

vâng như trên. ngày internet không ổn định ...
Mapperz

Tôi đã thực hiện [một bản sao / dán] ngày lỗi;)
Mapperz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.