ВАРИАНТ ИСПОЛЬЗОВАНИЯ. Что-то вроде этого.
SELECT Salable =
CASE Obsolete
WHEN 'N' THEN 1
ELSE 0
END
Другой (более простой) вариант, IMO, заключается в том, чтобы просто проверить этот особый случай, и если он существует, примените преобразование к точке запроса и многоугольнику. Например, если он перекрывает антимеридиан, просто переведите все на определенную величину долготы, чтобы он не перекрывал меридиан, и выполните стандартный тест.
Это, вероятно, излишество, но вы могли бы рассмотреть возможность использования сферических многоугольников вместо того, чтобы рассматривать карту как плоскость. Вот библиотека на Java, которая обрабатывает их и может выполнять проверки точки в сферическом многоугольнике. Хотя, если у вас есть многоугольники, которые содержат более половины земного шара или оба полюса, у вас могут возникнуть проблемы, поскольку определение замкнутой области начинает ломаться.
Спасибо за предложения. В конце концов, многоугольник, с которым я тестирую, представляет собой прямоугольник, поэтому, если он пересекает антемеридиан (у него есть долгота разных знаков), разрежьте его на два многоугольника, по одному с каждой стороны, и запросите объекты, которые пересекают любой из них.