我有大量在不同地理位置生产的产品的签到。我想创建一个汇总指标,用于根据这些产品在全球范围内从原产地出发的距离对它们进行排名。例如,在加利福尼亚州、佛罗里达州和爱尔兰都柏林发现的缅因州生产的产品的排名应该高于在加利福尼亚州以外没有出现过的加利福尼亚州制造的产品。
我应该看什么样的算法?你会如何处理这个问题?
我有大量在不同地理位置生产的产品的签到。我想创建一个汇总指标,用于根据这些产品在全球范围内从原产地出发的距离对它们进行排名。例如,在加利福尼亚州、佛罗里达州和爱尔兰都柏林发现的缅因州生产的产品的排名应该高于在加利福尼亚州以外没有出现过的加利福尼亚州制造的产品。
我应该看什么样的算法?你会如何处理这个问题?
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