Stark Wong 的個人開發網站
 


 此頁面:更新於 2019 年 5 月 2 日 12 時 04 分 09 秒,頁面處理需時 0.001 秒
 網站內容版權所有(C)Stark Wong。頁面(不包括檔案)可自由連結。網站系統版本 1.90-AngularJSBase (2015/9/27)
 
網站地圖

流動巴士版圖離站時間查詢功能暫停

由於有人濫用流動巴士版圖的離站時間查詢服務,導致資料供應方被封 IP,只能暫停此功能直至加入反制措施為止。

致某裝成 "Dalvik/2.1.0 (Linux; U; Android 10; SM-N9750 Build/QP1A.190711.020)" 的人:大家都是九巴不開放資料下的受害者,但沒有需要攬炒吧?你這樣繁密讀取資料,我的伺服器不封,你也不可能沒料到上流的伺服器會封吧?這下你可開心吧?大家都不用玩下去了。


撰寫於:2020/7/2 21:48:40 / 回應已關閉
正在讀取回響內容...
流動巴士版圖資料庫更新恢復正常

由於接連有突破性的發展,流動巴士版圖的新巴/城巴資料由即日起恢復正常,而離站時間查詢功能亦已恢復。

Android 版本的流動巴士版圖將重新上架,至於 iOS 版本則由於開發者資格已過期,暫時未知會否重新續期以讓程式重新上線。


撰寫於:2020/6/27 18:05:10 / 回應已關閉
正在讀取回響內容...
流動巴士版圖 - 九巴離站時間查詢功能恢復

由於九巴離站時間資料提供方取得突破性發展,以令流動巴士版圖的九巴離站時間查詢功能可暫時恢復,至於新巴/城巴的離站時間查詢功能及資料庫更新則尚未有恢復時間表。


撰寫於:2020/6/25 15:19:49 / 回應已關閉
正在讀取回響內容...
流動巴士版圖狀態更新

最近都收到一些流動巴士版圖的使用者的查詢電郵,現在我在這裡更新一下目前的狀態。

首先,無論是 iOS 還是 Android 版本的流動巴士版圖目前都已經下架,原因是資料庫持續無法更新新巴/城巴的資料,所以在無法確保資料準確性的情況下只好將程式下架以避免有新用戶受過時資料影響。

然後,繼新巴/城巴的離站時間資料來源因新巴/城巴停用舊 API 而無法再使用後,九巴亦在前幾天停用舊 API,而新 API 亦經加密以防止其他人使用,所以所有離站時間查詢功能目前也被迫停止服務。

發生這樣的問題後,流動巴士版圖很大可能無法繼續維護下去了... 除非有人能提供相關資料取得的方法,否則應該就這樣了。


撰寫於:2020/6/22 19:32:37 / 回應已關閉
正在讀取回響內容...
流動巴士版圖目前狀態

由於之前新巴/城巴資料庫強制 API 更新的原因,導致目前流動巴士版圖一直無法更新新巴/城巴資料庫,亦導致相關離站通知功能無法使用。亦因為此問題已持續一段時間而無法解決,所以決定將程式暫時下架直至問題得到解決為止。

目前已安裝程式的用戶將不受影響,資料庫仍然會進行有限度更新。

至於資料庫處理基本上已有方向,目前是打算完全使用政府 open data 資料以完全解決聯營線的問題,但最大的問題是九巴並未開放 API 予運輸署,也就是說用政府 open data 的 API 無法取得九巴的離站時間資料,我只能等待九巴開放資料或是將九巴資料與政府資料進行合併,但目前我沒有時間進行這些開發。


撰寫於:2020/4/19 13:51:58 / 回應已關閉
正在讀取回響內容...
再次失敗

還是關於上次的資料庫問題,這次的嘗試是用運輸署的資料庫,然後用新巴的建築物資料庫來取得區域名稱,如果成功的話至少可以建立一個有區域而沒有詳細地址的資料庫,至少可以用,不過結果還是不行....

其中一個站名:Eastern Street, Des Voeux Road West

配對後的結果超過一個,而且是不同區...

Array
(
    [0] => Central & Western District/Mid-levels (Bonham Road & Park Road)/Eastern Street (near Bonham Road)
    [1] => Central & Western District/Sai Ying Pun/Vicinity of Centre Street, Eastern Street & Wilmer Street
)

如果試圖把 Des Voeux Road West 也拿去配對,結果會出現第3個不同的區域...所以結論又是失敗。

還有其他辦法麼...


撰寫於:2020/3/14 22:51:49 / 回應已關閉
正在讀取回響內容...
流動巴士版圖 - 新巴/城巴資料現況

上一篇提到,由於新巴/城巴 API 變更導致無法更新資料庫。經過這兩天嘗試及評估後,問題遠比想像中複雜:

  • 原來使用的 API 直到現在已經過演化,現在的 syscode5 要能使用比較麻煩,而且要弄一個一直開啟的 Android 裝置用來產生 syscode5 才行,不傾向用這個方法
  • 至於改用 data.gov.hk 的公開資料,在開發當中發現多個嚴重問題
    • 新巴提供的公開 API 並沒有路線清單,故路線清單只能由運輸署提供的所有巴士路線 XML 中取得
    • 所有巴士路線 API 中有部份路線在新巴的路線 API 無法找到
    • 新巴的路線車站 API 並沒有每個站的車費資訊,需使用運輸署的巴士車資 XML (那個檔案116MB!) 進行對應
    • 無論使用運輸署還是新巴公開 API 都有兩個問題,其一是沒有地區資料,沒有地區資料就無法以分區進行路線搜尋;其二是只有站名而沒有街道資料
    • 以上兩個問題的資料目前是載於本地的資料檔案,而 ID 為新巴的站號,所以解決方法是要將運輸署的車站與新巴的站號關聯,那就可以在運輸署的車站中恢復該兩項資料。理論上只要同時取得運輸署及新巴公開 API 於同一路線及方向的路線車站資料然後作一對一的對應就可以,但是...
      • 新巴的 inbound 與 outbound 定義跟運輸署不符。運輸署的定義 inbound 是由終點站到起點站,而 outbound 則是相反,但新巴路線車站 API 有些 outbound 卻是終點站到起點站,有些卻不是,以致一對一對應時會因為方向錯誤而對應到不正確的站號
      • 即使方向相同,有些路線 (例如 103) 在運輸署的路線車站資料中,車站數量跟新巴 API 傳回的車站數量不同,這樣導致無法對應,因為無法知道缺少或多出來的是哪一個車站
    • 我亦嘗試以車站座標去搜尋本地資料檔案以找出對應的車站:
      • 運輸署資料使用 HK1980 座標系統,而新巴公開 API 則使用常用的 WGS84 (即經緯度) 座標系統
      • 將運輸署的座標轉換成 WGS84 座標後,發現就算經緯度誤差即使只有不多於 0.001 度時仍然會發生對應車站錯誤的問題,所以此方法不可行
    • 即使以上問題都順利解決,還是有兩個後續問題:
      • 本地資料中所用的 ID 是新巴站號,該編號對於特定車站是不變的;但是運輸署的車站編號由於是共通於所有巴士公司,故我懷疑只要站數有增減,特定車站的編號就會有變,這樣對於以後如何進行車站對應會有很大問題
      • 對於聯營線,目前有使用特別方法讓路線的九龍部份使用九巴資料而港島部份則使用新巴資料 (因為事實上聯營線的車站也有非聯營線,所以不應該出現兩個相同的車站),然而該方法依賴於九巴路線資料的車站數量與新巴資料相同,直到現在為止也只有一兩條路線會有出入,處理也比較簡單。但使用運輸署的資料時,只測試到第3條路線就已經發現車站數不同的問題,要是數量多起來根本無法處理

雖然我還是會再進行測試一段時間,但老實說並不樂觀...


撰寫於:2020/3/2 00:03:54 / 回應已關閉
正在讀取回響內容...
流動巴士版圖 - 新巴/城巴資料限制

由於新巴/城巴 API 變動導致無法更新新巴/城巴的資料庫,目前資料庫中的新巴/城巴資料庫將維持 2020/2/14 的版本,直至有後續決定為止。

目前對應方法有三個:
1. 更新 API,但需要時間研究改變的部份,而且更新後對應時間不明
2. 將 API 改成 data.gov.hk,此方法一勞永逸,但需要時間可能很多,且牽涉離站時間很可能需一併更新
3. 放棄更新直至程式完全停止更新為止


撰寫於:2020/2/24 19:13:10 / 回應已關閉
正在讀取回響內容...
流動巴士版圖 NG Android 版本更新

這次更新的流動巴士版圖其實已經做好一段時間,不過因為一些個人原因一直未公開。直到今天有點時間再加少許功能就直接放出來了。

這次更新的內容包括:

  • 優化整個程式的混合定位處理:程式中本來除了自動離站通知外都是使用非 Play Services 的舊式混合定位方法,由於已無法在模擬器中配合模擬定位進行測試,所以一次過將所有舊混合定位的部份全部替換成新方法
  • 在 Android 10 支援夜間模式:使用 Android 10 時會自動配合系統的夜間模式切換成相同的模式,但注意這在三星的 Android 9 夜間模式下無效
  • 當選擇路線時會顯示鄰近車站的離站時間
  • 加入最愛分頁顯示所選車站的離站時間
  • 修正 OpenStreetMap 無法使用:這個是 Android 的網路安全功能預設拒絕在 Android 9 以上使用非 HTTP 資源所導致,現已將 OpenStreetMap 的資源換成 HTTPS
  • 在地圖中增加交通線路顯示選項:最近無意中找到可在 Google Maps SDK 中使用的交通線路覆蓋,不過由於看起來可能會比較亂,所以將這個功能做成選項,可於地圖版面中切換
  • 自動讀取內建資料庫日期:以往每次程式更新時都要手動更新 AndroidManifest.xml 中的資料庫日期,現在換成自動從資料庫中取得 ZIP 檔案更新日期
  • 特別事件通知:這個功能現在未啟用,如有突發交通情況時可提供通知及相關連結

不過流動巴士版圖已經維護了相當長的日子,也許是時候畢業了?


撰寫於:2020/1/26 15:56:49 / 回應已關閉
正在讀取回響內容...
流動巴士版圖NG緊急資料回溯

請注意,由於九巴自己的更新資料有問題 (於新安裝 APP1933 情況下更新到最新資料庫會發現部份路線不存在,例如 33 和 269S 等),以致流動巴士版圖 NG 於 2019/11/29 更新的資料庫亦出現同樣問題。流動巴士版圖的資料庫目前已回溯至 2019/11/25 的版本 (顯示的更新日期為 2019/11/30 但內容實為舊版) 並暫停處理任何更新,直至九巴修復資料庫為止。

更新:我在 APP1933 的更新 XML 看到這個

<br />
<b>Fatal error</b>:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 29374834 bytes) in <b>/home/webmaster/pda/kmb-ws/src/Mst/Model/XmlModel.php</b> on line <b>34</b><br />

似乎他們也沒料到那個 XML 會大到這個程度... (在出現這個問題前那個 XML 的大小已經達到 28.5MB,也就是說 APP1933 每次下載更新都要下載那麼大的檔案再與現存資料進行合併,相比之下流動巴士版圖下載的資料才4.7MB…)


撰寫於:2019/11/30 14:31:53 / 回應已關閉
正在讀取回響內容...
其他較舊內容請移步至舊部落格版面