जियोटूल के साथ जीएमएल कैसे लिखें?


9

मैं GeMLools का उपयोग करके GML लिखना चाहता हूँ। दुर्भाग्य से, मैं एक GML लेखक पर दस्तावेज़ नहीं ढूँढ सकता (2006 के अलावा इसे छोड़कर: http://docs.codehaus.org/display/GEOTOOLS/WFS+++GML+DataStore )।

क्या आप मुझे दस्तावेज़ों / उदाहरणों पर इंगित कर सकते हैं?

जवाबों:


9

मैं एक अलग तकनीक (विकी के अलावा) के लिए जियोटॉल्स प्रलेखन को स्थानांतरित करने की कोशिश करूंगा ताकि कोड उदाहरण तारीख से बाहर न जाएं।

यह अपडेट अब किया जाता है (मैंने चीजों को इकट्ठा किया ताकि सभी ज्यामिति उदाहरण एक साथ हों):

यहाँ उस पृष्ठ से एक पूर्ण उदाहरण दिया गया है:

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 विभिन्न जीएमएल पार्सिंग प्रौद्योगिकियों का उपयोग कैसे करें के अतिरिक्त उदाहरण स्रोत कोड के साथ शामिल परीक्षण मामले हैं।

  1. SAX
  2. डोम
  3. GTXML संस्करण 1.x (WFSDataStore संस्करण = 1.0 में GML2 के लिए प्रयुक्त)
  4. GTXML संस्करण 4.x (अब सब कुछ के लिए उपयोग किया जाता है)

दो GTXML प्रौद्योगिकियां मूल रूप से SAX पार्सर के सर्वश्रेष्ठ भाग का एक संयोजन हैं, जिसमें यह पता लगाने की क्षमता होती है कि प्रत्येक तत्व को पार्स करने के लिए कोड के टुकड़े (जिसे बाइंडिंग कहा जाता है) का उपयोग किया जाता है क्योंकि यह तत्व को देखने के लिए आता है। स्कीमा)।


ऊपर दिए गए कोड का उपयोग करके SimpleFeatureCollection को एन्कोड करने की कोशिश करने पर मुझे निम्न अपवाद मिल रहे हैं। "java.lang.IllegalStateException: GML2 (केवल WFS) का उपयोग करके एक सुविधा संग्रह को एन्कोड नहीं किया जा सकता है"। मैं 8.3 का उपयोग कर रहा हूँ, कोई विचार?
थॉमस

5

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

जहां संग्रह एक सुविधा है।


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 और नहीं पार्सर का मतलब
UnderDark

ऊपर के रूप में हाँ। परतदार इंटरनेट दिन ...
Mapperz

); मैंने किया था [एक कॉपी / पेस्ट] त्रुटि दिन
Mapperz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.