Geotools로 GML을 작성하는 방법?


답변:


9

코드 예제가 오래되지 않도록 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 파서의 가장 좋은 부분과 각 요소를 파싱하는 데 사용할 코드 조각 (바인딩이라고 함)을 파악할 수있는 기능을 결합한 것입니다. 개요).


위의 코드를 사용하여 SimpleFeatureCollection을 인코딩하려고 할 때 다음 예외가 발생합니다. "java.lang.IllegalStateException : GML2 (WFS 만)를 사용하여 기능 콜렉션을 인코딩 할 수 없습니다." 8.3을 사용하고 있습니까?
Thomas


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하지 파서 의미 추측
언더 다크

위와 같이 그렇습니다. 색다른 인터넷의 날 ...
Mapperz

나는 [사본 / 붙여 넣기] 오류 일을했다;)
Mapperz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.