Data structures 我应该使用什么数据结构来索引地理坐标?

Data structures 我应该使用什么数据结构来索引地理坐标?,data-structures,geospatial,Data Structures,Geospatial,我有一组具有纬度和经度坐标的对象,我需要能够将另一组对象与最近的项目相匹配。简单的最近邻的东西。我的最佳想法是将lat/lng坐标转换为3D坐标,然后存储在K-d树或八叉树中,以供以后查找。它应该可以工作,并且对于所有的实际用途来说都足够好(见:),但这方面的一些东西感觉不舒服。我认为这是一部分,它实际上只是一个二维流形在三维空间 有没有更合适的结构可以使用,或者我只是想得太多了?甚至维基百科都说: k-d树(k-dimensional tree的缩写)是一种空间分区数据结构,用于在k-dime

我有一组具有纬度和经度坐标的对象,我需要能够将另一组对象与最近的项目相匹配。简单的最近邻的东西。我的最佳想法是将lat/lng坐标转换为3D坐标,然后存储在K-d树或八叉树中,以供以后查找。它应该可以工作,并且对于所有的实际用途来说都足够好(见:),但这方面的一些东西感觉不舒服。我认为这是一部分,它实际上只是一个二维流形在三维空间

有没有更合适的结构可以使用,或者我只是想得太多了?

甚至维基百科都说:

k-d树(k-dimensional tree的缩写)是一种空间分区数据结构,用于在k-dimensional空间中组织点

因此,继续使用2D点(不要将它们投影到3D或类似的东西)

将它们插入到树中,然后以对数时间查询树-在那里,所有人都很开心

甚至维基百科也说:

k-d树(k-dimensional tree的缩写)是一种空间分区数据结构,用于在k-dimensional空间中组织点

因此,继续使用2D点(不要将它们投影到3D或类似的东西)


将它们插入到树中,然后以对数时间查询树-在那里,所有人都很开心

我不明白为什么在存储到任何一种结构之前,您会考虑将lat/long坐标转换为3D坐标。它们的2D等价物肯定足够了吗?有两个问题:1。经线之间的距离在较高纬度处压缩,使沿一条轴的距离扭曲。2.直线不能穿过坐标系中的接缝,因此可以认为它们之间的距离比实际距离远得多。e、 g.180度经度两侧的两个点在该轴上的距离最大,尽管实际距离很近。在这种情况下,从测地线网格开始,并以此为基础构建数据结构。但是(a)我怀疑这样做的复杂性将大于使用最初用于平面应用的结构处理您概述的问题,并且(b)我从您的评论中推测,您的点基本上是随机分布在地球表面上的,它们不是表示(例如)点的点火车站不会——这些都不会发生在高纬度地区。我不明白你为什么要在存储到任何一个结构之前,将纬度/经度坐标转换为三维坐标。它们的2D等价物肯定足够了吗?有两个问题:1。经线之间的距离在较高纬度处压缩,使沿一条轴的距离扭曲。2.直线不能穿过坐标系中的接缝,因此可以认为它们之间的距离比实际距离远得多。e、 g.180度经度两侧的两个点在该轴上的距离最大,尽管实际距离很近。在这种情况下,从测地线网格开始,并以此为基础构建数据结构。但是(a)我怀疑这样做的复杂性将大于使用最初用于平面应用的结构处理您概述的问题,并且(b)我从您的评论中推测,您的点基本上是随机分布在地球表面上的,它们不是表示(例如)点的点火车站不会——这些都不会发生在高纬度地区。不幸的是,这有缺陷。有关详细信息,请参见对该问题的评论。不幸的是,这有缺陷。有关详细信息,请参见对该问题的评论。