tianditu切片下載計(jì)算
目前互聯(lián)網(wǎng)上有各種各樣的地圖下載工具,可以下載切片、矢量等地圖數(shù)據(jù),地圖切片數(shù)據(jù)下載能夠直接進(jìn)行發(fā)布,或者拼接成地圖影像數(shù)據(jù),在平臺(tái)中加載并進(jìn)行處理,本文以tianditu的切片數(shù)據(jù)為樣例,如何進(jìn)行切片的行列號(hào)計(jì)算,請(qǐng)求對(duì)應(yīng)的切片數(shù)據(jù)。
tianditu經(jīng)緯度的切片地圖范圍為:[-180,-90,180,90],切片地圖的原點(diǎn)是-180,90,地圖級(jí)別從1開始,第一級(jí)別的地圖切片尺寸為橫向512px,縱向?yàn)?56px,由兩張256*256的切片組成,第1級(jí)地圖的分辨率為360/512,地圖每增加一級(jí),分辨率對(duì)應(yīng)縮小到上一級(jí)的1/2。切片序號(hào)的順序是從原點(diǎn)處開始的,越靠近地圖原點(diǎn),編號(hào)就越小。假如給定一個(gè)地圖的經(jīng)緯度范圍[xmin,ymin,xmax,ymax],地圖的第一級(jí)分辨率定義initResolution,initResolution=360/512,要獲取地圖切片的級(jí)別為level。
獲取地圖當(dāng)前縮放級(jí)別的最小行號(hào)和列號(hào):
列號(hào)= ((xmin- (-180)) / (initResolution/2^(level-1)))/256
行號(hào)=-1* ((ymax- 90) / (initResolution/2^(level-1))+0.5)/256
獲取地圖當(dāng)前縮放級(jí)別的最大行號(hào)和列號(hào):
列號(hào)= ((xmax- (-180)) / (initResolution/2^(level-1))+0.5)/256
行號(hào)=-1* ((ymin- 90) / (initResolution/2^(level-1)))/256
算式中的256分別為切片的寬高像素值,如有不同,需要根據(jù)切片實(shí)際尺寸計(jì)算,坐標(biāo)計(jì)算的時(shí)候,需要減去中心點(diǎn)的值,再根據(jù)級(jí)別計(jì)算當(dāng)前級(jí)別的分辨率。最小、最大行列號(hào)計(jì)算完成后,根據(jù)地圖的基礎(chǔ)url,加上縮放級(jí)別、行列號(hào),就能使用http協(xié)議進(jìn)行地圖切片的下載,按照規(guī)則保存成圖片即可進(jìn)行下載。球面墨卡托的,需要將坐標(biāo)轉(zhuǎn)換成墨卡托,按照以上步驟進(jìn)行計(jì)算下載,墨卡托的在線電子地圖占比還是很高的,高德、百度、騰訊等都是。