গুগল মানচিত্রে দুটি বহুভুজ ওভারল্যাপ করছে কিনা তা নির্ধারণ করা হচ্ছে?


12

আমি গুগল ম্যাপ এবং বহুভুজ নিয়ে কাজ করছি তবে আমাকে বৈধতা দিতে হবে যে বহুভুজ একে অপরকে ওভারল্যাপ করছে না।

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

যেকোনো পরামর্শ?


1
Github.com/tparkin/Google-Maps-Point-in-Polgon খুঁজে পেতে আমাকে প্রায় 10 সেকেন্ড সময় নিয়েছিল । তুমি কি কিছু চেষ্টা করেছ?
জন পাওয়েল

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

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

উত্তর:


8

জেএসফিডাল উদাহরণ

আমি একটি জেএসফিটাল তৈরি করেছি যা জাভাস্ক্রিপ্ট টপোলজি স্যুট (জেএসটিএস) (জেএসটিএস) লাইব্রেরি ব্যবহার করে আপনার সমস্যার সমাধান সমাধান করে ।

Explaination

এই পদ্ধতির দুটি পদক্ষেপ রয়েছে। প্রথম পদক্ষেপটি আপনার গুগল জ্যামিতিগুলিকে ওয়েলকান্ট টেক্সট (ডাব্লুকেটি) জ্যামিতি এক্সপ্রেশনগুলিতে রূপান্তর করে, যা একটি বহুল সমর্থিত বিন্যাস। দ্বিতীয় পদক্ষেপটি geometry.intersects()দুটি ডব্লিউকেটি জ্যামিতির জেএসটিএস তুলনা করতে জেএসটিএস ব্যবহার করে ।

এটি সত্যিই বুঝতে আপনার কাছে ডাব্লুকেটি-র একটি প্রাথমিক ধারণা থাকা দরকার। আপনার গুগল ম্যাপে বহুভুত জ্যামিতিগুলি বহুলভাবে সমর্থিত ফর্ম্যাট নয়, তাই আমি তাদের সাথে সাথে ডাব্লুকেটি জ্যামিতিতে রূপান্তর করি যাতে আমরা তাদের সাথে জেএসটিএসে কাজ করতে পারি।

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

// Pass in two Google Polygon objects.
// It returns two WellKnownText (WKT) geometry expressions.
// 
function UseWicketToGoFromGooglePolysToWKT( poly1, poly2 )
{
    var wicket = new Wkt.Wkt();

    wicket.fromObject(poly1);
    var wkt1 = wicket.write();

    wicket.fromObject(poly2);
    var wkt2 = wicket.write();

    return [wkt1, wkt2];
}

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

// Pass in two WKT geometry expressions.
// It performs a JSTS intersects() comparison.
// 
function UseJstsToTestForIntersection( wkt1, wkt2 )
{
    // Instantiate JSTS WKTReader and get two JSTS geometry objects
    var wktReader = new jsts.io.WKTReader();
    var geom1 = wktReader.read(wkt1);
    var geom2 = wktReader.read(wkt2);

    if (geom2.intersects(geom1)) {
      alert('intersection confirmed!');
    } else {
      alert('..no intersection.');
    }
}

আমি কীভাবে লাইব্রেরিগুলিকে ফ্লিডে যুক্ত করেছি

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

http://arthur-e.github.io/Wicket/wicket.js
http://arthur-e.github.io/Wicket/wicket-gmap3.js
http://bl.ocks.org/christophermanning/raw/4450188/javascript.util.min.js
http://bl.ocks.org/christophermanning/raw/4450188/jsts.min.js

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