मैप पर पिक्सल के लिए देशांतर / अक्षांश परिवर्तित करें


11

मेरा यहां से नक्शा है । मैं मानचित्र पर पिक्सल में मनमाने ढंग से लोन / लाॅट पेयर को परिवर्तित करने में सक्षम होना चाहता हूं (रिवर्स रूपांतरण करने की क्षमता भी)। नक्शे .tfw फ़ाइल और प्रक्षेपण जानकारी के साथ आते हैं, यहाँ यह है:

0.02222222222222 
0.00000000000000 
0.00000000000000 
-0.02222222222222 
-180.00000000000000 
90.00000000000000

और प्रक्षेपण जानकारी:

Projection: Plate Carree aka Geographic or "LatLong"
Earth ellipsoid: Sphere, radius 6370997 m
Datum: WGS84
Extent: 180 West to 180 East, 90 North to 90 South
Size: 16,200 height samples wide x 8,100 high
Resolution: 2.47 km/pixel

मैं कार्टोग्राफी से संबंधित सामानों के लिए पूरी तरह से नया हूं, और जहां तक ​​मुझे लगा है कि मुझे सबसे पहले डब्ल्यूजीएस84 (लोन / लाॅट पेयर) से जियोग्राफिक प्रोजेक्शन (वे एक ही नहीं हैं?) में परिवर्तन करना चाहिए। यह मुझे लगता है कि वे समान हैं, वास्तव में, लेकिन ऊपर प्रक्षेपण जानकारी में त्रिज्या 6370997 है और spatialreference.com पृष्ठ से अलग है जो मुझे प्लेट कैरी प्रक्षेपण के लिए मिला था। वैसे भी, मैंने पाया DotSpatial.Projections पुस्तकालय मेरे लिए यह कर सकता है, निम्न कोड के साथ:

    var kievCoordinates = new[] { 50.4546600, 30.5238000 };
    var z = new[] { 1.0 };

    var wgs84 = KnownCoordinateSystems.Geographic.World.WGS1984;
    var dest = new ProjectionInfo();
    dest.ParseEsriString(
        "PROJCS[\"WGS 84 / Plate Carree (deprecated)\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Equidistant_Cylindrical\"],PARAMETER[\"central_meridian\",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]");

    Reproject.ReprojectPoints(kievCoordinates, z, wgs84, dest, 0, 1);

और फिर मुझे विश्व फ़ाइल का उपयोग करके मानचित्र पर पिक्सल के परिणामस्वरूप निर्देशांक का अनुवाद करना होगा। मैं निम्नलिखित सूत्र से अवगत हूं:

विकिपीडिया छवि

लेकिन ऐसा लगता है कि विश्व फ़ाइल में डिग्री नहीं मीटर हैं और मुझे नहीं पता कि उनके साथ क्या करना है। आम तौर पर, क्या मैं सही चीजें कर रहा हूं? या अधिक आसान तरीका है, मेरा डेटा दिया गया है?


1
विश्व फ़ाइल के आधार पर, रेखापुंज अक्षांश-देशांतर और इकाइयों के रूप में डिग्री का उपयोग कर रहा है। कोशिका का आकार 0.0222 डिग्री है। इसे कभी-कभी छद्म प्लेट कैरी के रूप में जाना जाता है। प्लेट कैरी पैमाने और मूल्यों को मीटर में परिवर्तित करेगा। डेटम का मिश्रण भी WGS84 कहा जाता है, लेकिन त्रिज्या = 6370997 के साथ एक गोले का उल्लेख किया गया है। WKID का उपयोग करने की कोशिश कर रहा है: 4326।
mkennedy

@mkennedy मुझे लगता है कि विश्व फ़ाइल में लागू किया गया फॉर्मूला कुछ भी सार्थक नहीं होगा क्योंकि इसे मीटर के लिए डिज़ाइन किया गया था? मैं यह भी नहीं जानता और किसी भी परिणाम के बिना गुगली हुई कि WKID: 4326 का क्या मतलब है।
दिमित्री मरचुक

जवाबों:


6

निर्देशांक के बीच / से / पिक्सेल स्थितियों के बीच कोई परिवर्तन नहीं है, इस तरह: हम मानते हैं कि px, py आपके नक्शे में एक पिक्सेल स्थिति है, जबकि जियॉक्स और जियो वास्तविक विश्व निर्देशांक हैं। हमारे पास xOff, yfff, tfw से लिया गया है, -180, 90 प्लस xsize और ysize के साथ, 0.02222222222222, -0.022222222222 के साथ

pix2coord(px,py)
    geox = xOff + (px * xsize)
    geoy = yOff + (py * ysize)

coord2pix(geox, geoy)
    px = (geox - xOff) / xsize 
    py = (geoy - yOff) / ysize

ऊपर दिए गए दो छद्म कार्य हमें दिए गए पिक्सेल स्थिति के लिए जियोलोकेशन (जियॉक्स, जॉय) को बताते हैं, और, मुझे लगता है कि आपने जो दिया है, वह किसी दिए गए भू-स्थान के लिए पिक्सेल स्थिति है। यह केवल संभव है, क्योंकि "प्लेट कैरी" भौगोलिक डिग्री और अक्षांश के साथ व्यवहार करता है क्योंकि एक विमान पर मीट्रिक निर्देशांक (एक आयताकार समन्वय प्रणाली के भीतर)। यदि आप पृथ्वी के स्थूल भाग को खींचते हैं, तो आपको समान आकार के वर्ग मिलेंगे (और यही आपके नक्शे चित्र को पसंद करते हैं)। अपनी त्रुटियों को संपादित करने के बाद, अब मुझे लोन / लाॅट (50.4546600, 30.5238000) मिलता है, जो मुझे मिलता है (10370.459803704598, 2676.42902676429)। यदि आप पिक्सेल प्रेरित करता है, तो इसे पूर्णांक में लिखें।


px = (geox + xOff) / xsize, आपके उदाहरण के लिए (50.4546600 + (-180)) / 0.02222222222222जो नकारात्मक और मोटे तौर पर बराबर होता है 5830। जो नहीं है 2113.3936363636362। कृपया, आगे बताएं, या उत्तर को सही करें।
दिमित्री मरचुक

मूल कोड कुछ निर्भरता के साथ जावास्क्रिप्ट में था, मैं जांच करूँगा ...
एंड्रियास मुलर

मैंने ऊपर कोड और पाठ बदल दिया है, क्योंकि मुझे एक जावास्क्रिप्ट से इसे कॉपी करने में त्रुटि हुई थी।
एंड्रियास मुलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.