Geotools를 사용하여 GML을 작성하고 싶습니다. 불행히도, 나는 GML Writer에 대한 문서를 찾을 수 없습니다 (2006에서 제외 ) : http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore .
문서 / 예제를 알려 주시겠습니까?
답변
코드 예제가 오래되지 않도록 geotools 문서를 위키 이외의 다른 기술로 마이그레이션하려고합니다.
이제 업데이트가 완료되었습니다 (모든 지오메트리 예제가 함께 수집되도록 항목을 모았습니다).
- http://docs.geotools.org/latest/userguide/library/xml/geometry.html
- http://docs.geotools.org/latest/userguide/library/xml/faq.html
해당 페이지의 전체 예는 다음과 같습니다.
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 파싱 기술을 사용하는 방법의 추가 예는 소스 코드에 포함 된 테스트 사례입니다.
- 색소폰
- DOM
- GTXML 버전 1.x (WFSDataStore VERSION = 1.0의 GML2에 사용)
- GTXML 버전 4.x (현재 다른 모든 것에 사용)
두 가지 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();
여기서 collection은 featureCollection입니다.
답변
시험:
//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"));
선적 서류 비치: