ওপেনলায়ার্সগুলিতে দুটি পৃথক প্রজেকশন (স্পেরিকাল মার্কেটর এবং ডাব্লুজিএস 84) এর বেস স্তর ব্যবহার করা হচ্ছে


9

আমি দুটি পৃথক অনুমানের সাথে বেসলেয়ারকে কীভাবে যুক্ত করব?

আমি আলাদা প্রোজেকশন (EPSG: 4326) দিয়ে ওভারলেয়ার যুক্ত করেছি, তবে বিভিন্ন প্রজেকশন সহ আমার বেস স্তর যুক্ত করা দরকার

  1. গুগল মানচিত্র
  2. EPSG সহ আমার ভেক্টর স্তর: 4326 প্রক্ষেপণ

আমি গুগল ম্যাপের সাথে সবকিছু ঠিক আছে দেখতে পাচ্ছি তবে যখন আমি বেস স্তরটি ইপিএসজিতে স্যুইচ করি: 4326 স্তর সমস্ত সাদা।

window.onload = function init(){
                var lon = 84;
                var lat = 28;
                var zoom = 8;
                var url = "http://10.6.7.6/geoserver/wms";

                var mapControls = [
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher({'ascending':false}),                       
                    new OpenLayers.Control.ScaleLine(),
                    new OpenLayers.Control.MousePosition(),
                    new OpenLayers.Control.OverviewMap(),
                    new OpenLayers.Control.KeyboardDefaults()
                ];

                var map = new OpenLayers.Map(
                'map', 
                {       
                    numZoomLevels: 21,
                    projection: new OpenLayers.Projection("EPSG:900913"),
                    displayProjection: new OpenLayers.Projection("EPSG:4326"),
                    controls: mapControls 
                });


                var dsb = new OpenLayers.Layer.WMS( 
                "Nepal Border",
                url,                
                {layers: 'GisData:IR'}                        
            );  

                var gmap_gs = new OpenLayers.Layer.Google(
                "Google Streets",// the default 
                {'sphericalMercator': true}                 

            );




                var dG = new OpenLayers.Layer.WMS( 
                "2G Down Sites",
                url, 
                {layers: 'GisData:dG', transparent: "true",format: "image/png"},
                {
                    isBaseLayer: false,
                    buffer: 0
                });


                map.addLayers([dsb, dG,gmap_gs]);
                var proj = new OpenLayers.Projection("EPSG:4326");
                var point = new OpenLayers.LonLat(lon,lat);

                point.transform(proj, map.getProjectionObject());

                map.setCenter(point, zoom);

            }

উত্তর:


5

আমি সম্প্রতি এটি সন্ধান করেছি এবং এটি শীর্ষস্থানীয় অনুসন্ধানের ফলাফলগুলির মধ্যে একটি, আমি আবিষ্কার করেছি যে আমি আমার গবেষণা এবং পরীক্ষায় কিছু ব্রেডক্র্যাম্ব যুক্ত করব।

লম্বা এবং খাটো:

ওপেন স্তরগুলির 2.X লাইন এটি সমর্থন করে না। মানচিত্র, এটি কেন্দ্র, রেজোলিউশন এবং এক্সটেন্টের মতো বৈশিষ্ট্যগুলি মানচিত্রের প্রাথমিক বেস স্তর দ্বারা সেট করা আছে। অন্য বেস স্তর পরিবর্তন করুন এই বৈশিষ্ট্যগুলি সমন্বয় করে না, তাই ফলাফলটি অজানা। প্রায়শই, আপনি একটি কেন্দ্র পয়েন্ট / সীমানা পান যা আপনি যে বেস স্তরটিতে পরিবর্তন করছেন তার জন্য বৈধ নয়, যাতে আপনি সাদা টাইলস দেখতে পান। তবে এটি সর্বদাই ফলাফল নয় (উদাহরণস্বরূপ, 4326 থেকে 900913 এ স্যুইচ করা আপনাকে 0degN, 0degE এর নিকটে পৌঁছে দেবে)।

তবে, আশা হারিয়ে যায় না।

কাছাকাছি শব্দ:

কিছু প্যাচ খোলা স্তরগুলির বিরুদ্ধে লিখিত ছিল যা মানচিত্র এবং অনেক স্তরগুলির জন্য এটি প্যাচ করার চেষ্টা করে (দেখুন [1])। এটি 6 (6 !!!) বছর পূর্বে ফাইল করা একটি বাগ থেকে এসেছে [2]। আপনাকে ওএল এর নিজস্ব সংস্করণটি হোস্ট করতে হবে এবং হাতে তা প্যাচ করতে হবে (প্যাচটি সর্বশেষ সংস্করণগুলিতে পরিষ্কারভাবে প্রয়োগ হবে না, সুতরাং আপনাকে ম্যানুয়ালি সম্পাদনা করতে হবে), এটি আপনাকে বেশিরভাগই যেখানে পেতে চান সেখানে পাবেন। খুব কদর্য, এবং সবকিছু পরিচালনা করে না, তবে সামগ্রিকভাবে এমন একজনকে পেয়ে যায় যিনি একাধিক বেসলেয়ারদের পায়ে বিভিন্ন প্রক্ষেপণ প্রয়োজন।

দীর্ঘ মেয়াদী:

ওপেনলায়ার্স ৩.০ সম্বোধনের প্রত্যাশায় এটি ঠিক একটি বিষয় [

একটি উদাহরণ বেস স্তর / ওভারলে ডিকোটমি। মানচিত্রটির জন্য কীভাবে এবং কোথায় রেজোলিউশন সেট করতে হবে তা জানা প্রায়শই একটি চ্যালেঞ্জ। ম্যাপ এবং স্তরগুলির মধ্যে প্রজেকশন হ্যান্ডলিং এবং প্রজেকশন এবং ম্যাক্সেক্সেন্ট এবং সেন্টারের মতো বৈশিষ্ট্যের মধ্যে ইন্টারপ্লে সবচেয়ে জটিল।

২. এক্স-এ মানচিত্রের অবজেক্টটি বেস লেয়ারের উপর খুব বেশি নির্ভরশীল, এবং এটি সামনে গিয়ে পরিবর্তন হতে চলেছে। সুতরাং, যদি আপনি ২০১৩ সালের শেষের দিকে ধরে রাখতে পারেন তবে আপনার ব্যবহারের জন্য প্রাক-তৈরি সমাধান হতে পারে।

[1] http://trac.osgeo.org/openlayers/attachment/ticket/1249/NEW.Reproject.patch
[2] http://trac.osgeo.org/openlayers/ticket/1249
[3] http: / /openlayers.org/blog/2012/11/14/why-are-we-building-openlayers-3/


1

আপনার প্রশ্ন হিসাবে এখানে কিছু আছে, ওপেনলায়ার্সে বেস স্তরগুলি কীভাবে পুনরায় সাজানো যায়? এবং আপনি রূপান্তর সম্পর্কে কিছু তথ্য পান, আপনার এটি দেখতে হবে, গোলাকার মার্কেটর রাস্টার চিত্রগুলি তৈরি করা।

প্রথম পোস্ট থেকে সংক্ষেপে সংক্ষেপে:

  1. ওপেন লেয়ার্স ভেক্টর স্তরগুলিকে (ডাব্লুএফএসের মতো) রূপান্তর করতে পারে।
  2. রাস্টার স্তরগুলি ওপেনলায়ার্স দ্বারা রূপান্তরিত করা যায় না।
  3. কোনও ভাল ডাব্লুএমএস আপনার জন্য পুনরায় প্রত্যাশা করতে সক্ষম হওয়া উচিত।
  4. আর্কজিআইএস সার্ভার 900913 এ স্তর সরবরাহ করতে পারে না কারণ সেই উইকিডটি অসমর্থিত। 3857, অন্যদিকে ...!

এবং দ্বিতীয় লিঙ্ক থেকে:

স্পেরিকাল মার্কেটর প্রজেকশনটি এত গুরুত্বপূর্ণ যে কারণগুলির মধ্যে একটি হ'ল এটিই একমাত্র প্রক্ষেপণ যা গুগল ম্যাপের মতো বাণিজ্যিক স্তরগুলির উপরে সঠিকভাবে চিত্রের ওভারলেটিংয়ের মঞ্জুরি দেয়। রাস্টার ইমেজগুলি ব্যবহার করার সময়, ব্রাউজারে, চিত্রগুলি যেভাবে এটি 'ঘন' জিআইএস ক্লায়েন্টে থাকতে পারে একইভাবে পুনঃপ্রক্রিয়া করা সম্ভব নয়। পরিবর্তে, সমস্ত চিত্র একই প্রক্ষেপণে থাকতে হবে। কীভাবে স্ফিয়ারিকাল মার্কেটর প্রজেক্টেড টাইলস তৈরি করবেন তা নির্ভর করে আপনি নিজের ছবি তৈরি করতে যে সফ্টওয়্যারটি ব্যবহার করছেন তার উপর।

গুরুত্বপূর্ণ জিনিসটি এখানে:

using raster images, in the browser, it is not possible to reproject the images
in the same way it might be in a thick GIS client.

এবং ডেটাসেট রূপান্তরের জন্য, আমার উত্তর আপনাকে এ সম্পর্কে এখানে সহায়তা করতে পারে ।

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


আমি প্রজ 4 জে সহ কোডটি যুক্ত করেছি যা ওভারলেগুলির জন্য কাজ করে তবে 2 টি ভিন্ন বেস স্তরগুলির জন্য এই বিষয়ে কোনও মন্তব্য নেই?
কিনকাজৌ

1

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


কোড যুক্ত করা হয়েছে। এই স্তরটির মধ্যে স্যুইচ করার সময় সমস্যা আছে। আমি যখন প্রথমে ডাব্লুজিএস 4326 দিয়ে স্তরটি বেস স্তর হিসাবে লোড করি এবং জুম স্তরটি বজায় রাখি ঠিক আছে আমি গুগল স্তরটিতে স্যুইচ করার পরে এবং একটি মানচিত্রকে কিছুটা প্যান করার পরে এটি ঠিক হয়ে যায়।
কিনকাজৌ

Map.addLayers ([dsb, ডিজি, gmap_gs]) পরিবর্তন করুন; to map.addLayers ([gmap_gs, dsb, dG]);
ইয়ান Turton

প্রথম লোডে গুগল ম্যাপ দেখায় তবে স্তরটি স্যুইচ করতে পারে না। স্যুইচ করার সময় ত্রুটি
কিঙ্কাজৌ

0

সাধারণভাবে এটি সম্ভব নয় কারণ ওপেনলায়ার্স বেস স্তর থেকে মানচিত্রের অভিক্ষেপ সেট করে।

আশেপাশের একটি সম্ভাব্য কাজ হ'ল জিও সার্ভারের মতো ক্যাসকেডিং ডাব্লুএমএস ব্যবহার করা বেস বেসগুলির এক স্তর থেকে অন্য প্রক্ষেপণে পুনরায় প্রজেক্ট করতে।


0

আমি সবেমাত্র 2.13.1 এ প্যাচ প্রয়োগ করেছি (ট্যাগ থেকে)

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

আপনি এখানে একটি টেক্সট উদাহরণ সহ এটি পেতে পারেন:

https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch

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