日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

如何使用python批量下载-如何用Python批量下载卫星地图

發布時間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用python批量下载-如何用Python批量下载卫星地图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章是我17年寫的。

前言

作為城鄉規劃的學生,有時需要某一個城市片區的衛星地圖作為設計作業的底圖,地圖從何來?百度?高德?谷歌?但是它們都只提供了瀏覽的服務啊。市面上倒是有不少自動的地圖下載器。什么Bigemap啊、水經注啊、91衛圖,啥的,但是它們都不是完全免費的(免費版有水印),想要授權就要幫它們推廣或者花錢買。蛋疼。。。

然而作為會編程的人,怎么能讓這種事情難住?

網上有不少文章分析了地理坐標系、投影坐標系的原理,還有各大地圖網站瓦片的分割方式,也有提供下載的網址,只要把瓦片坐標系和縮放級別填到指定的位置,就可以下載到地圖的瓦片。

看了這些文章以后,就會理解網絡地圖的分片原理,并且知道在瀏覽器中,是可以看到這些瓦片的地址的,只要我們知道從經緯度到瓦片坐標的轉換方法,就可以在已知經緯度范圍的情況下,下載這一范圍內的地圖。

谷歌地圖

對于坐標偏移問題,國內的經緯度坐標在WGS-84的基礎上經過了一些偏移(不是單純的線性,但是在一定范圍內長度面積什么的還是不會變形的,不然國內地圖怎么導航?),也就是在高德等地圖上采集到的坐標并不是WGS-84的坐標,而是GCJ-02坐標。在參考文章中用的谷歌的源就是國內的源(.cn結尾嘛)。不過對于當底圖來看就夠用了,實測應該使用http://www.google.cn/maps/采集到的經緯度來進行下載前的坐標獲取。

難道瓦片坐標也進行了相應的偏移?

再次詳細試驗,發現gl參數決定了衛星圖是否會偏移。

假設不加這個參數,會按WGS-84來,會和路線圖有偏移(因為路線圖只有GCJ-02的版本)

加了這個參數(gl=CN)就會使衛星圖也變成GCJ-02。

也就是說,如果你使用www.google.cn/maps或者ditu.google.cn來獲取坐標,那么最后你還按照這個坐標進行瓦片的獲取,同時加上gl參數即可。如果你想按照WGS-84來獲取坐標,那么就訪問國際版的谷歌地圖

,獲取瓦片時不加gl參數就好了。

瓦片參數解析:

http://mt{index}.google.com/vt/lyrs={style}&hl=zh-CN&gl=CN&src=app&x={x}&y={y}&z={z}"

{index}為0到3,分別為谷歌的4個服務器,隨便取一個就行~

{style}為地圖的類型,比如衛星圖、路線圖什么的.

m:路線圖

t:地形圖

p:帶標簽的地形圖

s:衛星圖

y:帶標簽的衛星圖

h:標簽層(路名、地名等)

其中m路線圖和s衛星圖是我們想要的。

{x}{y}{z} 則分別是瓦片坐標的xy和縮放級別z,z取0-22。但是我測試發現衛星圖最大只能取到20。不過即使是路線圖,到20級也就足夠用了。

對于python3,可以用urllib.request庫進行圖片的下載,然后用PIL.Image庫(pillow)進行圖片的合并。

如果想下載快一些,還可以使用多線程。

高德地圖

高德地圖的坐標是GCJ-02坐標(國內的所有地圖都是,有的還進行了二次加偏)

至于怎么在高德地圖上看坐標:高德地圖怎么看經緯度

還是谷歌方便啊,直接地址欄就有,汗。。。。

高德的瓦片分割方式和谷歌的一樣。

這里是瓦片的下載網址:

http://wprd03.is.autonavi.com/appmaptile?style=7&x=427289&y=227618&z=19

經過我的測試

style=7是路線圖,6的話是衛星圖。其他就不知道了。

實際測試中style=8好像是單獨的路線層,背景為透明,結合ltype參數還有不同效果,這個以后可以慢慢摸索。我只下載最基本的圖,這里就不深入討論了。不過也基本夠用了。一般不也就要這兩個這嗎?

x和y自然就是瓦片的坐標,z自然是縮放級別了。高德的z取值范圍是[1,19]。不過衛星圖實測只能取到18。

wprd03想必是和谷歌一樣,有多個服務器提供服務。測試下來可以取到01 到 04。

也就是說,把同樣的xyz從谷歌地圖(中國版)填到高德里面,可以得到同一塊地方的瓦片!

百度地圖等

從資料看,百度的坐標在GCJ-02的基礎上二次加偏形成了BD-09。百度的瓦片分割方式也和高德谷歌不一樣,處理起來略麻煩,就不管了~~

騰訊地圖則是瓦片坐標原點在左下角,而谷歌在左上角。xy的輸入方式是進行一定的編碼。

好麻煩。。。感覺有倆就夠用了,其他的就不管了。

總結

以上是生活随笔為你收集整理的如何使用python批量下载-如何用Python批量下载卫星地图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。