查找最接近输入纬度的经度(SQL Server 2008)


12

我的数据库中有一个点云(SQL Server 2008空间)。大约有600万条记录。共有3栏:id,值,geom。在输入经度上获得“值”的最佳方法是什么?

我是SQL Server 2008中空间查询的新手。有人可以发布一个简单的示例来查找geom列中的点,该点与输入纬度长匹配或最接近吗?



我试过了。但是有600万条记录,并且创建索引失败的原因不同。我现在尝试创建一个空白表,在geom上添加一个空间索引,然后添加数据。那样有用吗?
Shaunak 2011年

您遇到什么错误?索引会大大减慢加载速度,对于许多行,我认为加载后添加索引会快得多。性能将在很大程度上取决于索引,因此值得正确使用。
Kirk Kuykendall,

Answers:



4

这使用的是地理位置而非几何(如果数据是纬度/经度,则您的数据应为地理位置类型而不是几何)

“ SQL Server地理数据类型存储椭圆形(地球)数据,例如GPS纬度和经度坐标。”

要从经/纬度(-122.0 37.0)点中选择最近的5条记录,可以使用。

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);

什么是p?抱歉,我是一个新手,那就是为什么问
Shax 2012年

DECLARE @p地理-Andrew
Hill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.