জিও সার্ভার থেকে ওপেনলায়ার্স মানচিত্রে একটি সহজ ডাব্লুএফএস স্তর কীভাবে যুক্ত করবেন?


19

আমি একটি ওপেনলায়ার্স মানচিত্রে জিও সার্ভারের সাথে অন্তর্ভুক্ত ডেটাসেটগুলির মধ্যে একটি যুক্ত করার চেষ্টা করছি। আমি ওপেনজিও টিউটোরিয়াল অনুসরণ করেছি, এখানে একই ধরণের থ্রেড দেখেছি, তবে আমি এটি ক্র্যাক করব বলে মনে করি না। কেউ আমার কোড এবং জিও সার্ভার সেটআপটি একবার দেখে নিতে পারেন এবং আমি কোথায় ভুল করছি?

আমার কোডটি এখানে:

//WMS map
world = new OpenLayers.Layer.WMS("Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms", {
    layers : "openstreetmap",
    format : "image/png"
});
map.addLayer(world);

//WFS
parks = new OpenLayers.Layer.Vector("WFS", {
    strategies : [new OpenLayers.Strategy.BBOX()],
    protocol : new OpenLayers.Protocol.WFS({
        url : "http://localhost:8081/geoserver/wfs",
        featureType : "medford:parks",
        featureNS : "http://medford.opengeo.org/medford"
    })
});

map.addLayer(parks);

map.zoomToMaxExtent();

জিও সার্ভারের বিশদ: ওয়ার্কস্পেসের নাম = মেডফোর্ড, নেমস্পেস ইউআরআই = http://medford.opengeo.org বৈশিষ্ট্য টাইপের জন্য আমি "পার্ক" এবং "মেডফোর্ড: পার্ক" চেষ্টা করেছি

স্তরটি সক্ষম, বিজ্ঞাপনযুক্ত এবং 30 টি ফিচারের রিটার্ন সীমা রয়েছে।

আমি একসাথে একটি সাধারণ মানচিত্র রাখার জন্য লড়াই করছি।

আপডেট সমাধান। কাজ করছি.

wfs = new OpenLayers.Layer.Vector("Fields_WFS", {
        strategies : [new OpenLayers.Strategy.Fixed()],
        protocol : new OpenLayers.Protocol.WFS({
        version : "1.1.0",
        url : GEOSERVER_HOST + ":" + GEOSERVER_PORT + "/geoserver/wfs", 
        featurePrefix : "rpid",
        featureType : "FIELDS_SUBSET_BNG_OSGB36_1",
        featureNS : "<namespace>", 
        //geometryName : "GEOM", type "Geometry"
        srsName : "EPSG:27700"
}),
    renderers : renderer
})

স্তর সংজ্ঞাতে জ্যামিতির নাম নির্দিষ্ট করার দরকার নেই। যেহেতু নেটিভ এসআরএস আমাদের ডেটাসেটে বাতিল ছিল, যদি আমরা জ্যামিতি নামটি ডিফল্ট হওয়ার চেয়ে বেশি রাখি তবে এটি না করে এটি মানচিত্রের অভিক্ষেপ (27700- আমাদের ক্ষেত্রে) ব্যবহার করে।

উত্তর:


24

এই পোস্টে আমার উত্তর একবার দেখুন ।

  1. নিশ্চিত করুন যে আপনার ফিচারএনএসের মানটি আপনার জিওএসভারের "নেমস্পেস ইউআরআই এর অধীনে ওয়ার্কপেস পৃষ্ঠা সম্পাদনা করুন" তে রয়েছে Make " Http://postgis.org " এর মতো জেনেরিক কিছু ব্যবহার করবেন না । " HTTP: // yourdomain / অ্যাপ্লিকেশন / ক্যাটালগলায়ার " বা এর মতো অনন্য কিছু ব্যবহার করুন। আপনি এই ইউআরআই তৈরি করতে পারেন, কেবল এটি অনন্য করে তুলুন।
  2. কৌশল হিসাবে আপনার কাছে নতুন বিবিএক্স () রয়েছে তবে সেই বাক্সটির মাত্রা হিসাবে কী আছে? আমি এটি পরীক্ষার জন্য [নতুন ওপেনলায়ার্স.স্ট্রেটজি.ফিক্সড ()] এ পরিবর্তন করব।
  3. ফিচারটাইপ আসলে জ্যামিতির ধরণ নয়, এটি জিওজারভারে আপনার "স্তর নাম" (আমি জানি, বিভ্রান্তিকর)।
  4. জ্যামিতি নাম আপনার পোস্টগিস ডাটাবেসের ক্ষেত্রের নাম যেখানে জ্যামিতির ডেটা টাইপ রয়েছে। জিওজারভারে, "স্তর সম্পাদনা করুন" এর নীচে আপনি নীচে "বৈশিষ্ট্য প্রকারের বিশদ" দেখতে পাবেন। সেখানে আপনি "জ্যামিতি" টাইপযুক্ত একটি ক্ষেত্র দেখতে পাবেন। সম্পত্তি কলামের নীচে মানটি ব্যবহার করুন

আমি ফিচারপ্রিফিক্স এবং সংস্করণ নির্দিষ্ট করব। এরকম কিছু চেষ্টা করুন:

var wfs = new OpenLayers.Layer.Vector(
            "Stavros Features",
            {
                strategies: [new OpenLayers.Strategy.Fixed()]
                , projection: new OpenLayers.Projection("EPSG:4326")
                , protocol: new OpenLayers.Protocol.WFS({
                    version: "1.1.0",
                    url: "http://localhost:8081/geoserver/wfs",
                    featurePrefix: 'myWorkspace', //geoserver worspace name
                    featureType: "medford:parks", //geoserver Layer Name
                    featureNS: "http://medford.opengeo.org/medford", // Edit Workspace Namespace URI
                    geometryName: "bounds" // field in Feature Type details with type "Geometry"
                })
            });

ধন্যবাদ ক্যাপড্রাগন আমি সমস্ত পদক্ষেপ নিয়েছি তবে এখনও কোনও আনন্দ নেই ... আমার ওয়ার্কস্পেসকে এখন আরপিড বলা হয় এবং আমি একটি বৈশিষ্ট্যপ্রিফিক্স যুক্ত করেছি। আমি ওয়ার্কস্পেসটি সংযোজন ও না করে ফিচারটাইপ চেষ্টা করেছি। " Rpid.opengeo.com ", " লোকালহোস্ট: 8081 / আরপিড " সহ আমি বিভিন্ন নেমস্পেস চেষ্টা করেছি । আমি এখনও এই সম্পত্তি সম্পর্কে বিভ্রান্ত। আমি অভিক্ষেপ এবং জ্যামিতির নাম sertedোকিয়েছি (জিওওএম)। আমার মানচিত্রের এইচটিএমএল পৃষ্ঠা এখানে বাস করে: ফাইল: /// সি: /অ্যাপ্টানা / ওয়ার্কস্পেস / জিআইএস / ম্যাপ এইচটিএমএল। এটি কি নীচে একই উত্স নীতিটি আমাকে ধরে ফেলবে? ফায়ারবাগের আমার নেট ট্যাবে কোনও প্রতিক্রিয়া ছাড়াই একটি 'বিকল্পগুলি ডাব্লুএফএফস' দেখায়
জিও_জেমস

2
ফিচারএনএসের নেমস্পেসটি আপনার যা পছন্দ তা হতে পারে তাই এই দু'টিই কাজ করবে। গুরুত্বপূর্ণ বিষয়টি হ'ল এটি আপনার জিওসিভারের সাথে ঠিক একই রকম। অন্যথায় জিনিসগুলি ক্রমিকায়িত হয় না এবং আপনি ওয়েব পরিষেবা থেকে কোনও প্রতিক্রিয়া পান না। সুতরাং geoserver ঢোকা এ ক্লিক করুন আপনার workspace(এই পৃষ্ঠাটিতে আপনাকে নিতে হবে Edit WorkspaceNameকি নামে করা হয় featurePrefix। এবং Namespace URIকি আপনি করা হয় featureNS। এছাড়াও, যদি নিশ্চিত না file:///c:অবস্থান একটি প্রক্সি ব্যবহার করতে প্রয়োজন হবে। কিন্তু আমি তৈরি করতে পারতাম ফাইলটি http://localhostপরীক্ষা করে দেখতে এবং তা নিশ্চিত করার জন্য লাইভ করে
ক্যাপ্ট্রেড্রাগন

ঠিক আছে আমি এখন আমার কোডটি লোকালহোস্টে: 8081 / অ্যাপস / সূচক html এ স্থানান্তর করেছি এবং আমার বৈশিষ্ট্যএনএস পরিবর্তন করেছি। আমি এখন 30 টি বৈশিষ্ট্য প্রতিক্রিয়াটিতে ফিরে আসতে দেখছি ... <আরপিড: ওবিজেসিটিআইডি> 25 </ আরপিড: ওবিজেসিটিড> <আরপিড: ফিল্ড_আইডি> এনএস / 86427/74196 </ আরপিড: <ফিল্ড_আইডি> <আরপিড: GROSS_AREA> 2.307 </ rpid: GROSS_AREA>। অগ্রগতি! তবে আমি আমার মানচিত্রে কোনও বৈশিষ্ট্য দেখছি না। ডাব্লুএমএস হিসাবে যুক্ত হয়ে গেলে আমি তাদের সূক্ষ্ম দেখতে পারি can শুধুমাত্র অন্যান্য স্তরটি একটি বেস ডাব্লুএমএস। আমার কনসোলটি ত্রুটিগুলি যেমন: ওপেনলায়ার্সের সাথেও ছাঁটাইয়াছে ark মারকার অপরিজ্ঞাত এবং এক্সট্রা.প্রেগ কোনও কার্য নয়। আমি আমার সমস্ত লাইব্রেরি স্থানীয়ভাবে আমদানি করছি ...
জিও_জেমস

আপনি যখন বলছেন প্রতিক্রিয়াটিতে 30 টি বৈশিষ্ট্য রয়েছে। তারা <wfs:FeatureCollection numberOfFeatures="30"... ঠিক কোনও প্যারেন্ট উপাদানগুলির মধ্যে আবৃত xML বিন্যাসে আছে ?
ক্যাপ্ট্রাড্রাগন

আমি বলব একটি নতুন খুব সাধারণ পরীক্ষা পৃষ্ঠা তৈরি করুন এবং সেই ডাব্লুএফএস স্তর যুক্ত করুন। আমার কাছে দেখে মনে হচ্ছে যে এই ত্রুটিগুলি আপনার কোডের অন্যান্য অংশ থেকে আসছে কারণ ওপেনলায়ার্স। মারকার WWF- এর সাথে জড়িত নয়। হতে পারে আমি ভুল, তবে একটি সাধারণ পরীক্ষার পৃষ্ঠা তৈরি করা সর্বদা এটি কার্যকর কিনা তা নির্ধারণে সহায়তা করে। আমি যাই হোক না কেন এটি।
ক্যাপ্ট্রাড্রাগন

3

প্রথম জিনিস যাচাই করে দেখুন: আপনার সার্ভার / টেস্টের ওয়েবপেজটি কি 'মেডফোর্ড.ওপেনজেও.আর.জি' তে আছে? যদি তা না হয় তবে একই অরিজিন নীতিমালার কারণে আপনি ডাব্লুএফএস অ্যাক্সেস করতে পারবেন না । এটি ঠিক করার জন্য আপনি প্রযুক্তিগতভাবে একটি প্রক্সি ব্যবহার করতে পারেন। (যদিও আমার মতে এটি কেবল ডাব্লুএফএসের একটি খারাপ ডিজাইন করা প্রোটোকল হওয়ার ঘটনা)


1
সেম অরিজিন একটি ব্রাউজার সমস্যা, ডাব্লুএফএস ঠিক নকশাকৃতভাবে কাজ করে।
ইয়ান Turton

হ্যাঁ এবং না: ডাব্লুএফএসটি এক্সএমএল, সুতরাং এটি ফায়ারফক্স (এবং 'ডেস্কটপ') ছাড়াও প্রতিটি প্ল্যাটফর্মে একটি এক্সএমএল পার্সার প্রয়োজন, এবং এটি ক্রস-ডোমেন যোগাযোগের জন্য আমাদের কেবলমাত্র পথের সাথে ভালভাবে মিশে যায় না: জেএসএনপি। অন্যদিকে জিওজোন স্থানীয়ভাবে প্রায় প্রতিটি ব্রাউজারে পার্স হয় এবং ক্রস-ডোমেনের সাথে সামঞ্জস্যপূর্ণ হতে সহজে এবং সাধারণত মোড়ানো হয়। স্পষ্টতই আপেল-থেকে কমলা নয়, এবং এটি আমার ডাব্লুএফএএস সমালোচনার সীমা নয় (ফুলে যাওয়া, খারাপভাবে প্রসারিত ইত্যাদি)।
tmcw

আপনি ধরে নিচ্ছেন যে ব্রাউজারগুলি ভাল ডাব্লুএফএস ক্লায়েন্ট তৈরি করে। আপনি কখনও কখনও ভেক্টর হিসাবে বিপুল পরিমাণ ভৌগলিক ওয়েব ওয়েব ব্রাউজারে টানতে চান না want
ইয়ান Turton

হাই টিএমসিডাব্লু কোনও আমার পরীক্ষার পৃষ্ঠাটি আমার সি ড্রাইভে কেবল একটি স্থানীয় ফাইল নয়। আমি যদি ৮০৮১ পোর্টে স্থানীয় জিও সার্ভারের সাথে কাজ করতে চাই তবে আমার নেমস্পেস ইউআরআই কী সেট করা উচিত?
জিও_জেমস

2

আপনার সমস্যাটি হ'ল বৈশিষ্ট্যের নাম এবং একটি নেমস্পেসের উপর আপনার উপসর্গ রয়েছে যা জিওসারবার (এবং / অথবা ওপেনলায়ার্স) গুলিয়ে দিচ্ছে।

চেষ্টা করুন:

 featureType : "parks",

আমার কাছে মন্তব্য করা সোর্স কোড সহ http://ian01.geog.psu.edu/geoserver/www/wfs/index.html এ আমার কিছু ডাব্লুএফএসের উদাহরণ রয়েছে যা আপনি অধ্যয়ন করতে পারেন।


ধন্যবাদ iant আমি এখন উপসর্গ ছাড়া চেষ্টা করেছি এবং আমি মনে করি একটি বিস্তৃত সমস্যা আছে
জিও_জেমস

লিঙ্কটি চলমান নয়
সাম007

0

শুধু "মেডফোর্ড: পার্কস" থেকে "পার্ক" এ আপনার বৈশিষ্ট্যটি সংশোধন করুন

var wfs = new OpenLayers.Layer.Vector(
            "Stavros Features",
            {
                strategies: [new OpenLayers.Strategy.Fixed()]
                , projection: new OpenLayers.Projection("EPSG:4326")
                , protocol: new OpenLayers.Protocol.WFS({
                    version: "1.0.0",
                    url: "http://localhost:8081/geoserver/wfs",
                    featureType: "parks", //geoserver Layer Name without workspace prefix
                    featureNS: "http://medford.opengeo.org/medford"

                })
            });

উদাহরণস্বরূপ jsfiddle দেখুন: http://jsfiddle.net/expedio/ucrtthya/


-1

আপনার কোড ঠিক আছে। আপনার কেবলমাত্র আপনার পৃষ্ঠার ব্রাউজারের ঠিকানা পরিবর্তন করতে হবে। "ফাইলহোল্ড: \ সি ......" এর পরিবর্তে "লোকালহোস্ট: 8080 / জিওসিভার / www / your_file_name.html" এর মাধ্যমে আপনার ব্রাউজার পৃষ্ঠাটি নির্দেশ করুন

তারপরে ভেক্টর স্তর পুরোপুরি রেন্ডার করবে।

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