স্থানাঙ্কের একটি সেট দেওয়া, আমি কীভাবে ন্যূনতম সীমাটি গণনা করতে পারি?


13

আমার দীর্ঘ / ল্যাটে স্থানাঙ্কের একটি সেট রয়েছে। সর্বদা কমপক্ষে 3 অর্ডারযুক্ত স্থানাঙ্ক থাকে যা একটি পলি গঠন করে (যদি তারা সমতল প্রস্তাবিত হয়)। বৈধ দ্রাঘিমাংশ এবং অক্ষাংশ রেঞ্জের সেট হিসাবে আমি এই স্থানাঙ্কগুলির সর্বনিম্ন সীমাটি কীভাবে গণনা করতে পারি? ('বৈধ' দ্বারা আমার বোঝানো ব্যাপ্তিগুলি স্পষ্টভাবে অ্যান্টিমেরিডিয়ান হিসাবে অ্যাকাউন্ট করে)। আমি যা খুঁজছি তা ব্যাখ্যা করার জন্য এটির মতো শক্ত of

এখানে চিত্র বর্ণনা লিখুন

ছবিতে কেসটি তুচ্ছ; আপনি কেবল সমস্ত পয়েন্টের জন্য পরম সর্বনিম্ন এবং সর্বাধিক সন্ধান করতে পারেন। যদিও এটি সব ক্ষেত্রে কার্যকর হয় না। জেনেরিক সমাধান কি আছে?

সম্পাদনা: 'বৈধ' দ্বারা আমি কী বোঝাতে চাইছি তা বোঝাতে, আমার ডেটা সেটে আমার তিনটি দ্রাঘিমাংশ মান ছিল: -76, -135 এবং 164 The -180 এবং 164 থেকে 180 এ।

আরও কিছু স্পষ্টতা। পয়েন্টগুলি বহুভুজ গঠন করে, তাই কিছু ক্ষেত্রে প্রয়োজনীয় পরিসীমা -180 থেকে +180 (যেমন, পুরো 360 ডিগ্রি) হতে পারে:

এখানে চিত্র বর্ণনা লিখুন

বাম দিকে চিত্রটি চারটি স্থানাঙ্কের দ্রাঘিমাংশ দেখায় যা পৃথিবীর এক 'অর্ধেক' তে ঘটে। এটি কল্পনা করুন যেন আপনি নীচে উত্তর মেরু (কালো বিন্দু) দিকে তাকিয়ে আছেন। গোলাপী ন্যূনতম দ্রাঘিমাংশ পরিসীমা দেখায় যা বহুভুজকে অন্তর্ভুক্ত করে (বহুভুজকে বেগুনি রঙের চারটি পয়েন্টের মধ্যে দেখানো হয়)। বাম দিকের কেসটি দুটি অনুদৈর্ঘ্য রেঞ্জের হবে: [-180 থেকে -120] এবং [135 থেকে 180] (কেবলমাত্র দৃষ্টি দিয়ে এটি অনুমান করা)

ডানদিকে থাকা চিত্রটি আরও একটি কেস দেখায় যেখানে পয়েন্টগুলি সারা পৃথিবী জুড়ে যায়। এই ব্যাপ্তিটি [-180 থেকে 180] হবে।


1
আমি এই সমস্যাটি আগে কখনও বিবেচনা করি নি, এটি একটি দুর্দান্ত প্রশ্ন। সমতল পৃথিবী আমাদের কাজগুলি আরও সহজ করে তুলবে যেখানে এর আরও একটি উদাহরণ! আমি এর কিছু সমাধান দেখার অপেক্ষায় রয়েছি।
সাগরিভ

আমি মনে করি আপনার সম্পর্কে আরও সুস্পষ্ট হওয়া দরকার "('বৈধ' দ্বারা আমি এন্টিমেরিডিয়ান হিসাবে স্পষ্টভাবে অ্যাকাউন্ট হিসাবে পরিসর বোঝায়)" - আমি প্রশ্নের সীমাবদ্ধতার সামনে ন্যূনতম শব্দটি অনুমান করার প্রয়োজন অনুমান করছি।
ইয়ান টার্টন

আপনি কি আপনার ইমেজটি পুনরায় যুক্ত করতে পারেন এটি আপনার সমস্যাটি ব্যাখ্যা করতে সহায়তা করতে পারে।
Mapperz

1
আইটি: স্পষ্টভাবে স্পষ্ট করে 'বৈধ' ম্যাপেরজ: পুনরায় যুক্ত করবেন? এটি প্রদর্শিত হচ্ছে না? আমি এটা দেখতে পারেন।
প্রিস

1
ভাল স্থানাঙ্কগুলি দীর্ঘ / লাতায় রয়েছে এবং ভৌগলিক ডেটা পুনরুদ্ধার করতে একটি ডাটাবেস অনুসন্ধান করতে ব্যবহৃত হয় to কঠোরভাবে বলতে গেলে আপনি এটিকে খাঁটি গণিত সমস্যায় রূপান্তর করতে পারেন (যদিও এটি জিআইএস-এর অনেকগুলি বিষয়ে বলা যেতে পারে)
প্রাইস

উত্তর:


5

আশা করি আমি প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি ...

আমরা দ্রাঘিমাংশ এবং অক্ষাংশের জন্য পৃথকভাবে সমস্যাটি সমাধান করতে পারি, সুতরাং আমি দ্রাঘিমাংশ সহ আপনার উদাহরণটি গ্রহণ করব: -76, -135 এবং 164।

প্রথমে আমি তাদের অর্ডার করব:

-135, -76, 164

তারপরে আমি আবার বাম দিকে ডানদিকে আরও স্থানাঙ্ক যুক্ত করব: -135 + 360 = 225

-135, -76, 164, 225

এখন আমরা স্থানাঙ্কগুলির মধ্যে ফাঁকগুলি গণনা করতে পারি:

-135 (59) -76 (240) 164 (61) 225
             .......

বৃহত্তম ব্যবধান (240) অবশ্যই ন্যূনতম বাউন্ডিং বাক্সের সীমানা হতে হবে, যে অংশটি বাক্সের অন্তর্গত নয় । বিন্দুযুক্ত রেখাটি বৃত্তের বৃহত্তম অংশটি আমরা বাদ দিতে পারি part আমাদের উদাহরণস্বরূপ এর অর্থ, সীমানা বাক্সটি 164 দিয়ে শুরু হয়, -135 অন্তর্ভুক্ত এবং -76 এর সাথে শেষ হয়।


এটি আমার মনে হয় বেশিরভাগ ক্ষেত্রে কাজ করে। তবে অতিরিক্ত দ্রাঘিমাংশের সাথে আমার উদাহরণটি বিবেচনা করুন (+60) [পলিতে চতুর্থ বিন্দু হিসাবে]। এই ক্ষেত্রে আমি -180 থেকে 180 চাই your আপনার পদ্ধতিটি ব্যবহার করে, আমি 61 থেকে 180 এবং -76 থেকে -180 পেতে পারি।
প্রিস

@ প্রিস - সুতরাং আপনি দ্রাঘিমাংশ 180 / -180 চান (এটি সর্বোপরি একই পয়েন্ট), প্রতিটি ক্ষেত্রেই বক্সের অংশ হতে চান, এমনকি যদি এটি সবচেয়ে ছোটতম বক্স নাও হয়?
মার্টিনস্টোইক্লি

আমি মনে করি এখানে মূল পার্থক্য হ'ল পয়েন্টগুলি বহুভুজ গঠন করে। আমার সম্পাদনা দেখুন।
প্রিস

@ প্রিস - ওহ ভাল, এটা সত্যিই জটিল দেখাচ্ছে। এটি দুটি পয়েন্টের মধ্যে একটি প্রান্তের প্রতিটি বিন্দুর মতো যা শীর্ষবিন্দু হিসাবেও গণনা করা হয়।
মার্টিনস্টোইকেলি

1

গুগল ম্যাপস এপিআই দিয়ে জাভাস্ক্রিপ্টে এটি করা খুব সহজ। আপনি সেই API এর সাথে ক্লায়েন্ট-সাইড কীভাবে করবেন তা এখানে রয়েছে:

var bounds = new google.maps.LatLngBounds();

//Recursively loop through your coordinate list
    latLng = new google.maps.LatLng(<YourLat>, <YourLon>);
    bounds.extend(latLng);
//

extentBox = new google.maps.Rectangle({
    bounds: bounds,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35
});
extentBox.setMap(map);

আরে, উত্তরের জন্য ধন্যবাদ, তবে আমি কোনও এপিআই কল করার চেয়ে বা প্রকৃত সমাধান ব্যবহার না করে প্রকৃত পদ্ধতিটি সন্ধান করছি।
প্রিস

আপনি আমাকে সীমানা দিয়েছেন। এক্সটেন্ড পদ্ধতিটি, আমি এই সঠিক সমাধানটির সন্ধান করছিলাম, তাই ধন্যবাদ!
থমসন কমার

এই বহুভুজ দিয়ে কাজ করে? আমি আপনাকে আয়তক্ষেত্র ব্যবহার করে দেখছি।
ড্যানি জি

1

আমি মনে করি এটি করার কোনও উপায় আমি খুঁজে পেয়েছি। আমার প্রাথমিক বাস্তবায়ন কাজ করে তবে আমি নিশ্চিত নই যে আমি মিস করেছি এমন কোনও প্রান্তের মামলা আছে কিনা। যদি এই সমাধানে কোনও সমস্যা থাকে তবে দয়া করে এটি উল্লেখ করুন।

প্রদত্ত যে আমি বহুভুজের জন্য লম্বা / ল্যাট রেঞ্জগুলি অর্জনের সাথে সম্পর্কিত যা কেবলমাত্র পয়েন্টগুলির মধ্যে অন্তর্ভুক্ত নয়, সমস্যাটি চেষ্টা করার একটি উপায় আসলে শুরু থেকে শেষ হওয়া নির্দেশিত স্থানাঙ্কগুলির সেট বরাবর 'হাঁটাচলা' করা। আপনি পৃথিবীর কেন্দ্রের তুলনায় ঘড়ির কাঁটা এবং ঘড়ির কাঁটার বিপরীতে কতটা দূরে ভ্রমণ করেছেন তা সূচনা পয়েন্ট দিয়েছিলেন এবং বহুভুজটি সম্পূর্ণ না হওয়া পর্যন্ত আপনি চালিয়ে যান:

এখানে চিত্র বর্ণনা লিখুন

আপনি আপনার প্রারম্ভিক বিন্দু থেকে CW এবং CCW কতটা দূরে ভ্রমণ করতে পারেন তার একটি পরিসীমা পেতে পারেন ... এটি আপনাকে সাধারণ ক্ষেত্রে (চিত্রের বামে) সঠিক সীমানা অর্জন করার জন্য পর্যাপ্ত তথ্য দেয়। যে ক্ষেত্রে বহুভুজ পুরো কেন্দ্র জুড়ে পুরোপুরি ঘুরে যায় বা কাটা যায়, সেখানে ভ্রমণের প্রত্যাবর্তিত কোণটি 360 ডিগ্রি হবে।

যখন বহুভুজটি পৃথিবীর উপরিভাগকে কাটাবার পরিবর্তে 'আলিঙ্গন' করে থাকে তখন এই পদ্ধতিটিও কাজ করে। সুতরাং যদি আপনার কাছে বহুভুজ দেখা যায় যে কোনও ব্যক্তি টরন্টো (দীর্ঘ: -79) থেকে লন্ডন (দীর্ঘ: -5) থেকে টোকিও (দীর্ঘ: 139) এবং পিছনে (একই ক্রমে) পৃথিবীর উপরিভাগে ভ্রমণ করছেন, তবে আপনি [-79 থেকে 139] সীমাটি পান।

যদি বহুভুজটি কেন্দ্র জুড়ে কেটে যায় (+90 এবং -90 এ দুটি সংলগ্ন পয়েন্টগুলি কল্পনা করুন), আমি এটিকে একটি সম্পূর্ণ ঝাড়ু (360 ডিগ্রি) হিসাবে বিবেচনা করি যদিও আপনি যে কোনও পথে যেতে পারেন।

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