कैसे एक वेब व्यापारी टाइल georeference सही ढंग से गदल का उपयोग करने के लिए?


16

एक उदाहरण के रूप में मैं निम्नलिखित टाइल http://a.tile.openstreetmap.org/3/4/2.png ले लूंगा और इसे "4_2.png" के रूप में सहेजूंगा।

इस टाइल के WGS84 निर्देशांक की गणना की जा सकती है या संबंधित टाइल पर क्लिक करके वहां पढ़ा जा सकता है :

0 66.51326044311185 45 40.97989806962013 (West North East South)

टाइल को सही ढंग से कैसे सुरक्षित करें (एक भू-आकृति या किसी अन्य भू-आकृति प्रारूप को उत्पन्न करने के लिए गदल का उपयोग) ताकि:

  • बिटमैप को स्ट्रेच करने की आवश्यकता नहीं है (= जियोटीफ़ में पिक्सेल मूल बिटमैप के समान हैं)
  • परिणामी छवि को जीआईएस दर्शक / संपादक में सही स्थान पर खोला जाएगा (उदाहरण के लिए टाटुकिस फ्री व्यूअर में )?

(मेरे सवाल को स्पष्ट करने और मेरे निष्कर्ष को शामिल करने के लिए 19 सितंबर 2011 को संपादित)


मेरा निष्कर्ष:

मैं पहली बार हालांकि तीसरा विचार (नीचे देखें) सही था। मैंने एक जीआईएस व्यूअर में जियोटीफ़ को खोला और जो मैंने उम्मीद की थी उसके साथ प्रदर्शित निर्देशांक की तुलना की। दूसरे विचार से जियोटीफ़ को लगता है कि उत्तर की ओर 2 पिक्सेल स्थानांतरित किए जाएंगे। यही कारण है कि मैंने विचार 3 (या 4) को सही माना।
लेकिन अगर आप बहुत अधिक ज़ूम स्तर पर टाइल के साथ प्रयास करते हैं, तो विचार 3 से जियोटीफ़ निश्चित रूप से दक्षिण की ओर स्थानांतरित हो जाता है। यह जूम स्तर के एक टाइल पर निर्देशांक की तुलना करने के लिए मूर्खतापूर्ण था। 3. ऐसे ज़ूम स्तर पर देश की सीमाएं सरल होती हैं ताकि तुलना अच्छे परिणाम न दे सके।

डैन एस। सही था, टाइल की छवि पहले से ही ईपीएसजी: 3857 में है। दूसरा विचार तब सही होता है (और उच्च ज़ूम स्तरों पर भी अच्छा परिणाम देता है)


पहला विचार: EPSG: 4326
WGS84 निर्देशांक के लिए EPSG कोड EPSG: 4326 है । तो मैं बस का उपयोग कर के रूप में geotif टाइल georefence को WGS84 निर्देशांक का उपयोग gdal_translate :

gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 66.51326044311185 45 40.97989806962013 -a_srs EPSG:4326 4_2.png t4326.tif

परिणामी नक्शा सही जगह पर प्रदर्शित होता है, लेकिन मुझे डर है कि प्रक्षेपण सही नहीं है और टाइल के बीच में एक बदलाव हो सकता है। लंबे समय तक यह जांचने की कोशिश करने के बाद कि नक्शे को गाल्डवैप के साथ फिर से खारिज करके, मैंने ग्लोबल मैपर का एक डेमो संस्करण डाउनलोड किया और यह मामला लगता है (विचार 3 के अनुसार सीमाएं लेकिन टाइल के अंदर एक बदलाव)। ईपीएसजी: 4326 निर्देशांक का उपयोग करने में सक्षम होने के लिए छवि को स्ट्रेच किया जाना चाहिए।


दूसरा विचार: EPSG: 3857
यह टाइल एक "वेब मर्चेंट" प्रोजेक्शन (उपनाम गूगल मैप प्रोजेक्शन) का उपयोग करती है, जिसमें अब एक EPSG कोड है: EPSG: 3857 (अन्य उपनाम EPSG: 900913)। मैं बस निर्देशांक को gdaltransform का उपयोग करके परिवर्तित करता हूं :

gdaltransform -s_srs EPSG:4326 -t_srs EPSG:3857
0 66.51326044311185
0 10018754.1713946 0
45 40.97989806962013
5009377.08569731 5009377.08569731 0

मीटर में मेरे निर्देशांक हैं:

0 10018754.1713946 5009377.08569731 5009377.08569731 (West North East South)

अब मैं भू-आकृति उत्पन्न करने के लिए gdal_translate का उपयोग कर सकता हूं:

gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 10018754.1713946 5009377.08569731 5009377.08569731 -a_srs EPSG:3857 4_2.png t3857.tif

मेरी धारणा यह है कि यह सही नहीं है क्योंकि नक्शे की सीमाएं उत्तर की ओर स्थानांतरित हो जाती हैं। यह सही विचार प्रतीत होता है।


तीसरा विचार: ईपीएसजी: 3857 ईपीएसजी: 4055 के माध्यम से
मैंने पढ़ा कि "वेब मर्चेंट" WGS84 निर्देशांक का उपयोग करता है, लेकिन उन पर विचार करें जैसे कि वे गोलाकार निर्देशांक हैं। एक जियोडेटिक और एक जियोसेंट्रिक अक्षांश (अक्षांश के बारे में विकिपीडिया देखें ) के बीच अंतर के कारण , अक्षांश मान एक दीर्घवृत्त या एक गोले पर समान नहीं होंगे। मैंने पाया कि EPSG: 4055 WGS84 के आधार पर गोलाकार निर्देशांक के लिए कोड है।

निर्देशांक को EPSG में परिवर्तित करना: 4055:

gdaltransform -s_srs EPSG:4326 -t_srs EPSG:4055
0 66.51326044311185
0 66.3722684317026 -17964.0621483233
45 40.97989806962013
45 40.7894557844857 -9152.84527519904

तत्संबंधी गोलाकार निर्देशांक तब हैं:

0 66.3722684317026 45 40.7894557844857 (West North East South)

फिर मैं ऐसा करता हूं जैसे कि वे जहां अभी भी दीर्घवृत्त (EPSG: 4326) पर समन्वय करते हैं और उन्हें वेब दया में परिवर्तित करते हैं:

gdaltransform -s_srs EPSG:4326 -t_srs EPSG:3857
0 66.3722684317026
0 9979483.26733298 0
45 40.7894557844857
5009377.08569731 4981335.86590183 0

परिणामी निर्देशांक एक विचार 2 से भिन्न होते हैं:

0 9979483.26733298 5009377.08569731 4981335.86590183 (West North East South)

अब मुझे सिर्फ निर्देशांक को मानचित्र में लिखना है:

gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 9979483.26733298 5009377.08569731 4981335.86590183 -a_srs EPSG:3857 4_2.png t3857_through_4055.tif

यह तीसरा विचार सर्वोत्तम परिणाम देता प्रतीत होता है। लेकिन मुझे यकीन नहीं है कि यह सही है। यदि विचार 3 सही है, तो क्या इस ऑपरेशन को एक चरण में करने के लिए एक ईपीएसजी कोड है?


चौथा विचार: EPSG: 3857 के माध्यम से Towgs84 = 0,0,0,0,0,0,0

गदल (जाहिरा तौर पर ईपीएसजी भी) ईपीएसजी को परिभाषित करता है: 3857 जैसे:

+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs

जबकि इस तरह spatialreference.org:

+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

अगर मैं spatialreference.org से परिभाषा का उपयोग करता हूं तो मुझे एक चरण में सही निर्देशांक मिला है (वैसे मुझे अभी भी नहीं लगता कि वे "सही" निर्देशांक हैं, लेकिन कम से कम वे विचार 3 के अनुसार उपनाम हैं):

gdaltransform -s_srs EPSG:4326 -t_srs "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
0 66.51326044311185
0 9979483.26733298 -17964.0621483233
45 40.97989806962013
5009377.08569731 4981335.86590183 -9152.84527519904

EPSG: 3857 की परिभाषाओं में ऐसा अंतर क्यों है?

जवाबों:


11

टाइल की छवि ईपीएसजी में पहले से ही है: 3857। इसे संदर्भित करने के लिए केवल एक विश्व फ़ाइल क्यों नहीं बनाई गई?

http://en.wikipedia.org/wiki/World_file

ज़ूम 1 पर N. America को शामिल करने वाली टाइल के लिए, आप निम्न विश्वव्यापी सामग्री देख रहे होंगे:

78271.517
0
0
-78271.517
-19998372.6
19998372.6

वे नंबर कहां से आए:

  • पंक्ति 1: दुनिया में एक छवि पिक्सेल की चौड़ाई निर्देशांक = 20037508.342789244 मीटर / 256 पिक्सेल है।
  • पंक्ति 2 और 3: रोटेशन, इसलिए एन / ए।
  • पंक्ति 4: दुनिया में एक छवि पिक्सेल की ऊंचाई निर्देशांक है। पंक्ति 1 के समान लेकिन नकारात्मक है, क्योंकि छवि फ़ाइलों में y समन्वय प्रणाली में रहते हुए 'डाउन' से मेल खाता है, जबकि y बढ़ती 'अप' से मेल खाती है।
  • पंक्ति 5: X दुनिया के शीर्ष-बाएँ पिक्सेल के केंद्र के निर्देशांक में समन्वय करता है। यह -20037508.342789244 है, जैसा कि टाइल्स ने ला कार्टे लिंक द्वारा बताया है, साथ ही इसे केंद्र में लाने के लिए एक पिक्सेल का 1/2 भी।
  • पंक्ति 6: डिट्टो, केवल Y शेष शीर्ष का समन्वय करता है।

GDAL को आपकी विश्वस्तरीय (png के लिए .pg) लेने की इच्छा है; आपको अभी भी इसे EPSG: 3857 कमांड लाइन पर बताना होगा।

(ध्यान दें: यह परीक्षण करने के लिए समय नहीं था, इसलिए यह कफ से दूर है ... लेकिन उम्मीद है कि पहली कोशिश पर सही हो;);


धन्यवाद और देर से जवाब के लिए खेद है। लेकिन वास्तव में मुझे लगता है कि यह मेरे दूसरे विचार के समान होगा, जहां gdaltransform वास्तव में केवल छवि को जियोट्रेंस करने के लिए उपयोग किया जाता है।
नाम

आप ईपीएसजी: 3857 में पहले से ही टाइल की छवि के बारे में सही थे। समाधान वास्तव में केवल EPSG: 3857 का उपयोग करने के लिए था। यह तरीका है जो मैंने परिणामों की जांच करने के लिए इस्तेमाल किया जो गलत था।
नाम

0

वेब पर उपयोग की जाने वाली वैश्विक टाइलों की पीढ़ी के लिए आवश्यक कार्य। इसमें निम्न समन्वयन रूपांतरण लागू करने वाली कक्षाएं शामिल हैं:

  • GlobalMercator ( EPSG: 900913 = EPSG: 3785 पर आधारित ) Google मैप्स, याहू मैप्स, माइक्रोसॉफ्ट बिंग मैप्स टाइल्स के लिए

  • GlobalLeodetic (EPSG पर आधारित: 4326) OpenLayers बेस मैप और Google अर्थ संगत टाइलों के लिए

http://svn.osgeo.org/gdal/sandbox/klokan/gdal2tiles.py


धन्यवाद, लेकिन यह मेरे सवाल का जवाब नहीं है। मैं टाइलें पैदा नहीं करना चाहता। मैं जानना चाहता हूं कि टाइलों की सही जियोफेरेंसिंग क्या है / क्या होगी।
नाम 8

मैंने किया था "अगर यह सही है, क्या एक ऑपरेशन में ईपीएसजी कोड एक चरण में करना है?" 900913 का समर्थन करता: EPSG उत्तर
Mapperz

आपने नहीं किया: ईपीएसजी: 900913 ईपीएसजी: 3857 (या ईपीएसजी: 3785 की तरह) काम करता है और एक कदम में ऑपरेशन करने की अनुमति नहीं देता है, फिर भी आपको ईपीएसजी: 4055 पर जाना होगा। इसके अलावा मैंने पहले ही ईपीएसजी: 900913 को ईपीएसजी के लिए एक उपनाम के रूप में उल्लेख किया था: 3857 मेरे मूल प्रश्न में।
नाम

0

चौथे विचारों में मेरे द्वितीयक प्रश्न के बारे में: ईपीएसजी की परिभाषाओं में ऐसा अंतर क्यों है: 3857 की परिभाषा गदल में और spatialreference.org पर :

मुख्य अंतर यह है कि गदल "+ nadgrids = @ null" और स्थानिक उपयोग करता है "+ Towgs84 = 0,0,0,0,0,0,0"। के अनुसार प्रलेखन या PROJ.4 प्रारूप दोनों पैरामीटर गृहीत रूपांतरण के लिए उपयोग किया जाता है। मुझे प्रोज 4 की सूची में Mikael Rittri की एक दिलचस्प टिप्पणी मिली :

"The +to definition you suggest is not correct for WGS84 Web Mercator, though.
This is because the datum shift you use, 

   +towgs84=0,0,0,0,0,0,0

is not the same as unmodified lat/long, or "without any datum shift" as you say.
It means "no datum shift" only if the +from and +to definitions use the same ellipsoid,
and in your case the +from definition uses the WGS84 ellipsoid, while the +to definition
uses a sphere instead.  

So, you have to use a trick: use 

   +nadgrids=@null 

instead."

"+ Towgs84 = 0,0,0,0,0,0,0" का उपयोग सही या कम से कम केवल विशिष्ट परिस्थितियों में नहीं लगता है।

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