如何维护城市道路数据? (我应该使用什么数据结构)

时间:2016-11-22 12:08:39

标签: c++ data-structures geometry

(抱歉我的英语不好,但我会试着说清楚)

例如,我的道路数据形式如下:

          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)点组成。道路可能是一条曲线,需要很多点来描述它。在两个点之间,它们通过直线连接。

一旦我读完所有的道路数据,我会读到一组点,我的任务是,一旦给出一个新的点,我需要找出它是否在任何道路上。如果没有,我需要画一条垂直于最近的道路并找出踏板脚的坐标(道路上最近的点)。

查询量很大,所以我需要尽可能快的速度。我应该使用哪种数据结构?

1 个答案:

答案 0 :(得分:-1)

游戏开发和理论中有一些空间分区方法。 也许你应该使用其中一个。 link

您应该在Binary,Quad,Oct,...树中对您的位置进行分区。 我认为最好的方法是使用Pairs地图。