顯示具有 地理資訊 標籤的文章。 顯示所有文章
顯示具有 地理資訊 標籤的文章。 顯示所有文章

2026年1月18日 星期日

用 umap 製作二手捐贈平台地圖

umap 「編輯圖層」 介面 又是一篇中興大學通識課要用的講義。 對長期讀者來說, umap 的部分是重播; 不過 gemini 的部分可以參考。

2025年7月25日 星期五

告別手動標地點! 共筆維護試算表、地圖自動更新 (不分尺寸版)

想像一個團隊, 每位成員分頭去收集一些 (不涉及隱私或機密、 可以公開的) 地址, 要放到一張共同的地圖上面。 除了地址之外, 還有一些需要經常更動的欄位, 例如各地點的開放時間、 注意事項、 臨時公告等等。 什麼樣的工作流程會比較有效率呢? 我會開一張共筆的試算表, 例如 ethercalc 或是 google sheet, 裡面含有名稱、地址、經緯度、備註以及其他文字資訊等等欄位, 並且分享給所有成員, 然後把這張試算表餵給 umap 吃。 於是每當任何成員修改 [地址經緯度以外的] 其他任何欄位, 地圖瀏覽者只要重新整理網頁, 就會看到最新最及時的資訊。 至於經緯度, 可以透過 TGOS 手動批次更新。 編輯 google 試算表的門檻比編輯地圖低很多, 這樣的安排便於讓任何人都可以參與。 我們拿 台派店家 當例子。 照以下做完之後, 會得到像這樣的成品: 台派店家地圖

先查看 原始資料的網址, 找出試算表代號 ("/d/" 後面那一長串) 以及分頁代號 ("gid=" 後面的數字)。 在 bash 底下, 先設定變數:

gs_id=15E0sastmidjk4CJlJJZoKZgbp5He5SKaUCbo4eMMlYY
gid=418920722

然後 wget -O tai-shops.csv "https://docs.google.com/spreadsheets/d/$gs_id/export?format=csv&gid=$gid" 就把三千多筆資料抓下來啦! 不過, 因為 google 回應時, 會送出 redirect 重新導向下載專用的伺服器, 所以如果用 curl, 必須加上 -L 選項: curl -L "https://docs.google.com/spreadsheets/d/$gs_id/export?format=csv&id=$gid" > tai-shops.csv

2025年3月11日 星期二

共筆維護試算表、地圖自動更新 - 小尺寸版

想像一個團隊, 每位成員分頭去收集一些 (不涉及隱私或機密、 可以公開的) 地址, 要放到一張共同的地圖上面。 除了地址之外, 還有一些需要經常更動的欄位, 例如各地點的開放時間、 注意事項、 臨時公告等等。 什麼樣的工作流程會比較有效率呢? 我會開一張共筆的試算表, 例如 ethercalc 或是 google sheet, 裡面含有名稱、地址、經緯度、備註以及其他文字資訊等等欄位, 並且分享給所有成員, 然後把這張試算表餵給 umap 吃。 於是每當任何成員修改 [地址經緯度以外的] 其他任何欄位, 地圖瀏覽者只要重新整理網頁, 就會看到最新最及時的資訊。 至於經緯度, 可以透過 TGOS 手動批次更新。 編輯 google 試算表的門檻比編輯地圖低很多, 這樣的安排便於讓任何人都可以參與。

如果你的試算表較大 (超過100列?), 本篇可能不適用。 請跳到第三節見新版連結。 推薦改參考更簡單、 可以處理更大資料檔的另一篇: 共筆維護試算表、地圖自動更新 - 大尺寸版。 至於您現在正在閱讀的這篇 「小尺寸版」, 則只剩歷史價值。

2025年1月1日 星期三

2024年6月29日 星期六

iahway: 我在這裡,你們在哪裡?

俗稱冰棒的定位 app Zenly 去年已下架。 就算沒下架, 我也不會去用它呀, 因為它不是自由軟體。 沒關係, 請大家來試試我做的拼裝車 "iahway: I am here. Where are you?" 今年會在 COSCUP 裡面分享。 因為我很懶惰, 真正的苦工都是別的軟體在做, 我只是用 50 列左右的 php 程式把它們串起來。 iahway 很陽春:

  1. 不必註冊
  2. 定位資訊不宜太頻繁更新, 會有點 lag
  3. 每次查看,要對地圖有動作 (pan 或 zoom), 資料才會更新
  4. 沒有隱私保護, 凡是知道網址且知道群組名稱的人都可以查看所有參與者的最後位置
  5. 我的伺服器隨時可能關掉; 但你可以自己架

iahway 的定位資訊流 gpslogger 記錄到自定義 url

2023年10月2日 星期一

自製 ubike 租賃站點地圖

umap 設定從網址匯入資料 退休 後把伴我26年的古董車賣了, 現在開始過著大眾運輸+ubike的生活。 於是自製 ubike 租賃點 umap 地圖。 使用前需要先造訪一次 這個網址。 這個 "7984" 是我把 tdx api 包裝成 geojson 的一個服務, 另文再詳。 因為這個 https 服務採用我自簽的憑證, 你必須先選擇信任它, 之後造訪 umap 地圖時才可以成功載入 "7984" 所提供的 geojson 資料檔。 資料量很大, 所以我只放了台中跟高雄這兩處我的生活圈。 (後來我把每個縣市分開放在各自的圖層, 這樣訪客可以從左側「圖層」按鈕自行開關每個圖層。)

如果想要自己挑選縣市的話, 可以先學會 用 umap 建立自己的私房地圖。 然後在圖層設定選單當中, 點 「遠端資料」, 輸入上述 "7984" 網址, 意思是本圖層的資料直接從遠端網址匯入。 資料格式請設定為 geojson。 又把 「快取代理請求」 設定成 1日, 以便每日更新, 納入最新增/刪站點資訊。 我的 "7984" 專案官網上有 縣市名稱清單, 用中英文皆可, 大部分時候可以省略 「縣」、「市」。 可以用 "+" 號把多個縣市名稱隔開。 但同時放太多個縣市上去, 圖會變得很慢。

做完之後才發現 ubike 官網 就有現成的地圖, 還有剩餘的車輛數及車位數。 冏。 反正自製地圖就是很好玩。 而且我覺得 umap 的 cluster 縮放特效比較好看。

2023年7月1日 星期六

台中市環保地圖

最近想要清家裡, 把一堆舊衣服、 舊電器、 電腦週邊等等拿去回收。 於是搜尋到 iTaichung 環保地圖。 可是它把每個店家獨立顯示在一張地圖上, 感覺很難用。 於是製作了 台中環保商店地圖, 把所有的店家放在同一張地圖上, 並且在這裡記錄一下步驟, 順便當作網頁爬蟲/資料視覺化的教材。

2022年10月30日 星期日

運輸資料流通服務 tdx 範例

交通部把 「公共運輸整合資訊流通服務平台 ptx」 改版升級成 「運輸資料流通服務 tdx」。 查詢公車站牌、 公車目前位置等等資訊變得更方便了! 請見 範例程式 以及 市公車 API 清單與示範

2022年9月5日 星期一

TGOS 批次地址查經緯度 + umap 私房地圖範例: 清冠一號中醫診所地圖

清冠一號中醫診所地圖 [本來想重寫 TGOS 的教學文, 做這張圖時才發現 umap 已中文化, 介面改了不少, 而且有提供 cluster map 的功能, 就乾脆連 umap 教學也一起重寫。] 接續前一篇 轉碼 big5 除錯記, 已經得到整理過的清冠一號中醫診所地址檔 3.csv。 (仍舊是 utf8 編碼, 但不會讓 iconv 消化不良。) 下一步要轉成 TGOS 規定的格式。

2022年8月14日 星期日

繪製 (公共腳踏車租賃地點、公車站牌、...) 群聚(地)圖不必改程式碼

leaflet cluster map: 以台中公共腳踏車租賃地點為例 上個學期教資料視覺化, 其中一個主題是繪製客製地圖, 就做了這個例子: 台中公共腳踏車租賃地點。 像這種 marker 個數太多太密集的地圖, 需要用 cluster map 來做, 當訪客拉近 (zoom in) 時, 才把一個 cluster 拆成更多個小的 clusters。

雖然 umap 也可以製作 cluster map (例: 清冠一號中醫診所地圖) 不過 umap 只能顯示每個 marker 的名稱; 用我的小程式則可以顯示所有 properties 的完整資訊。 請先下載 程式碼, 然後用瀏覽器打開其中的 index.html, 拉近拉遠測試一下。 如果是 firefox, 要先到 about:config 裡面把 security.fileuri.strict_origin_policy 設成 false; 如果是 chromium, 必須先關掉所有 chromium 視窗, 再從命令列上重新啟動: chromium --allow-file-access-from-files 。 詳見 javascript Can Read Local Files

2022年5月29日 星期日

json 裁剪/轉檔 (例如轉 csv) 都交給它了: 強大且易用的 zq

臺中市 151 公車停靠站地圖 在 hacker news 上面看到這篇 Introducing zq: an Easier (and Faster) Alternative to jq 。 玩懂了之後, 發現用它來轉檔 (json => csv 或 csv => json) 及篇輯/篩選 json 檔的內容超方便, 甚至比 jq 簡單很多! 只是他們把 zq 的太多功能與特色擠在一篇文章介紹, 所以步調太快, 有點難懂。 這裡我拿臺中市 151 公車停靠站 tcbus-151.json 來作範例, 展示最常用的 zq 基本語法。 這個檔案是從 ptx 公共運輸整合資訊流通服務平台 撈出來的。

2018年1月20日 星期六

ptx 公共運輸整合資訊流通服務平台 bash 及 php 範例

[2023/7] 現在 ptx 已經被新的服務取代囉: 運輸資料流通服務 tdx

公車動態地圖去年中才知道這個好站: 交通部透過 公共運輸整合資訊流通服務平台 (PTX) 提供各種大眾運輸工具的時刻/路線/動態/...等等政府開放資料, 正好可以拿來實作我心目中理想的 具有運算思維的公車動態地圖。 最近終於有空, 用它重新寫好公車動態 geojson 查詢 (範例: 公車即時動態 geojson 文字檔之 臺中市 151 路 高雄市 100 路; 其他都市名稱請見 官網說明文件 第 4 頁; 原始碼)。 壞掉好久的 朝陽科大五路線公車動態地圖 終於又可以動了! 以下分享範例程式及注意事項給 php 程式設計師。

2017年12月3日 星期日

用 GRASS 繪製燦坤各分店的勢力範圍地圖 Voronoi Diagram

燦坤各分店勢力範圍地圖 想像你有一張 「中華電信基地臺分佈地圖」, 並且假設每個基地臺的功率都一樣大。 地圖上的每一個點都可以問: 「哪一個基地臺離我最近?」 以便決定哪個基地臺的訊號比較強、 我的手機要跟誰連線。 以 (不會移動的) 「偶像 - 粉絲」 之間的關係來比喻, 每個偶像有自己的勢力範圍, 範圍內的所有點就是它的粉絲。 各勢力範圍之間的分界線由相鄰兩偶像的垂直平分線所組成。 這樣畫出來的圖稱為 Voronoi Diagram。 因為我拿不到基地臺座標, 所以只好改畫燦坤各分店的勢力範圍地圖。 目前可能沒什麼用, 因為分店跟粉絲的直線距離沒有太大意義; 但以後出現無人機送/取貨業務時, 這張地圖可能就有用了。

2017年11月18日 星期六

GRASS 地理資訊系統入門指南

GRASS 地理資訊系統 GRASS (Geographic Resources Analysis Support System) 是一套極強大的地理資訊系統自由軟體。 它能處理網格資料、 向量資料 (例如 geojson) 及資料庫形式的表格資料。

2017年11月16日 星期四

用 TGOS 全國門牌地址定位服務繪製全家便利商店全國門市地圖

[2022/9/7 現在改推另一個範例: TGOS 批次地址查經緯度 + umap 私房地圖範例: 清冠一號中醫診所地圖] 至於本篇舊文, 可以直接跳到 TGOS 重點提示 那一節查看 TGOS 服務的使用方式。

一、 下載 「全家門市」 地址

這篇我們要列出某大規模連鎖店的全國門市、 用內政部資訊中心所提供的 「批次地址比對服務」 把門牌號碼轉成經緯度、 最後再匯入 umap 私房地圖。 全家門市查詢 有簡單的靜態網頁, 最容易處理, 那就決定用全家當範例了。 用 wget 把所有網頁抓下來, 如 FamilyMart.tgz (包含下面成果的打包壓縮檔)。

2017年11月7日 星期二

多邊形求面積與地理中心/形心/幾何中心近似值

幾所大學的校園範圍及地理中心 最近想要處理 osm 上面撈出來的便利商店資料。 其中有些以點標示, 有些以多邊形標示。 為了簡化問題, 想用多邊形的 地理中心 (點) 來取代多邊形 (面)。 以數學術語來說, 就是需要計算 幾何中心, 也就是 centroid, 亦稱為形心。 在 平面上的多邊形形心計算公式 裡面, 還需要順便計算面積。 所以我寫了 gj-area-centroid.py 來計算 geojson 簡單多邊形的面積與形心的近似值。

2015年8月12日 星期三

臺灣各級行政區域(縣市/鄉鎮/村里)邊界座標檔, 自選解析度、 存成 csv、 畫成 svg

臺灣各縣市邊界、 宜蘭縣各鄉鎮邊界、 高雄市鼓山區各里邊界 政府資料開放平臺提供全國 縣(市)行政區域界線鄉(鎮、市、區)行政區域界線村里界圖 三個資料集。 如果你想從中萃取 「宜蘭縣各鄉鎮邊界.json」 或是 「高雄市鼓山區各里邊界」, 該怎麼做呢? 要如何降低解析度、 減少資料量? 如何存成文字檔, 用 gnuplot 畫成 svg 圖檔, 或是匯入其他一般「非地理資訊系統」的軟體裡面? 也許 Quantum GIS 之類的專業地理資訊系統本來就能處理 (如果看到教學文, 請分享一下網址囉); 不過我就是喜歡用命令列的文字檔工具來處理。 感覺學習門檻比較低; 每個中間步驟都看得見, 比較踏實; 若需要批次處理也比較簡單; 學這些通用小工具, 將來可能在更多地方可以派上用場。

2015年7月22日 星期三

csv 轉 geojson : 大批地址匯入你的私房地圖

中華電信臺中直營門市地圖 手中有一串地址 (例如某連鎖店), 想把這些地點加入你自製的私房地圖嗎? 先把它變成 csv 檔 -- 也就是 LibreOffice Calc 或 Microsoft Excel 之類軟體能夠讀寫的純文字版試算表檔案格式, 然後按照本文步驟, 不必寫程式 (因為別人和我已經幫你寫好了) 只要下幾個指令, 就可以把這些地址變成你的 umap 或 mapbbcode 私房地圖上的地標囉! 又, 如果你手邊的地址本來就是存在 ods 或 xls 或 xlsx 檔裡面, 也請先把它改存成 csv 格式。

([2015/10/13] 發現另一條路: 先用 csvtojson 再用 jq 兩階段轉檔。但本文不談。)

2015年7月18日 星期六

gpx 與 geojson 檔案格式互轉

GPX 跟 GeoJSON 都是常見的地理資料格式。 這一篇解釋如何互轉這兩種檔案格式。

[2023/7] 如果只是少少兩三個檔案, 我現在都是手動上傳到 umap, 再選擇想要的格式下載回來。 等於叫 umap 幫我轉就好了。 如果需要大量轉檔, 或寫進 script 自動處理, 才需要讀這篇。 請先安裝一個套件: apt-get install gdal-bin

2015年3月18日 星期三

json 轉檔萬用瑞士刀 jq

用 jq 把一個普通的 json 檔轉成 geojson 格式 "jq 是一個輕巧又靈活的命令列 json 處理器。" jq 之於 json, 就像 regexp 之於純文字檔, 或像是 QueryPath 之於 html/xml 檔, 可以擷取/過濾/篩選/批次編輯 json 檔。。 它的學習難度介於下指令跟寫程式之間。

[2022/5/29] 另一個類似工具 zq 的語法更容易理解; 但有些時候 jq 還是比較好用。