程式碼會上傳嗎?
程式碼在目前瀏覽器編輯並執行,會保存在該瀏覽器的本機儲存空間,不會傳送到 GeoLab 網站。首次載入 Python 執行環境或套件時,瀏覽器仍需連線下載相關資源。
執行程式後,結果會顯示在這裡。PYTHON · GIS · DATA
這個線上 Python 編輯器使用 Pyodide,讓 Python 在你的瀏覽器中執行。選擇範例、修改程式,按「執行」或使用 Ctrl + Enter,即可立即查看輸出;不必安裝 Python 或建立帳號。
以下程式用 Python 標準函式庫 math 計算兩點間的直線距離,適合快速驗證座標或學習函式呼叫:
from math import hypot
point_a = (0, 0)
point_b = (3, 4)
distance = hypot(point_b[0] - point_a[0], point_b[1] - point_a[1])
print(distance) # 5.0程式碼在目前瀏覽器編輯並執行,會保存在該瀏覽器的本機儲存空間,不會傳送到 GeoLab 網站。首次載入 Python 執行環境或套件時,瀏覽器仍需連線下載相關資源。
NumPy 等 Pyodide 支援的套件可在瀏覽器使用。依賴作業系統、原生擴充或大型資料檔的套件(例如部分 GeoPandas 工作流程)可能無法直接執行;可先用範例確認相容性。
適合初學者練習語法、執行短程式、測試 NumPy 計算和驗證座標公式。長時間運算、大型資料處理或需要完整桌面 GIS 套件時,建議使用本機 Python 環境。
可直接執行的範例
選擇左側案例即可載入編輯器。以下程式也可直接閱讀與複製;需要 NumPy 的範例會在執行時由 Pyodide 載入套件。
用 print() 顯示文字,並以 f-string 將變數放進訊息。
name = "SpatialGeoLab"
print(f"Hello, {name}!")
print("Python 正在你的瀏覽器裡執行。")使用 list 保存多個城市名稱,再用 enumerate() 逐筆列出索引與內容。
cities = ["台北", "台中", "高雄"]
for index, city in enumerate(cities, start=1):
print(f"{index}. {city}")將換算公式包在函式中,之後可以帶入不同溫度重複使用。
def celsius_to_fahrenheit(celsius):
return celsius * 9 / 5 + 32
for temperature in [0, 20, 30]:
print(f"{temperature}°C = {celsius_to_fahrenheit(temperature):.1f}°F")Haversine 公式可估算地球表面兩個經緯度點的球面距離;輸入座標順序為緯度、經度,結果以公里表示。
from math import asin, cos, radians, sin, sqrt
taipei = (25.0330, 121.5654)
kaohsiung = (22.6273, 120.3014)
lat1, lon1 = map(radians, taipei)
lat2, lon2 = map(radians, kaohsiung)
dlat, dlon = lat2 - lat1, lon2 - lon1
a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
distance_km = 6371 * 2 * asin(sqrt(a))
print(f"球面距離:約 {distance_km:.1f} 公里")鞋帶公式適用於平面直角座標。若座標來自經緯度,請先投影到合適的平面座標系,再解讀面積單位。
points = [(0, 0), (4, 0), (4, 3), (0, 3)]
twice_area = sum(
x1 * y2 - x2 * y1
for (x1, y1), (x2, y2) in zip(points, points[1:] + points[:1])
)
area = abs(twice_area) / 2
print(f"多邊形面積:{area} 平方座標單位")NumPy 適合處理數值陣列。這個例子以經度、緯度兩欄建立座標資料,並計算各欄的算術平均。
import numpy as np
coordinates = np.array([
[121.5654, 25.0330],
[120.3014, 22.6273],
])
print("座標陣列:")
print(coordinates)
print("經度、緯度平均值:", coordinates.mean(axis=0))csv.DictReader 會依欄位名稱讀取每一列,不需額外安裝套件;實務上可將 StringIO 換成檔案物件。
import csv
from io import StringIO
csv_text = "city,count\n台北,3\n台中,2\n高雄,4"
rows = csv.DictReader(StringIO(csv_text))
total = 0
for row in rows:
total += int(row["count"])
print(f"{row['city']}:{row['count']} 筆")
print(f"總筆數:{total}")