Как проверить, что сигнал АИС исходит из геозоны с пространственной базой данных?

#python #amazon-redshift #ais #geofence

Вопрос:

У меня есть десятки тысяч геозон в таблице красного смещения AWS A.

А также регистрация десятков тысяч сигналов AIS каждые 1 час на таблице B.

Тем не менее, я хочу проверить и зарегистрировать, какая АИС является входящей или исходящей для целых геозон.

Как я могу этого достичь?

Ответ №1:

Из вашего описания проблемы я бы предположил, что геозону необходимо преобразовать в полигон с помощью ST_Polygon(). Как только у вас появятся полигоны (таблица А), вам нужно будет принять сигналы AIS и преобразовать их в точки геолокации (таблица Б) с помощью ST_Point().

Когда все ваши данные будут преобразованы в совместимый формат геолокации — вы будете использовать ST_Contains().

Я добавлю, что данные о геолокации могут занять некоторое время в красном смещении, и вам, скорее всего, придется сделать декартово произведение всех ваших полигонов на все ваши точки геолокации.

Надеюсь, я правильно понял вашу проблему.

Комментарии:

1. На самом деле, я использовал функцию ST_Contains() для проверки входящих сообщений. но мне интересно, как проверить исходящие сигналы изнутри и снаружи геозоны. Кроме того, как вы упомянули в ответе, запрос декартова произведения слишком тяжел. Поэтому я ищу решение.

2. Как выглядит ваш столик В? т. е. у вас есть исходное местоположение GPS и целевое местоположение GPS? Есть ли какие-то указания на направление?

3. В таблице B есть такие поля, как широта, долгота, курс, и нет координат для целевого местоположения.