জিওটুলগুলি দিয়ে জিএমএল কীভাবে লিখবেন?


9

আমি জিওটুলগুলি ব্যবহার করে জিএমএল লিখতে চাই। দুর্ভাগ্যক্রমে, আমি একটি জিএমএল রাইটারে ডকুমেন্টেশন পাচ্ছি না (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. করে DOM
  3. জিটিএক্সএমএল সংস্করণ 1.x (ডাব্লুএফএসডাটাস্টোর ভার্সন = 1.0 এ জিএমএল 2 এর জন্য ব্যবহৃত)
  4. জিটিএক্সএমএল সংস্করণ ৪.x (এখন সমস্ত কিছুর জন্য ব্যবহৃত)

দুটি জিটিএক্সএমএল প্রযুক্তি মূলত স্যাক্স পার্সারের সর্বোত্তম অংশের সংমিশ্রণ সহ কোডটির কোন অংশটি (একটি বাধ্যতামূলক বলা হয়) প্রতিটি এলিমেন্টকে পার্স করার জন্য ব্যবহার করতে হবে (এলিমেন্টটি সন্ধানের উপর ভিত্তি করে) স্কিমা)।


উপরের কোডটি ব্যবহার করে একটি সরল-বৈশিষ্ট্য সংগ্রহ সংগ্রহ করার চেষ্টা করার সময় আমি নিম্নলিখিত ব্যতিক্রম পাচ্ছি I "java.lang.IllegalStateException: GML2 (শুধুমাত্র ডাব্লুএফএস) ব্যবহার করে কোনও বৈশিষ্ট্য সংগ্রহ এনকোড করা যায় না"। আমি 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 এবং পার্সার নয়
আন্ডার ডার্ক

হ্যাঁ উপরে হিসাবে
ফ্ল্যাশ

আমি [একটি অনুলিপি / পেস্ট] ত্রুটি দিবসটি করেছি;)
ম্যাপারজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.