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

歡迎訪問 生活随笔!

生活随笔

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

python

python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)

發布時間:2023/12/18 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于Folium庫的基礎使用,可以查看官方文檔,或者很多知友、博客的分享,這里不再詳述。本文主要以一個簡單的示例講解如何更換底圖,以及進行坐標變換。

1.坐標變換

地球上同一個地理位置的經緯度,在不同的坐標系中,會有少量偏移,國內目前常見的坐標系主要分為三種:

地球坐標系——WGS84:常見于GPS設備,Google地圖等國際標準的坐標體系。

火星坐標系——GCJ-02:中國國內使用的被強制加密后的坐標體系,高德坐標就屬于該種坐標體系。

百度坐標系——BD-09:百度地圖所使用的坐標體系,是在火星坐標系的基礎上又進行了一次加密處理。坐標偏移

在上圖中,藍色線條位置應該是準確的位置,但是由于坐標系不統一,導致定位標志所示的位置發生了偏移。坐標偏移修正(坐標變換)

轉換方法一:關于坐標轉換,可以參見python庫 :coord-convert?pypi.org

官方給出的API調用方法如下:

from coord_convert.transform import wgs2gcj, wgs2bd, gcj2wgs, gcj2bd, bd2wgs, bd2gcj

lon, lat = 120, 40

gcj_lon, gcj_lat = wgs2gcj(lon, lat)

bd_lon, bd_lat = wgs2bd(lon, lat)

print(gcj_lon, gcj_lat) # the result should be: 120.00567568355486 40.0013047896019

轉換方法二:網上可以搜到很多轉換代碼,可根據自己的情況進行適當調整,本文采用的為;python3實現GPS經緯度坐標(WGS84)國測局火星坐標(GCJ02)百度坐標(BD09)相互轉換_Python_開開的博客-CSDN博客?blog.csdn.net

2.底圖更換

folium庫默認是基于OpenStreetMap的,但是可能由于信息更新不及時,有時候OpenStreetMap的數據是不準確的。這就需要更換底圖,如高德地圖,或者Google地圖等。

m = folium.Map(

location=[38.96, 117.78],

zoom_start=12,

# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道圖

# tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德衛星圖

tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 衛星圖

# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地圖

attr='default'

)

如果需要更換底圖,僅需調整tiles參數URL即可。

這里給出google地圖的一些參數設置:

''' lyrs可以設置為不同的參數,分別代表不同形式的地圖,可以嘗試

lyrs=

h = roads only

m = standard roadmap

p = terrain

r = somehow altered roadmap

s = satellite only

t = terrain only

y = hybrid

'''

衛星圖效果如下:

高德街道圖:

衛星圖效果如果條件允許,建議選擇google地圖,高德和百度在放大到一定程度時,會沒有衛星圖顯示。

關于高德地圖瓦片URL的解析可以參見:不睡覺的怪叔叔:OpenLayers教程十二:多源數據加載之使用XYZ的方式加載瓦片地圖?zhuanlan.zhihu.comhttps://www.jianshu.com/p/e34f85029fd7?www.jianshu.com

在Stack Overflow上有如下問答,可做Mapbox的參考:How do I use mapbox tiles with folium??gis.stackexchange.com

示例代碼(高德):

import numpy as np

import folium

from folium import plugins

def PlotLineOnMap():

# 給出的坐標系為GCJ-02,如果需要測試google地圖,需要進行坐標轉換

Lat = [40.8352, 40.8342, 40.8335, 40.8323, 40.8311, 40.8308, 40.8304, 40.8315, 40.8325, 40.8332, 40.8339, 40.8345,

40.8352]

Lon = [114.8886, 114.8883, 114.8881, 114.8877, 114.8873, 114.8888, 114.8902, 114.8909, 114.8916, 114.8919, 114.8922,

114.8917, 114.8886]

tri = np.array(list(zip(Lat, Lon)))

san_map = folium.Map(

location=[40.8329, 114.8898],

zoom_start=16,

tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道圖

# tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德衛星圖

attr='default')

folium.PolyLine(tri,color='#3388ff').add_to(san_map)

marker_cluster = plugins.MarkerCluster().add_to(san_map)

for lat,lon in zip(Lat,Lon):

folium.Marker([lat,lon], color='red').add_to(marker_cluster)

san_map.save('test.html')

def main():

PlotLineOnMap()

if __name__ == '__main__':

main()

總結

以上是生活随笔為你收集整理的python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)的全部內容,希望文章能夠幫你解決所遇到的問題。

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