(抱歉我的英语不好,但我会试着说清楚)
例如,我的道路数据形式如下:
Latitude Longitude
RoadA(consists of 2 dots)
31.263319 121.5555711
31.2619722 121.5564754
RoadB(consists of 3 dots)
31.2619722 121.5564754
31.2611567 121.557023
31.2610903 121.557088
如您所见,每条道路由几个(2~x)点组成。道路可能是一条曲线,需要很多点来描述它。在两个点之间,它们通过直线连接。
一旦我读完所有的道路数据,我会读到一组点,我的任务是,一旦给出一个新的点,我需要找出它是否在任何道路上。如果没有,我需要画一条垂直于最近的道路并找出踏板脚的坐标(道路上最近的点)。
查询量很大,所以我需要尽可能快的速度。我应该使用哪种数据结构?
答案 0 :(得分:-1)
游戏开发和理论中有一些空间分区方法。 也许你应该使用其中一个。 link
您应该在Binary,Quad,Oct,...树中对您的位置进行分区。 我认为最好的方法是使用Pairs地图。