地理空间搜索:变化的半径接收器和固定的事件点
Geospatial search: varying radius receptors and fixed event point
问题热值:
- 给定地球上的某个点,我们将其称为“事件点”
- 给定地球上一定数量的其他点,我们将其称为“受体”
- 鉴于任何受体周围都有一个圆形区域,半径可变,我们将其称为“接收区域”
- 鉴于接收区域的半径可以在一组离散大小 [1,10,20,50,100,200] 英里中变化
我想在线性时间内计算所有具有包含事件点的接收区域的接收器。
由于集群似乎是一种解决方案,我想知道 MongoDB GeoSpatial、Postgres GIS、MySQL Geospatial 和其他 DBMS 等各种解决方案如何处理此问题。
他们在内部使用集群吗?
无论如何:
对于这个问题,哪个是最好的“开箱即用”解决方案?
您 'what is the best solution?' 问题的答案是 "It depends"。
对于SQL服务器,空间数据特征的一个很好的概述是https://msdn.microsoft.com/en-us/library/bb933790.aspx
与您的问题相关的是空间索引:https://msdn.microsoft.com/en-us/library/bb895265.aspx
对于给出的示例,一个粗略的想法是为您的 Receptors 和 EventPoint 存储地理类型,然后在 where 子句中使用 STContains
函数。 https://msdn.microsoft.com/en-us/library/ff929274.aspx
一些伪SQL可能是:
DECLARE EventPoint Geography = ...
SELECT * FROM Receptors R WHERE R.Receptor.STContains(EventPoint)
希望有用。
问题热值:
- 给定地球上的某个点,我们将其称为“事件点”
- 给定地球上一定数量的其他点,我们将其称为“受体”
- 鉴于任何受体周围都有一个圆形区域,半径可变,我们将其称为“接收区域”
- 鉴于接收区域的半径可以在一组离散大小 [1,10,20,50,100,200] 英里中变化
我想在线性时间内计算所有具有包含事件点的接收区域的接收器。
由于集群似乎是一种解决方案,我想知道 MongoDB GeoSpatial、Postgres GIS、MySQL Geospatial 和其他 DBMS 等各种解决方案如何处理此问题。
他们在内部使用集群吗?
无论如何: 对于这个问题,哪个是最好的“开箱即用”解决方案?
您 'what is the best solution?' 问题的答案是 "It depends"。
对于SQL服务器,空间数据特征的一个很好的概述是https://msdn.microsoft.com/en-us/library/bb933790.aspx
与您的问题相关的是空间索引:https://msdn.microsoft.com/en-us/library/bb895265.aspx
对于给出的示例,一个粗略的想法是为您的 Receptors 和 EventPoint 存储地理类型,然后在 where 子句中使用 STContains
函数。 https://msdn.microsoft.com/en-us/library/ff929274.aspx
一些伪SQL可能是:
DECLARE EventPoint Geography = ...
SELECT * FROM Receptors R WHERE R.Receptor.STContains(EventPoint)
希望有用。