Satellite Map Tool
專案簡介
一個基於 Python 的命令行工具,能夠根據經緯度座標和地面範圍自動生成高品質衛星地圖圖片。核心特色是採用 1公尺 = 1像素 的精確比例,輸出純淨的衛星影像(無標記、無控制元件、無版權標籤)。
整個截圖過程只需 3 到 10 秒,視範圍大小而定。目前支援從 100 公尺到 2000 公尺的範圍,基本上涵蓋了大部分的使用場景。
主要功能
- 精確範圍控制: 輸入經緯度和邊長,精確截取指定區域的衛星圖
- 1:1 像素比例: 1 公尺地面距離對應 1 像素,方便後續測量和分析
- 純淨影像輸出: 無任何標記、控制按鈕或版權標籤的純衛星影像
- 高品質圖片: 支援 100-2000 公尺範圍,自動優化 zoom level 確保清晰度
- 快速生成: 3-10 秒內完成截圖,無需手動操作
- 免費開源: 使用 Esri World Imagery,完全免費且無 API 限制
技術棧
- 語言/框架: Python 3
- 地圖生成: Folium (互動式地圖 HTML 生成)
- 瀏覽器自動化: Selenium + webdriver-manager (無頭瀏覽器截圖)
- 圖片處理: Pillow (精確裁切與縮放)
- 地理計算: geopy (經緯度與距離換算)
- 衛星圖層: Esri World Imagery (免費開放)
- AI 協作工具: Claude Code
技術亮點
1. 智能品質優化
解決了地圖截圖的品質問題:
- 手動提高 zoom level 2-3 級獲取更多細節
- 視窗開兩倍大後用 LANCZOS 高品質演算法縮小
- 即使 2000 公尺大範圍也能保持清晰
2. 精確座標轉換
實作 Web Mercator 投影轉換:
- 經緯度 (球面座標) ↔ 圖片像素 (平面座標)
- 精確計算裁切區域,確保 1 公尺 = 1 像素
- 支援任意經緯度位置的座標計算
3. 直覺的參數設計
從「面積」改為「邊長」輸入:
- 300 公尺邊長比 90000 平方公尺更直覺
- 輸出圖片尺寸直接等於邊長數值
- 便於使用者預估和理解範圍大小
開發歷程
- [[日誌/Phase-1-從零開始打造衛星地圖截圖工具|#1 Phase 1: 從零開始打造衛星地圖截圖工具]] - 專案架構建立、核心功能實作、品質優化
技術挑戰
開發過程中解決了以下關鍵問題:
- 圖片品質問題: 透過提高 zoom level 和高品質縮放演算法解決
- 座標轉換: 實作 Web Mercator 投影公式處理經緯度與像素轉換
- Windows 中文編碼: 設定 UTF-8 輸出避免終端亂碼
- 參數設計優化: 從面積改為邊長輸入提升使用體驗
專案成果
- 完整的命令行工具,一行指令完成截圖
- 1:1 像素比例,方便後續測量分析
- 高品質衛星影像,支援 100-2000 公尺範圍
- 3-10 秒快速生成,完全免費
- 純淨影像輸出,無任何標記或浮水印
相關連結
返回 所有專案