ฉันต้องการเขียน GML โดยใช้ Geotools น่าเสียดายที่ฉันไม่พบเอกสารของ GML Writer (ยกเว้นเอกสารนี้ตั้งแต่ปี 2549: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore )
คุณช่วยชี้ฉันที่เอกสาร / ตัวอย่างได้ไหม
ฉันต้องการเขียน GML โดยใช้ Geotools น่าเสียดายที่ฉันไม่พบเอกสารของ GML Writer (ยกเว้นเอกสารนี้ตั้งแต่ปี 2549: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore )
คุณช่วยชี้ฉันที่เอกสาร / ตัวอย่างได้ไหม
คำตอบ:
ฉันจะพยายามโยกย้ายเอกสารประกอบเครื่องมือทางภูมิศาสตร์ไปยังเทคโนโลยีอื่น (นอกเหนือจาก 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();
ตัวอย่างเพิ่มเติมของวิธีการใช้เทคโนโลยีการแยกวิเคราะห์ GML 4 แบบคือกรณีทดสอบที่มาพร้อมกับซอร์สโค้ด
เทคโนโลยี 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"));
เอกสารอ้างอิง: