#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 есть такие поля, как широта, долгота, курс, и нет координат для целевого местоположения.