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 平方公尺更直覺
  • 輸出圖片尺寸直接等於邊長數值
  • 便於使用者預估和理解範圍大小

開發歷程

  1. [[日誌/Phase-1-從零開始打造衛星地圖截圖工具|#1 Phase 1: 從零開始打造衛星地圖截圖工具]] - 專案架構建立、核心功能實作、品質優化

技術挑戰

開發過程中解決了以下關鍵問題:

  1. 圖片品質問題: 透過提高 zoom level 和高品質縮放演算法解決
  2. 座標轉換: 實作 Web Mercator 投影公式處理經緯度與像素轉換
  3. Windows 中文編碼: 設定 UTF-8 輸出避免終端亂碼
  4. 參數設計優化: 從面積改為邊長輸入提升使用體驗

專案成果

  • 完整的命令行工具,一行指令完成截圖
  • 1:1 像素比例,方便後續測量分析
  • 高品質衛星影像,支援 100-2000 公尺範圍
  • 3-10 秒快速生成,完全免費
  • 純淨影像輸出,無任何標記或浮水印

相關連結


返回 所有專案

1 item under this folder.