如何维护城市道路数据?(我应该使用什么数据结构)
How to maintain city road data? (What data structure should I use)
(对不起,我的英语不好,但我会尝试清楚地表达它)
例如,我以这样的形式获得了道路数据:
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)点组成。这条路可能是一条曲线,需要许多点来形容它。在两个点之间,它们通过直线连接。
一旦我阅读了所有道路数据,我将在一组点上阅读,我的任务是,一旦给出了一个新的点,我需要找出是否在任何道路上。如果没有,我需要向最近的道路垂直画一个垂直的路,并找出踏板脚的坐标(路上最近的一点)。
查询量很大,所以我需要尽可能快地速度。我应该使用哪种数据结构?
游戏开发和理论中有一些空间分区方法。也许您应该使用其中之一。链接
您应该在二进制,Quad,Oct,...树上分区位置。我认为最好的方法是使用成对的地图。
相关文章:
- 我应该使用什么来代替void作为变体中的替代类型之一
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 违反const正确性:我应该现实地期待什么问题
- 我应该包含什么来制作 boost.python 扩展?
- 我应该将什么传递给glfwSetWindowSizeCallback?
- 我应该在 main 函数中写什么来测试我的问题?
- 我应该返回什么而不是标准::shared_ptr<>&?
- 这是什么类型的C++语法,我应该采取什么步骤来理解这一点
- 在从 C++ 转换为 C# 的代码中,我应该使用什么而不是 memcpy?
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 我应该使用什么信号来终止/终止Windows上的应用程序
- 为什么我应该在scanf()-家族成员中包含一个长度修饰符作为参数?有什么好处?使用长度修改器进行扫描的作用
- 我应该在服务模板中的什么位置添加自己的代码?
- mfc CEdit 我应该什么时候进行验证?
- 在使用 boost 共享互斥体时,我应该在什么情况下使用 owns_lock() 函数
- 操纵器,C 我应该使用什么顺序
- 我应该什么时候使用(!somevar)vs essert()
- 我应该什么时候使用 *,什么时候使用 &?
- 我应该什么时候通过 T const& 返回?
- 我应该什么时候传递"T* const&"类型的指针?