如何使用空间数据库检查 AIS 信号是不是从地理围栏发出?

Posted

技术标签:

【中文标题】如何使用空间数据库检查 AIS 信号是不是从地理围栏发出?【英文标题】:How to check an AIS signal is outgoing from a geofence with spatial database?如何使用空间数据库检查 AIS 信号是否从地理围栏发出? 【发布时间】:2021-10-18 06:37:45 【问题描述】:

我在 AWS Redshift 表 A 上有数万个地理围栏。

并且每 1 小时在表 B 上记录数以万计的 AIS 信号。

但是,我想检查并记录整个地理围栏的传入或传出 AIS。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

根据您对问题的描述,我猜需要使用 ST_Polygon() 将地理围栏转换为多边形。获得多边形(表 A)后,您需要获取 AIS 信号并使用 ST_Point() 将它们转换为地理位置点(表 B)。

当您将所有数据转换为兼容的地理位置格式时 - 您将使用 ST_Contains()。

我要补充一点,在 Redshift 中,地理位置数据可能需要一段时间,而且您很可能需要对所有多边形与所有地理位置点进行笛卡尔积。

希望我能正确理解您的问题。

【讨论】:

其实我已经使用 ST_Contains() 函数来检查传入的。但我想知道如何检查从地理围栏内部到外部的传出信号。此外,正如您在回复中提到的,笛卡尔积查询太重了。因此,我正在寻找解决方案。 你的桌子 B 看起来怎么样?即您有源 GPS 位置和目标 GPS 位置吗?有方向的迹象吗? 表B有纬度、经度、航向等字段,没有目标位置的坐标。

以上是关于如何使用空间数据库检查 AIS 信号是不是从地理围栏发出?的主要内容,如果未能解决你的问题,请参考以下文章

Android如何知道地理围栏何时过期?

如何使用 Ionic2(地理定位)检查 GPS 是不是启用?

React Native:如何检查是不是已授予地理定位权限

地理围栏 - 检查用户是不是已经在围栏内

如何检查给定坐标是不是属于多边形? (离线地理围栏)

如何检查地理位置是不是在半径范围内?