Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “确定”;reach";按地理分布_Sql_Database_Postgresql_Geolocation_Geospatial - Fatal编程技术网

Sql “确定”;reach";按地理分布

Sql “确定”;reach";按地理分布,sql,database,postgresql,geolocation,geospatial,Sql,Database,Postgresql,Geolocation,Geospatial,我收集了大量在不同地理位置生产的产品的签入。我想创建一个汇总指标,用于根据这些产品从原产地到全球的距离对其进行排名。例如,在加利福尼亚州、佛罗里达州和爱尔兰都柏林发现的缅因州生产的产品,其排名应该高于在加利福尼亚州以外从未见过的加利福尼亚州生产的产品 我应该看什么样的算法?您将如何处理此问题?MS SQL Server(我刚才发现的可能与您无关)包含空间数据类型,允许您计算(除其他外)由纬度和经度定义的两点之间的距离。所以这个代码:- DECLARE @p1 geography = geogra

我收集了大量在不同地理位置生产的产品的签入。我想创建一个汇总指标,用于根据这些产品从原产地到全球的距离对其进行排名。例如,在加利福尼亚州、佛罗里达州和爱尔兰都柏林发现的缅因州生产的产品,其排名应该高于在加利福尼亚州以外从未见过的加利福尼亚州生产的产品

我应该看什么样的算法?您将如何处理此问题?

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的参考: