1. 程式人生 > >基於矢量數據的逆地理編碼功能實現

基於矢量數據的逆地理編碼功能實現

逆地理編碼 地圖矢量數據 地圖地物搜索 地圖範圍搜索 地圖框選搜索

地理編碼和逆地理編碼概述

地理編碼,是指將大家熟悉的地址文字描述,轉換為經緯度,如輸入某某省、某某市、某某路,在地圖上根據經緯度定位到輸入的地圖上的某個點,直觀的顯示所在位置。逆地理編碼是指將經緯度轉化為大家都能看懂文字描述。一般人對經緯度數字沒什麽概念,轉化為文字描述後,更容易讓人理解。在現在大量的人員定位,車輛監控中,除了在地圖上直觀的展示人員或者車輛的地圖位置外,很多的系統也提供了人員或者車輛所在位置的文字描述功能。

目前大部分系統和項目開發中,逆地理編碼功能的實現,都是調用主流廠商提供的逆地理編碼服務接口來實現逆地理編碼功能。在開發一些特殊的系統時,往往這些主流廠商提供的逆地理編碼得到的結果不能更好的滿足項目展示的需求。如在物流配送中應用中,需要很精確直觀的描述物流車輛所在的線路,以及物流配送點。而這些在線地圖廠商提供的逆地理編碼服務接口,在位置描述的精準度上,達不到項目想要的效果。另外,有部分項目是在單位內網裏構建,不能訪問外網的逆地理編碼服務接口。

針對這些項目的開發,可以在地圖矢量數據基礎上,通過自己寫一些底層的GIS算法,來實現逆地理編碼功能,在位置描述上,具有更高的靈活度,更加適應項目實際需求。如經緯度所在道路的描述,以及經緯度周邊描述上,可以添加專門的線路數據和點數據,通過控制搜索優先級,來實現位置的精確描述。

逆地理編碼功能實現的基本思路

逆地理編碼功能結果描述分為三個部分組成,

1、經緯度所在的行政區劃,這部分需要使用到全國的行政區劃數據,省界、市界、縣界、如果更精確還需要鄉鎮界。

2、經緯度當前所在的道路,國道、省道、縣道、鄉鎮村道、城市道路等。人員或者車輛回傳的經緯度坐標,因為有一定的誤差,不可能跟這些道路完全匹配,一般認為,誤差範圍在

50米以內,就認為在這些道路上。

3、經緯度所在的周邊參照地物,如賓館、飯店、商場等周邊參照地物。

逆地理編碼的實現和關鍵技術

1、講矢量數據通過讀取通用格式,存入數據庫,並做一定的空間索引。數據存儲上,行政區域、道路數據、地物數據分開存儲。對具有特殊描述需求的項目,可以在道路和地物數據中加入自己的道路數據和地物數據,並設置優先級。在搜索算法中優先搜索。

2、對外提供查詢接口,通過讀取數據庫數據,並利用GIS基礎算法,得到經緯度位置描述結果。

3、核心算法:主要有點是否在區域內,兩點間經緯度距離、點是否在道路上。

逆地理編碼算法的擴展

通過這種方式,除實現逆地理編碼運算外,還可以實現地圖地物模糊查詢,地圖矩形框選、圓形框選,多邊形框選等功能。如圓形框選,即可實現搜索指定經緯度周邊一定距離範圍內的地物。

逆地理編碼的實現效果

1、數據存儲

技術分享

2、服務發布

技術分享

3、逆地理編碼前端展現

技術分享

4、擴展功能前端展現

地物搜索

技術分享

範圍搜索

技術分享

矩形框選

技術分享

多邊形框選

技術分享


本文出自 “開源GIS離線地圖” 博客,請務必保留此出處http://cdguiyi.blog.51cto.com/4275617/1922532

基於矢量數據的逆地理編碼功能實現