ওপেন লেয়ার্স ব্যবহার করে জিও সার্ভারের কোনও দোকানে সমস্ত স্তরের নাম কীভাবে পাবেন


9

ওপেনলায়ার্স ব্যবহার করে জিও সার্ভার স্টোরের সমস্ত স্তরের নাম পুনরুদ্ধার করার আমার কঠোর প্রয়োজন have আমি এখানে পোস্টটি দিয়েছি , তবে এটি আমার প্রশ্নের উত্তর দেয় না। আমি জিও সার্ভারের আরএসটি এপিআইও দিয়েছি, যা আমি অন্য ভাষা ব্যবহার করে সি সি, জাভা বা পিএইচপি বললে আদর্শ হবে। তবে আমি পুরোপুরি জাভাস্ক্রিপ্টে এটি করতে চাই।

আপডেট:WFS GetCapabilities ডকুমেন্টে আমি যা দেখতে পাচ্ছি তার থেকে ফিল্টার ব্যবহার করে ডাব্লুএফএস গেটক্যাবিলিটি অনুরোধ প্রেরণ করে সমস্ত স্তরগুলির নাম পুনরুদ্ধার করতে পারি। তবে আমি নিশ্চিত নন যে কোনও GetCapabilitiesঅনুরোধে ফিল্টার অন্তর্ভুক্ত করা সম্ভব কিনা । এই ধরনের ফিল্টারটি কেমন হবে তা আমার কোনও ধারণা নেই।

আমি কীভাবে এটি অর্জন করতে পারি সে সম্পর্কে যে কোনও পরামর্শই প্রশংসিত হবে। যে কোনও বিকল্প পদ্ধতির প্রশংসা করা হবে।

হালনাগাদ:

আমি বিশ্বাস করি যে আমি এখানে একটি সমাধান পেয়েছি ; "ডাব্লুএফএস গেটকাএ্যাবিলিটিস অনুরোধগুলি কেবলমাত্র কোনও নির্দিষ্ট নেমস্পেসের সাথে সম্পর্কিত স্তরগুলিতে ফিরে যেতে ফিল্টার করা যেতে পারে this এটি করতে আপনার অনুরোধে নিম্নলিখিত কোডটি যুক্ত করুন: নামস্থান = <namespace>"। আমি আশা করি এটি অন্য কাউকে সহায়তা করে।


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

উত্তর:


18

আমি লক্ষ্য করেছি যে আপনি ইতিমধ্যে একটি সমাধান খুঁজে পেয়েছেন যা আপনার জন্য কার্যকর, তবে আমি ভেবেছিলাম যে আমি বা অতিরিক্ত কিছু বিকল্প যুক্ত করতে পারি যা আপনি বা অন্যরা দরকারী বলে মনে করতে পারেন।

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

একটি উদাহরণ নিতে দিন। মনে করুন আপনার কাছে মাইউজ নামে একটি কর্মক্ষেত্র রয়েছে এবং এটিই এই ওয়ার্কস্পেসটি যার জন্য আপনি স্তরগুলির তালিকা করতে চান। সেক্ষেত্রে আপনি url এ একটি অনুরোধ করতে পারেন:

http://www.yourgeoserver.com/geoserver/myws/ows?SERVICE=WFS&REQUEST=GetCapabilities

ফিরে আসা দক্ষতার নথিটি কেবল মিউজ ওয়ার্কস্পেসের বিপরীতে নিবন্ধিত স্তরগুলিকেই তালিকাভুক্ত করবে ।

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

http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json

এই আপনি একটি JSON বস্তু সব তালিকা ফিরে আসবে featuretypes কর্মক্ষেত্র মধ্যে, এছাড়াও আপনি .xml জন্য .json প্রতিস্থাপন বা সেইসব বিন্যাসে প্রতিক্রিয়া পেতে .html পারবেন না। সুতরাং, ওপেনলায়ার্সে এটি কীভাবে করবেন? ভাগ্যক্রমে ওপেনলায়ার্স বস্তুর আকারে এক্সএমএলএইচটিপিআরকোয়েস্ট অবজেক্টের একটি এনক্যাপসুলেশন সরবরাহ করে OpenLayers.Request। উপরের আরএসটি ইউআরএলটি ব্যবহার করার একটি সাধারণ উদাহরণ হ'ল:

var request = OpenLayers.Request.GET({
  url: "http://www.yourgeoserver.com/geoserver/rest/workspaces/myws/featuretypes.json",
  callback: function(request) {
    // Code here to handle the response, the request object contains the data
  }
});

ওপেনলায়ার্স সহ এখানে দূরবর্তী ডেটা অনুরোধ করার জন্য একটি ভাল নথি রয়েছে ।

আশা করি এটি আপনাকে বিবেচনা করার জন্য কিছু অন্যান্য পদ্ধতির সুযোগ দেয়।


আমি এই পোস্টে প্রতিটি পরামর্শ পরীক্ষা করেছি, @ শেন্ডারসন। তারা নিখুঁতভাবে কাজ। অনেক ধন্যবাদ. এটি অত্যন্ত সহায়ক ছিল।
ওকেলো

সমস্যা নেই, সাহায্য করতে পেরে আনন্দিত!
শেন্ডারসন

ভার্চুয়াল ওডব্লিউএস পরিষেবাদি লিঙ্কটি এখন মারা গেছে। এখানে
wchatx


আপনি কি লিফলেট জন্য উত্তর যুক্ত করতে পারেন?
টেকসন

2

এই উত্তর কারও সাহায্য করতে পারে। আমি জাভাস্ক্রিপ্ট এবং লিফলেট ব্যবহার করে স্বয়ংক্রিয়ভাবে আমার স্তরগুলির একটি তালিকা তৈরি করতে চেয়েছিলাম। চেন্ডারসন উত্তর ব্যবহার করে, আমি নিম্নলিখিত কোডটি তৈরি করেছি:



    url = "https://YOUSERVER/geoserver/STORE/ows?service=wfs&version=2.0.0&request=GetCapabilities"
    layerList = [];
    $.ajax({
        type: "GET",
        url: url,
        dataType: "xml",
        success: function(xml) {
            $(xml).find('FeatureType').each(function(){
                name = $(this).find("Name").text();
                title = $(this).find("Title").text();
                group = "NO_GROUP";
                $(this).find('ows\\:Keywords').each(function(){
                    keyword = $(this).find('ows\\:Keyword').text();
                    if(keyword.indexOf("group:")!=-1)
                    {
                        group=keyword.split(":")[1];
                        return false;
                    }
                });
                layerList.push({"name":name,"title":title,"group":group});          
            });
        }
    });

এইভাবে, আমি এখানে চিত্র বর্ণনা লিখুনজিওসিভার লেয়ারে একটি গোষ্ঠী "গোষ্ঠী: জিওগ্রাফাই" যুক্ত করতে পারি এবং প্রতিটি স্তর এবং এর গ্রুপটিকে আমি ম্যানুয়ালি কোড করতে পারি না। নাম স্তর (হয়তো L.WMS.source ব্যবহার করে) তৈরি করতে ব্যবহার করা হয় এবং শিরোনাম এইচটিএমএল লেবেল লেগে রয়েছে।


1

এই উত্তরটি চেক করার চেষ্টা করুন । এটি একটি ডেমো দেয়। ভুলে যাবেন না যে স্তরগুলি বিভিন্ন পরিষেবাগুলির মাধ্যমে সেটির উল্লেখ রয়েছে serve

আমি এটি আপনাকে সাহায্য করে আশা করি...


আমি এটি পরীক্ষা করে দেখেছি। এটি আমার চিন্তার সাথে সামঞ্জস্যপূর্ণ যে আমি WFS GetCapabilitiesঅনুরোধটি ব্যবহার করে এটি অর্জন করতে পারি । তবে আমি কেবল স্তরগুলির নাম পুনরুদ্ধার করতে চাই, অন্য কিছুই নয়। এর অর্থ আমাকে আমার অনুরোধে ফিল্টারগুলি অন্তর্ভুক্ত করতে হবে। তবে আমি কীভাবে কোনও WFS GetCapabiltiesঅনুরোধে ফিল্টারগুলি যুক্ত করতে পারি যা কেবলমাত্র স্তরগুলির নাম ফেরত দিতে পারে সে সম্পর্কে আমার এখনও ধারণা নেই । উপরে আমার আপডেট দেখুন। কোন পয়েন্টার?
ওকেলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.