溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用python實(shí)現(xiàn)osm切片計(jì)算

發(fā)布時(shí)間:2021-12-30 14:32:58 來源:億速云 閱讀:291 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“怎么用python實(shí)現(xiàn)osm切片計(jì)算”,在日常操作中,相信很多人在怎么用python實(shí)現(xiàn)osm切片計(jì)算問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用python實(shí)現(xiàn)osm切片計(jì)算”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

一般的地圖都是通過在后臺(tái)發(fā)布切片,前端的引擎讀取進(jìn)行展示,地圖切片有些是用經(jīng)緯度切的,有些是用谷歌的墨卡托切的,所以根據(jù)一定的坐標(biāo)范圍和縮放等級(jí),就能計(jì)算其中的切片橫縱順序,得到詳細(xì)的z(縮放)、x(橫向)、y(縱向)數(shù)字,再根據(jù)基礎(chǔ)的服務(wù)器url,就可以將本張切片下載到本地,多張切片合并成一張,賦予坐標(biāo)信息,就變成地圖影像了,一般的地圖下載工具也是按照這個(gè)原理進(jìn)行下載生成的。

OSM是一個(gè)開源開放的地圖,它的地圖切片是按照經(jīng)緯度切的,即EPSG:4326的,在經(jīng)緯度計(jì)算切片的時(shí)候,并不需要把坐標(biāo)轉(zhuǎn)換成web墨卡托的坐標(biāo),下邊分享一個(gè)根據(jù)經(jīng)緯度坐標(biāo)計(jì)算切片順序的代碼(python):

def deg2num(lat_deg, lon_deg, zoom):
   lat_rad = math.radians(lat_deg)
   n = 2.0 ** zoom
   xtile = int((lon_deg + 180.0) / 360.0 * n)
   ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n)
   return (xtile, ytile)

傳入經(jīng)緯度坐標(biāo)和縮放級(jí)別,就能找到坐標(biāo)是在哪張切片上,經(jīng)度方向是等分的,這個(gè)在計(jì)算的時(shí)候就比較簡(jiǎn)單,緯度是在高緯度的距離變窄,所以,要通過一個(gè)復(fù)雜的數(shù)學(xué)公式計(jì)算,等級(jí)越高,切片數(shù)量越多,下載的切片就越多,是按照平方的數(shù)量進(jìn)行增加的。

下載的切片坐標(biāo)范圍,并不一定是和傳入的坐標(biāo)范圍相同,所以,地圖下載器有時(shí)也是,合并的影像并不是傳入的四個(gè)范圍,這個(gè)在后期要有一定地圖裁切。

一張下載的切片,合并的時(shí)候可以使用gdal等類庫,這對(duì)合并和計(jì)算合并完成后的地圖四至有相當(dāng)方便的幫助。

怎么用python實(shí)現(xiàn)osm切片計(jì)算

到此,關(guān)于“怎么用python實(shí)現(xiàn)osm切片計(jì)算”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI