多數的搜尋技術,在處理地理位址時,只處理地點的資料,例如餐廳、百貨公司等小地理區塊等,但是這些地點搜詢技術,並不適合用在處理大區塊範圍的資料,如行政區及學區等。

如多數外國網站用的坐標轉行政區的GeoNames,他在搜尋某個座標目前所屬的行政區時,是計算座標點與附近行政區中心的距離來猜測,但是行政區往往不是正圓型的,行政區的劃分多是依自然環境(如河川)來切割的,所以,既始某個座標離行政區甲較近,但是,在實務上則是被劃分到乙行政區去的;類似的例子還有學區等

另一類無法用點去描述 的,是線型的資料,如登山步道、腳踏車道,當我們登山時,我們不一定要從起點開始爬,而是可以從中間點開始加入,因此,當我們在找附近所有的登山步道時,該是計算所有線型資料與目前座標點的最短距離,而非是算起點與目前座標點的距離。

依據了這套需求,我在我公司的產品上增加了對地理區塊搜尋的功能,讓用戶能對點(Point)、線(LineString),多邊型(Polygon)等資料,做搜尋。

底下的連結,是搜詢台北101大樓所在的行政區,大家可以玩玩看


{"results": [{"id": 302,"properties": {"AREA": 522872.00372,"NEW": 6300200001,"FULL": "臺北市信義區西村里","PERF_ID": 63002,"COUN_ID": "6300200","CPID": "63002","CPTID": "6300200","CPTVID": "6300200001","NPID": 63002,"NPTID": 6300200,"NPTVID": 6300200001,"PNAME": "臺北市","TNAME": "信義區","VNAME": "西村里","PTVNAME": "臺北市信義區西村里","PTNAME": "臺北市信義區","TVNAME": "信義區西村里","TM2_MAX_X": 306528.415,"TM2_MAX_Y": 2770435.21,"TM2_MIN_X": 305428.311,"TM2_MIN_Y": 2769739.57,"MAX_X": 0,"MAX_Y": 0,"MIN_X": 0,"MIN_Y": 0}}],"metadata": {"searchQuery": {"queries": [],"constraints": [{"@type": "location","field": "geometry","location": "25.033611,121.565","radius": 1}],"pagination": {"start": 0,"count": 1}},"start": 0,"count": 1,"total": 1}}