ওপেনলায়ারসে বেস স্তরগুলি পুনরায় প্রজেক্ট করা হচ্ছে


9

আমার কাছে উত্তর আমেরিকার কয়েকটি জায়গার জন্য ভেক্টর / টোপো / চিত্রের টাইলযুক্ত মানচিত্র রয়েছে যা আর্কজিআইএস সার্ভার আরএসটি পরিষেবা হিসাবে প্রকাশিত হয়েছিল। এই মানচিত্রগুলি (এ) ইপিএসজি: 26912 প্রক্ষেপণে ভিত্তি করে। এখন আমি এগুলিকে আমার ওপেনলায়ার্স ওয়েব অ্যাপের জন্য বেস মানচিত্র হিসাবে ব্যবহার করতে চাই; তদুপরি, আমি অন্যান্য বেস মানচিত্রের উত্সগুলি (বি), যেমন, ওপেনস্ট্রিটম্যাপ, গুগল ম্যাপস, ইএসআরআই ইত্যাদি গ্রাস করতে চাই, যেহেতু এই মানচিত্রগুলির বেশিরভাগটি ইপিএসজি: 900913 এ রয়েছে যা আমার জ্ঞানের জন্য গোলাকার মার্কেটর অভিক্ষেপ, যদি আমি এইগুলি যুক্ত করি তবে ওপেনলায়ার্স ম্যাপ উপাদানটিতে বেস ম্যাপ স্তরগুলি, গ্রুপ এ এবং গ্রুপ বি সঠিকভাবে ওভারলে করবে না, যার অর্থ তারা পৃথক মানচিত্র হিসাবে প্রদর্শিত হবে।

আমি জানি এটি প্রজেকশন সম্পর্কিত কিছু, এবং প্রজ 4 জে সহ কিছু কোডের দরকার হতে পারে, তবে, নবাগত হিসাবে, আমি সত্যিই জানি না কী দিয়ে শুরু করব।

মূলত, আমি ওয়ানএসএম / গুগল ম্যাপকে পুরো বিশ্বের জন্য প্রথম মানচিত্রের মানচিত্র হিসাবে রাখতে চাইছি, তারপরে উত্তর আমেরিকার কয়েকটি জায়গার জন্য ইপিএসজি: 26912 বেস মানচিত্রগুলি টায়ার 2 তে রেখে অন্য ডাব্লুএমএস বা ডাব্লুএফএসকে শীর্ষ স্তরে রেখে দিতে চাই।

আমার কি EPSG: 26912 কে EPSG: 900913 বা বিপরীতে রূপান্তর করা দরকার? আমার ধারণা আমি বেস প্রজেকশন হিসাবে EPSG: 900913 ব্যবহার করা উচিত।


1
আমি নীচে @ iant এর উত্তরে মন্তব্য করেছি, Esri সফ্টওয়্যার wkid 900913 সমর্থন করে না তবে wkid EPSG: 3857 বা ESRI: 102100 এর মতো একই সমন্বয় ব্যবস্থা সমর্থন করে।
মেকনেডি

উত্তর:


7

ওপেন লেয়ার্স ভেক্টর স্তরগুলিকে (ডাব্লুএফএসের মতো) রূপান্তর করতে পারে। যদি আপনার ভেক্টর স্তরটি ইপিএসজি: 900913 বা ইপিএসজিতে থাকে: 4326 ওপেন লেয়ারগুলি নিজেই রূপান্তরটি পরিচালনা করতে পারে অন্যথায়, এটির অন্তর্ভুক্ত প্রোজ 4 জিজ দরকার।

প্রোজ 4 জে সহ ওপেনলায়ারগুলি কীভাবে ব্যবহার করবেন তার উদাহরণ রয়েছে।

রাস্টার স্তরগুলি ওপেনলায়ার্স দ্বারা রূপান্তরিত করা যায় না। আপনি তাদের একটি ভিন্ন অভিক্ষেপ অন্তর্ভুক্ত করার প্রয়োজন হলে, আপনি নিজেকে তাদের reproject বা মত একটি reprojecting জন্য WMS প্রক্সি ব্যবহার করতে হবে GeoWebCache


4

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


3
আর্কজিআইএস সার্ভার 900913 এ স্তর সরবরাহ করতে পারে না কারণ সেই উইকিডটি অসমর্থিত। 3857, অন্যদিকে ...!
মেকনেডি


2

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

যাইহোক এই জাতীয় কিছু চেষ্টা করুন (যথাযথভাবে সীমা পরিবর্তন করুন)

var googleMercator = new OpenLayers.Projection("EPSG:900913");
var wgs84 = new OpenLayers.Projection("EPSG:4326");
var options = {
    projection: googleMercator,
    units: "m",
    numZoomLevels: 18,
    maxResolution: 156543.0339,
    maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34),
    displayProjection: wgs84,
    controls:[new OpenLayers.Control.Navigation()]}

map = new OpenLayers.Map('div', options);

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

 var mapCenter = new OpenLayers.LonLat(148,-36);
 mapCenter.transform(wgs84, googleMercator);
 map.setCenter(mapCenter,8);

1

প্রথমটি হ'ল আপনার মানচিত্রের অভিক্ষেপটি সংজ্ঞায়িত করুন এবং প্রক্ষেপণটি নিম্নলিখিত হিসাবে প্রদর্শিত করুন:

map.projection = "EPSG:23030";
map.displayProjection = new OpenLayers.Projection("EPSG:4326");

সমন্বয় রূপান্তর যুক্ত করা হচ্ছে

একবার আপনি বিভিন্ন অনুমানগুলি ব্যবহার শুরু করার পরে, আপনাকে কোনও সমন্বয়গুলি অন্য প্রজেকশন থেকে রূপান্তর করার সম্ভাবনা সম্পর্কে ভাবতে শুরু করতে হবে, হয় সেই স্থানাঙ্কগুলি প্রদর্শন করার সময়, বা মানচিত্রের থেকে কোনও ভিন্ন স্থানাঙ্ক সিস্টেমে ভেক্টর ডেটা পড়ার সময়। আগেই বলা হয়েছে, এই রূপান্তর যুক্তিটি ওএল দ্বারা সরবরাহ করা হয়নি, সুতরাং আপনাকে প্রোজ 4 জ ব্যবহার করতে হবে, যা আপনাকে আপনার পৃষ্ঠায় অন্তর্ভুক্ত করতে হবে:

<script src="http://proj4js.org/lib/proj4js-compressed.js"></script>

Proj4js.defs["EPSG:23030"] = "+proj=utm +zone=30 +ellps=intl +towgs84=-131,-100.3,-163.4,-1.244,-0.020,-1.144,9.39 +units=m +no_defs";

সংজ্ঞা পরে আপনি রূপান্তর পদ্ধতি দ্বারা এটি করতে পারেন:

var lonlat = new OpenLayers.LonLat(-3.57138, 39.8384);
lonlat.transform(map.displayProjection, map.baseLayer.projection);
map.setCenter(lonlat, 5);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.