通过地理分布确定“到达”

时间:2013-10-21 01:50:22

标签: sql database postgresql geolocation geospatial

我为在不同地理位置制造的产品提供了大量的支票。我想创建一个汇总指标,用于根据他们从原点到全球的距离对这些产品进行排名。例如,在加利福尼亚州,佛罗里达州和爱尔兰都柏林发现的缅因州生产的产品的排名应该高于在加利福尼亚州以外没有出现的加利福尼亚产品。

我应该关注哪种算法?你会怎么做到这一点?

1 个答案:

答案 0 :(得分:1)

MS SQL Server(我刚刚发现可能与您无关)包括空间数据类型,允许您计算(除其他外)由纬度和经度定义的两个点之间的距离。所以这段代码: -

DECLARE @p1 geography = geography::Point(@lat1, @long1, 4326);

SELECT @distance=@p1.STDistance(geography::Point(@lat2, @long2, 4326))

会加载@distance,两点之间的距离为米。我从我编写的标量值函数中提取了代码 - 但它也可以直接针对表列。 4326幻数是对空间参考系统标识符(SRID)的引用,它提供以米为单位的答案。此计算没有考虑高度和地球的失真(其他功能/ SRID可用于此),但它可能足以满足大多数目的。

不幸的是,如果你被限制在postgresql中,这个答案是没有用的(尽管它可能指向你进一步调查的方向)。

可以在此处找到Sql Server的参考:http://technet.microsoft.com/en-us/library/bb933790.aspx