Odata實際應用
透過GeoHash篩選點位資料 所有PTX的點位相關服務中皆有GeoHash地理空間編碼之欄位(如:公車站牌、臺鐵車站資料等服務),可利用該欄位做空間查詢 (參考文獻:Geohash原理) 使用情境範例:篩選出臺北車站方圓 100 公尺內的所有臺北市區公車站牌資料 Step1:搜尋半徑 100 公尺的資料應使用 7 位 GeoHash 編碼來做篩選 Step2:找出所有臺北車站及其附近 8 個 7 位的 GeoHash 編碼 wsqqt0h、wsqqt0j、wsqqt0n、wsqqmpu、wsqqmpv、wsqqmpy、wsqqmps、wsqqmpt、wsqqmpw Step3:利用 OData 篩選出 GeoHash 欄位開頭 7 位編碼為上述 9 個編碼的資料 https://tdx.transportdata.tw/api/basic/v2/Bus/Stop/City/Taipei?$filter=startswith(StopPosition/GeoHash, 'wsqqt0h') or startswith(StopPosition/GeoHash, 'wsqqt0j') or startswith(StopPosition/GeoHash, 'wsqqt0n') or startswith(StopPosition/GeoHash, 'wsqqmpu') or startswith(StopPosition/GeoHash, 'wsqqmpv') or startswith(StopPosition/GeoHash, 'wsqqmpy') or startswith(StopPosition/GeoHash, 'wsqqmps') or startswith(StopPosition/GeoHash, 'wsqqmpt') or startswith(StopPosition/GeoHash, 'wsqqmpw') Step4:前一步驟的查詢並非精確篩選出方圓 100 公尺內的資料,而只是找出所有可能落在 100 公尺內的「候選點」,因此在將前一步驟的資料拉回本地端後,必須在本地端做一次精確的篩選(此處會根據不同語言而有不同的寫法,因此不提供此範例說明)
Last updated