Gdal2tiles से उत्पन्न व्यक्तिगत टाइल के लिए लैट लोन सीमा की गणना करें


16

मेरे पास एक से अधिक टाइल स्रोत हैं जो कि gdal2tiles के उपयोग से उत्पन्न होते हैं जिन्हें मैं उसी मानचित्र पर प्रस्तुत करना चाहता हूं। इसलिए एक टाइल पेश करते समय मुझे यह निर्धारित करने की आवश्यकता होती है कि किस स्रोत से इसे सेवा की जाए, सीमा के खिलाफ जांच की जाए।

किसी को पता है कि ज़ूम, एक्स और वाई पर आधारित एकल टाइल के लिए लट लाउंड की सीमा की गणना कैसे करें (gdal2tiles द्वारा उत्पन्न फ़ाइल संरचना से)? BTW: मैं Google मैप्स API v3 का उपयोग कर रहा हूं, यदि गणना में मदद करने के लिए एपीआई से कुछ कार्यक्षमता को कॉल करने की आवश्यकता है।

इसका कारण यह है कि मैं पूरी तरह से ज़ूम, एक्स और वाई तक सीमित हूं, क्योंकि टाइल्स को नक्शे पर केवल एक ओवरले द्वारा नहीं बुलाया जा रहा है, बल्कि कुछ कस्टम प्रिंट कार्यक्षमता भी है जो नक्शे के बाहर मुद्रण की अनुमति देता है।

जवाबों:


22

गणित में वर्णित है:

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

... कमांड लाइन उपयोगिता और एक ऑनलाइन प्रदर्शन के लिए स्रोत कोड सहित।

यह भी बहुत सरल गणित है:

function tile2long(x,z) { return (x/Math.pow(2,z)*360-180); }

function tile2lat(y,z) {
    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
    return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}

Y अक्ष में XYZ / Google बनाम TMS के बीच अंतर पर ध्यान दें।

Google मानचित्र API V3 आपको आवश्यक कार्य भी देता .fromPointToLatLng()है map.getProjection()


मैं उपरोक्त समाधान को समझने की कोशिश कर रहा हूं क्योंकि मुझे भी यही समस्या है। क्या आपको उपरोक्त समाधान से मतलब है, मुझे चाहिए 1. पहले x, y और ज़ूम को lat2 / टाइल (long2) और टाइल 2lat () का उपयोग कर ज़ूम करें। 2. सीमा बनाने के लिए चरण में बनाए गए lat / long का उपयोग करें? मैं इसे कैसे करूं?
विशाल

@Petr क्या आपके पास c ++ के लिए कुछ है?
माजिद होजति

यह टाइल के आकार को ध्यान में नहीं रखता है?
मुहम्मद उमर

@ पेट्र-प्राइड यह एक बिंदु के रूप में, मेरी जानकारी के अनुसार एक टाइल एक क्षेत्र या सतह है। क्या आप एक बाउंडिंग बॉक्स के लिए कोड प्रदान कर सकते हैं? अग्रिम में धन्यवाद।
हर्बर्ट

इस लेख से gist.github.com/tmcw/4954720 , TMS एक ही टाइल है, लेकिन पीछे की ओर अनुक्रमित है। यह रूपांतरण सूत्र है: Math.floor (Math.pow (2, z) - y - 1)
Haggai


0

यह मेरा काम कोड है:

गूगल छवि मानचित्र प्रकार के ओवरले का jsfiddle नमूना

jsfiddle गूगल ओवरले छवि का एक और नमूना

function tile2long(x,z) {

  return (x/Math.pow(2,z)*360-180);

}





function tile2lat(y,z) {

  var n=Math.PI-2*Math.PI*y/Math.pow(2,z);

  return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));

}





 var x = coord.x;

 var y = coord.y;

 var z = zoom;



 var NW_long = tile2long(x,z);



 var SW_long = tile2long(x,z);

 var SW_lat =  tile2lat(y+1,z);



 var NE_long = tile2long(x+1,z);

  var NE_lat =  tile2lat(y,z);







  var export_bbox = SW_long + ',' + SW_lat + ',' + NE_long + ',' + NE_lat;



     var url_param = '&format=png&size=256,256&transparent=true&f=image&bboxSR=4326&imageSR=4326';





   var url_layers =''





       var root_url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=';



     var tile_url = root_url + export_bbox + url_param + url_layers;

maptiler को coodinate नंबर और ज़ूम से bbox मिलता है

कैसे गूगल समन्वय संख्या की गणना करने के लिए ज़ूम, कन्वर्ट, लंबे समय तक आदि ....

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