카테고리 보관물: Gis

Gis

Geotools로 GML을 작성하는 방법? 사용하여 GML을 작성하고 싶습니다. 불행히도, 나는 GML

Geotools를 사용하여 GML을 작성하고 싶습니다. 불행히도, 나는 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 파싱 기술을 사용하는 방법의 추가 예는 소스 코드에 포함 된 테스트 사례입니다.

  1. 색소폰
  2. DOM
  3. GTXML 버전 1.x (WFSDataStore VERSION = 1.0의 GML2에 사용)
  4. 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"));

선적 서류 비치:


답변