【Folium】使用離線地圖

文章目錄

  • 相關文獻
  • 離線地圖下載
  • Folium 使用離線地圖

相關文獻

  • Folium — Folium 0.19.5 documentation
  • Offline Map Maker

離線地圖下載

我們使用 Offline Map Maker 進行地圖下載。

特別注意:Folium 默認支持 WGS84 坐標系,建議下載 WGS84 坐標系的地圖(比如高德、谷歌等),而類似百度地圖(BD09 坐標系)默認不支持。

在這里插入圖片描述

由于此軟件收費較貴,也可以通過如下鏈接下載(注意網站是否允許爬蟲)。

[!TIP]

Gaode base map with areas roads labels buildings (China)

http://wprd01.is.autonavi.com/appmaptile?lang=zh_cn&style=7&ltype=7&scl=0&size=0&x=417&y=222&z=9

import glob
import shutil
import math
import os
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed# 下載單個URL的函數
def download_url(url, filename):try:print(f"開始下載: {url}")response = requests.get(url, timeout=10)with open(filename, 'wb') as f:f.write(response.content)print(f"下載完成: {url} -> 保存為 {filename}")return url, Trueexcept Exception as e:print(f"下載失敗: {url}, 錯誤: {e}")return url, Falsedef save_file_with_directories(file_path, content):"""自動創建路徑中的所有目錄,并保存文件內容。:param file_path: 文件路徑,例如 'a/b/c.png':param content: 要寫入的內容(二進制或文本)"""# 獲取文件所在目錄directory = os.path.dirname(file_path)# 如果目錄不為空,則創建目錄(exist_ok=True 表示目錄存在也不會報錯)if directory:os.makedirs(directory, exist_ok=True)# 寫入文件(以二進制方式為例)with open(file_path, 'wb') as f:f.write(content)# 多線程下載器
def multi_thread_download(urls, filenames, output_dir='downloads', max_workers=5):if not os.path.exists(output_dir):os.makedirs(output_dir)futures = []results = []with ThreadPoolExecutor(max_workers=max_workers) as executor:for i, (url, filename) in enumerate(zip(urls, filenames)):filename = os.path.join(output_dir, filename)future = executor.submit(download_url, url, filename)futures.append(future)for future in as_completed(futures):result = future.result()results.append(result)return resultsdef deg2num(lat_deg, lon_deg, zoom):"""根據給定的緯度、經度和縮放級別計算瓦片的X和Y坐標。參數:lat_deg (float): 緯度lon_deg (float): 經度zoom (int): 縮放級別返回:tuple: 包含X和Y坐標的元組"""lat_rad = math.radians(lat_deg)n = 2.0 ** zoomxtile = int((lon_deg + 180.0) / 360.0 * n)ytile = int((1.0 - math.asinh(math.tan(lat_rad)) / math.pi) / 2.0 * n)return (xtile, ytile)def move_file(src_file, dest_file):"""將文件移動到指定路徑,如果路徑不存在則自動創建。:param src_file: 源文件路徑(需要移動的文件):param dest_file: 目標文件夾路徑"""# 獲取源文件的文件名filename = os.path.basename(src_file)# 獲取文件所在目錄directory = os.path.dirname(dest_file)# 如果目錄不為空,則創建目錄(exist_ok=True 表示目錄存在也不會報錯)if directory:os.makedirs(directory, exist_ok=True)# 移動文件shutil.move(src_file, dest_file)print(f"文件已從 '{src_file}' 移動至 '{dest_file}'")# 示例用法
if __name__ == "__main__":left_lon = 113 + 52 / 60right_lon = 114 + 18 / 60top_lat = 22 + 35 / 60bottom_lat = 22 + 8 / 60from_zoom = 9to_zoom = 18i = 0url_list = []filenames = []for zoom in range(from_zoom, to_zoom + 1):x_min, y_min = deg2num(top_lat, left_lon, zoom)x_max, y_max = deg2num(bottom_lat, right_lon, zoom)for x in range(x_min, x_max + 1):for y in range(y_min, y_max + 1):filename = f"{zoom}_{x}_{y}.png"url = f"http://wprd0{i + 1}.is.autonavi.com/appmaptile?lang=zh_cn&style=7&ltype=7&scl=0&size=0&x={x}&y={y}&z={zoom}"  # 高德地圖url_list.append(url)filenames.append(filename)i = (i + 1) % 4# 開始多線程下載multi_thread_download(url_list, filenames, max_workers=8)for source_file in glob.glob("downloads/*.png"):filename = os.path.basename(source_file)zoom, x, y = filename[:-4].split("_")target_folder = f"{zoom}/{x}/{y}.png"move_file(source_file, target_folder)

Folium 使用離線地圖

import foliumoffline_map_path = 'D:/offlinemaps/Gaode base map with areas roads labels buildings (China)/{z}/{x}/{y}.png'  # 離線地圖文件路徑# 創建一個以香港為中心的地圖,zoom_start參數控制初始縮放級別
m = folium.Map(location=[22.5, 114],zoom_start=9,tiles=offline_map_path,attr='Gaode base map with areas roads labels buildings (China)'
)# 在地圖上添加一個標記,默認的標記類型是'Marker'
folium.Marker(location=[22.5, 114],  # 標記的位置坐標popup='這里是香港',  # 點擊標記時顯示的信息icon=folium.Icon(color='blue')  # 標記的顏色
).add_to(m)# 將地圖保存為HTML文件
m.save('hk_map.html')

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81200.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSearch:字節新一代 DeerFlow 框架

項目地址:https://github.com/bytedance/deer-flow/ 【全新的 Multi-Agent 架構設計】獨家設計的 Research Team 機制,支持多輪對話、多輪決策和多輪任務執行。與 LangChain 原版 Supervisor 相比,顯著減少 Tokens 消耗和 API 調用次數&#…

Qt—用SQLite實現簡單的注冊登錄界面

1.實現目標 本次實現通過SQLite制作一個簡易的登錄窗口,當點擊注冊按鈕時,登錄窗口會消失,會出現一個新的注冊界面;完成注冊或退出注冊時,注冊窗口會消失,重新出現登錄窗口。注冊過的用戶信息會出現在SQLi…

day 18:零基礎學嵌入式之數據結構——

一、基礎內容 1.數據結構:相互之間存在一種或多種特定關系的數據元素的集合。 2.邏輯結構 (1)集合,所有數據在同一個集合中,關系平等。 (2)線性,數據和數據之間是一對一的關系 &am…

【SSL證書系列】客戶端如何驗證https網站服務器發的證書是否由受信任的根證書簽發機構簽發

客戶端驗證HTTPS網站證書是否由受信任的根證書頒發機構(CA)簽發,是一個多步驟的過程,涉及證書鏈驗證、信任錨(Trust Anchor)檢查、域名匹配和吊銷狀態驗證等。以下是詳細的驗證流程: 1. 證書鏈的…

iOS即時通信的技術要點

iOS即時通信開發的關鍵技術要點總結: 一、通訊協議選擇 Socket通信 基礎實現:使用原生BSD Socket或CFNetwork框架(復雜),推薦第三方庫如CocoaAsyncSocket(封裝GCDAsyncSocket),簡化T…

智能AI構建工地安全網:跌倒、抽搐、區域入侵多場景覆蓋

智能AI在工地安全中的應用:從監測到救援的全流程實踐 一、背景:高溫作業下的工地安全挑戰 隨著夏季高溫持續,工地戶外作業環境面臨嚴峻考驗。工人因高溫疲勞、脫水或突發疾病引發的行為異常(如暈厥、抽搐、跌倒)頻發…

Doris

Apache Doris(原名:Palo)是一個高性能、實時的MPP分析型數據庫,非常適合海量數據的即席查詢、報表分析、指標統計等 OLAP 場景。Doris 的設計目標是:極致查詢性能、簡單易用、支持高并發分析和明細查詢。 一、Doris 核…

# 2-STM32F103-復位和時鐘控制RCC

STM32-復位和時鐘控制RCC 2-STM32-復位和時鐘控制RCC摘要說明本文參考資料如下: 一、STM32最小系統回顧STM32F103C8T6核心板原理圖 二、復位三、時鐘3.1 時鐘樹3.2 STM32啟動過程3.2 SystemInit()函數3.2.1 SystemInit()第1句:3.2.2 SystemInit()第2句&a…

rk3576 gstreamer opencv

安裝gstreamer rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 Installing on Linux sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-pl…

Quic如何實現udp可靠傳輸

QUIC(Quick UDP Internet Connections)是由 Google 設計并被 IETF 標準化的傳輸層協議,它基于 UDP 實現,但提供了類似 TCP 的可靠性和更高級的功能(如多路復用、0-RTT 握手、TLS 加密等)。 盡管 UDP 是不可…

uniapp-商城-59-后臺 新增商品(屬性的選中,進行過濾展示,filter,some,every和map)

前面講了屬性的添加,添加完成后,數據庫中已經存在數據了,這時再繼續商品的添加時,就可以進行屬性的選擇了。 在商品添加過程中,屬性選擇是一個關鍵步驟。首先,界面需要展示嵌套的屬性數據,用戶通…

負載均衡 ELB 在 zkmall開源商城高流量場景下的算法優化

在電商大促、直播帶貨等高頻交易場景下,流量突發增長對系統穩定性提出嚴峻挑戰。ZKmll 開源商城通過對負載均衡 ELB(Elastic Load Balancer)算法的深度優化,結合業務場景特性設計動態加權輪詢 地域感知 熱點分流的混合策略&…

Linux干貨(三)

前言 從B站黑馬程序員Linux課程摘選的學習干貨,新手友好!若有侵權,會第一時間處理。 目錄 前言 1.which find命令 1.which命令 2.find命令 2.grep wc 管道符 1.grep命令 2.wc命令 3.管道符 3.echo tail 重定向符 1.echo命令 2.反…

Sigmoid與Softmax:從二分類到多分類的深度解析

Sigmoid與Softmax:從二分類到多分類的深度解析 聯系 函數性質:二者都是非線性函數 ,也都是指數歸一化函數,可將輸入值映射為0到1之間的實數 ,都能把輸出轉化成概率分布的形式,在神經網絡中常作為激活函數使用。Softmax是Sigmoid的推廣:從功能角度看,Softmax函數可視為…

文件系統交互實現

關于之前的搭建看QT控件文件系統的實現-CSDN博客,接下來是對本程序的功能完善,我想著是這樣設計的,打開一個目錄以后,鼠標選中一個項可以是目錄,也可以是文件,右鍵可以出現一個菜單選擇操作,比如…

[ctfshow web入門] web75

信息收集 啟用了open_basedir,所以之前的方法又不能用了 解題 cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString(). ); } ob_flush();cif ( $a opendir("glob:///*") ) {while ( ($file readdir($a)) ! false …

Vulfocus靶場-文件上傳-3

WSO2 文件上傳 (CVE-2022-29464) WSO2是一家成立于 2005 年的開源技術提供商。它提供了一個企業平臺,用于在本地和整個 Internet 上 集成應用程序編程接口(API)、應用程序和 Web 服務。 某些 WSO2 產品允許無限制的文件上傳和遠程代碼執行。…

基于MCP的橋梁設計規范智能解析與校審系統構建實踐

引言 今天本文準備盤一個大活,聊一聊偏特定行業一點的AI技術深入應用思考及實踐。 一、傳統設計行業項目背景與行業痛點 在橋梁設計領域,標準規范是設計的基礎,直接關系到橋梁結構的安全性、耐久性和經濟性。然而,傳統的規范應…

遠程連接電腦的方法?異地遠程桌面連接和三方軟件實現

遠程連接電腦,是指通過網絡技術,在一臺設備上操控另一臺設備的電腦桌面,實現跨地域的操作和管理。在日常工作、技術支持、遠程辦公等場景中,遠程連接電腦都發揮著重要作用。實現遠程連接電腦主要有系統自帶工具和第三方軟件兩種方…

win11 安裝 wsl ubuntu 18.04后換源失敗!

記錄幾個問題是如何解決的。 一 下載wsl后,有報錯: Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8007019e ??????? Linux ? Windows ???? Press any key to continue... …