আরকিজিআইএস কীভাবে একটি অ-সামঞ্জস্যপূর্ণ প্রক্ষেপণের সাথে দুটি পয়েন্টের মধ্যকার দূরত্বটি গণনা করে?


10

এটি আমার আগেরটির একটি ফলো-আপ প্রশ্ন, আপনি কি সিস্টেমের অনুমান সম্পর্কে সমন্বয় সম্পর্কে কিছু ভাল-লিখিত সূচনা লেখার পরামর্শ দিতে পারেন?


আসুন ধরে নেওয়া যাক আমি CH1903 মানচিত্রের প্রজেকশনটির সাথে কাজ করছি, যা আমি জানি সকলের জন্য রীতিমতো, তবে সামঞ্জস্যপূর্ণ নয়। অর্থ, কোণ (আকৃতি) সংরক্ষণ করা হয়েছে, তবে অঞ্চল, দূরত্ব বা স্কেল নয়। (কমপক্ষে এগুলি ঠিক সংরক্ষণ করা হয়নি )। এ পর্যন্ত সব ঠিকই.

আমি এখন দুটি পয়েন্টের মধ্যে দূরত্ব গণনা করতে চাইলে আর্কজিআইএস কী ধরণের গণনা সম্পাদন করে তা ভাবছি। আরকোবজেক্টসে আমি IProximityOperatorইন্টারফেসটি নীচে ব্যবহার করতে পারলাম :

IPoint a = ...,
       b = ...;

double distance = ((IProximityOperator)a).ReturnDistance(b);

প্রশ্ন: আমি যখন এমন একটি রেফারেন্স সিস্টেম নিয়ে কাজ করছি যা সঠিকভাবে দূরত্বগুলি সংরক্ষণ করে না, যখন আমি দুটি পয়েন্টের (যেমন উপরে দেখানো হয়েছে) দূরত্বের জন্য এটি জিজ্ঞাসা করব তখন আর্কজিআইএস কী করবে?

  • দূরত্বটি পেতে কি কেবল পাইথাগোরিয়ান গণিতগুলি (একটি 2 + বি 2 = সি 2 ) করা যায়, যার অর্থ প্রত্যাবর্তন অনুমতি দেয় ঠিক ততটাই সঠিক হবে?

  • অথবা আরও নির্ভুল দূরত্ব পেতে এটি কিছু জটিল-পুনঃ-প্রক্ষেপণের মতো কিছু করবে?

( একই প্রশ্ন, তবে আরও সাধারণভাবে: একবার জ্যামিতিগুলি অনুমান করা হয়ে গেলে, আর্কজিআইএস কি ইউক্যালিডিয়ান স্পেসে সমস্ত গণনা সম্পাদন করে, বা ব্যবহৃত মানচিত্রের অভিক্ষেপগুলি এখনও দূরত্ব, কোণ, অঞ্চল ইত্যাদি গণনাগুলিকে প্রভাবিত করে?)


2
দয়া করে আপনার আসলটি পরিবর্তনের পরিবর্তে একটি নতুন প্রশ্ন তৈরি করুন। অন্যথায়, আপনি এই সাইটের সমস্ত প্রক্রিয়াটি নষ্ট করে দিচ্ছেন: যখন এক থ্রেডে দুই বা ততোধিক প্রশ্ন খেলতে থাকে তখন রেটিং বলতে কী বোঝায়? একটি উত্তরকে সঠিক হিসাবে চিহ্নিত করার অর্থ কী? ইত্যাদি
হুবুহু

1
@ হুবার: যদিও এই থ্রেডে যা কিছু লেখা হয়েছে তা এখনও ডাব্লুআরটি-র মূল প্রশ্নটি নিয়ে প্রশ্ন করা হয়েছে, আমি সম্মত হই যে এখানে এখন দুটি সত্যই জিজ্ঞাসা করা হয়েছে। এখনই এটি পরিবর্তন করতে খুব দেরি হয়ে গেছে, তবে পরবর্তী সময়ের জন্য আপনার পরামর্শটি মাথায় রাখবে।
stakx

উত্তর:


10

আপনি যদি জিওডাসিক দূরত্বের কম্পিউটিংয়ের একটি স্থিতিশীল পদ্ধতি চান তবে আমি ইএসআরআই এর প্রজেকশন ইঞ্জিনের জন্য রিচি কারমাইকেলের মোড়কের প্রস্তাব দিই ।

আপডেট: আমি রিচির কোডটি Vista64 এ আরকিজিআইএস 10.0 দিয়ে সবেমাত্র চেষ্টা করেছি এবং কল করার পরে একটি ব্যতিক্রম পেয়েছি LoadLibrary। আমি আরও পরে এটি দেখতে হবে।

আপাতত যদিও, অন্য উত্তরের মন্তব্যে প্রশ্নের জবাবে কিছু কোড এখানে।

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

private void Test()
{
    IPoint p1 = new PointClass();
    p1.PutCoords(-98.0, 28.0);

    IPoint p2 = new PointClass();
    p2.PutCoords(-78.0, 28.0);

    Debug.Print("Euclidian Distance {0}", EuclidianDistance(p1, p2));
    Debug.Print("Distance with no spatialref {0}", GetDistance(p1, p2));

    ISpatialReferenceFactory srf = new SpatialReferenceEnvironmentClass();
    IGeographicCoordinateSystem gcs =
    srf.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

    p1.SpatialReference = gcs;
    p2.SpatialReference = gcs;

    Debug.Print("Distance with spatialref {0}", GetDistance(p1, p2));
    Debug.Print("Great Circle Distance {0}", GreatCircleDist(p1, p2));

}
private double GetDistance(IPoint p1, IPoint p2)
{
    return ((IProximityOperator)p1).ReturnDistance(p2);
}

private double EuclidianDistance(IPoint p1, IPoint p2)
{
    return Math.Sqrt(Math.Pow((p2.X - p1.X),2.0) + Math.Pow((p2.Y - p1.Y), 2.0));
}

private double GreatCircleDist(IPoint p1, IPoint p2)
{
    ISpatialReferenceFactory srf = new SpatialReferenceEnvironmentClass();
    IProjectedCoordinateSystem pcs =
    srf.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_WGS1984N_PoleAziEqui);
    pcs.set_CentralMeridian(true, p1.X);
    ((IProjectedCoordinateSystem2)pcs).LatitudeOfOrigin = p1.Y;
    p1.SpatialReference = pcs.GeographicCoordinateSystem;
    p1.Project(pcs);
    p2.SpatialReference = pcs.GeographicCoordinateSystem;
    p2.Project(pcs);
    return EuclidianDistance(p1, p2);
}

এখানে ফলাফল:

Euclidian Distance 20
Distance with no spatialref 20
Distance with spatialref 20
Great Circle Distance 1965015.61318737

আমি মনে করি এটি প্রজেকশন ইঞ্জিন dll (pe.dll) এর বিপরীতে পরীক্ষা করা আকর্ষণীয় হবে। আমি যদি কখনও রিচির কোডটি কাজ করতে পাই তবে ফলাফল পোস্ট করবে।

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


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

9

আরকজিআইএস 10-তে, আইজিওমিট্রি সার্ভার 2 দেখুন যা এখন getDistanceGeodesic (দুটি জ্যামিতির মধ্যে জিওডেসিক দূরত্ব), getLengthsGeodesic (প্রতিটি পললাইনের দৈর্ঘ্যের দৈর্ঘ্য ফিরিয়ে দাও), এবং DensifyGeodesic (উল্লম্বের সাথে সংযোগকারী পয়েন্টগুলি প্লিট করে একটি পললাইনকে ঘনত্বযুক্ত করে), আইপোলিপি ব্যবহার করে : জিওডাসিকডেনসিফাই) পদ্ধতি।

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আর্কজিআইএস এখনও বেশিরভাগ প্ল্যানার গণনা ব্যবহার করে।

মেলিতা কেনেডি


অন্যান্য উত্তরের উপর কিছু মন্তব্য (সরাসরি মন্তব্য করার জন্য এখনও যথেষ্ট প্রতিনিধি নয়!)।

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

আমি pe.dll এর জিওডেসিক ফাংশনগুলির বিরুদ্ধে ফলাফলগুলি পরীক্ষা করেছিলাম এবং এটি মেলে। দেখে মনে হচ্ছে রিখির অ্যাপটি কোনও গোলক ব্যবহার করছে, তাই এটি তার পরীক্ষার প্রয়োগে দুর্দান্ত বৃত্তের দূরত্ব / স্থানাঙ্কগুলি ফিরিয়ে দিচ্ছে। এজন্য ফলাফল মেলে না। আমি ব্যাসার্ধের মানগুলি চিনতে পারি নি; আমি মনে করি এটি সম্পর্কে তাঁর সাথে আমার কথা বলা দরকার!


2
মেলিতা - তোমাকে এখানে দেখে খুব ভাল লাগছে!
কर्क কুইকেনডাল

1
আমি সম্মত, জাহাজে স্বাগতম!
ম্যাট উইলকি

8

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

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


@ শুভ: উত্তর দেওয়ার জন্য ধন্যবাদ। বিষয়ে : প্রথম অনুচ্ছেদ পারে আমি মূর্তিযুক্ত ArcGIS দেখতে যে CH1903 মানচিত্র অভিক্ষেপ (যা বেসেল 1841 উপবৃত্ত ব্যবহার করে) ব্যবহার করা হয়, এবং তারপর পয়েন্ট উপাত্ত মাধ্যমে যে উপবৃত্ত সম্মুখের ব্যাক, এবং প্রকল্প তারপর উপবৃত্ত করবেন দূরত্ব হিসাব। আপনার উত্তর থেকে আমি গ্রহণ করি যে আর্কজিআইএস সব কিছুই করবে না এবং গণনা করতে ইউক্লিডিয়ান এক্সওয়াই স্পেসে থাকবে। (অন্যান্য জিআইএস সফ্টওয়্যার সম্পর্কে কীভাবে?) - ২ য় অনুচ্ছেদ: আপনি অবশ্যই সঠিক, এই বিষয়টি স্পষ্ট করার জন্য ধন্যবাদ thanks
stakx

পয়েন্ট অবজেক্টস যদি কোনও প্রজেকশনের রেফারেন্স বজায় রাখে তবেই একটি লুকানো পুনরায় প্রত্যাখ্যান প্রক্রিয়া সম্ভব। আমি বিশ্বাস করি না তারা করে।
হোবার

@ হুইবার: প্রজেকশনের জন্য ব্যবহৃত এলিপসয়েডটি কী জানা (আরও সঠিক গণনার জন্য) যথেষ্ট হবে? আফাইক, আর্কজিআইএস প্রতিটি বৈশিষ্ট্য বর্গ (ডেটা স্তর) এর সাথে ব্যবহৃত প্রক্ষেপণের একটি রেফারেন্স সঞ্চয় করে।
stakx

1
আসলে আইপয়েন্ট, যা আইজমিট্রি থেকে প্রাপ্ত, এর সম্পত্তি হিসাবে স্প্যাটিয়াল রেফারেন্স রয়েছে। help.arcgis.com/en/sdk/10.0/arcob پروژې_net/componenthelp/… তবে, আমি মনে করি না যে রিটার্নডাস্টেন্স এটি ব্যবহার করে। এটি পরিবর্তিত হয়েছে কিনা তা দেখার জন্য এটি পরীক্ষার পক্ষে মূল্যবান হতে পারে।
কर्क কুইকেনডাল

1
@ স্টাকএক্স আমি কোডটি অন্তর্ভুক্ত করার জন্য আমার উত্তর আপডেট করেছি যা দেখায় যে স্থানিক স্থান নির্ধারণের রিটার্নডেসনেসের কোনও প্রভাব নেই।
কर्क কুইকেনডাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.