Точка в алгоритме полигона, который обрабатывает полигоны, которые колеблются между утренним

ВАРИАНТ ИСПОЛЬЗОВАНИЯ. Что-то вроде этого.

SELECT Salable =
        CASE Obsolete
        WHEN 'N' THEN 1
        ELSE 0
    END
6
задан marxy 24 July 2009 в 00:58
поделиться

3 ответа

Другой (более простой) вариант, IMO, заключается в том, чтобы просто проверить этот особый случай, и если он существует, примените преобразование к точке запроса и многоугольнику. Например, если он перекрывает антимеридиан, просто переведите все на определенную величину долготы, чтобы он не перекрывал меридиан, и выполните стандартный тест.

2
ответ дан 17 December 2019 в 07:07
поделиться

Это, вероятно, излишество, но вы могли бы рассмотреть возможность использования сферических многоугольников вместо того, чтобы рассматривать карту как плоскость. Вот библиотека на Java, которая обрабатывает их и может выполнять проверки точки в сферическом многоугольнике. Хотя, если у вас есть многоугольники, которые содержат более половины земного шара или оба полюса, у вас могут возникнуть проблемы, поскольку определение замкнутой области начинает ломаться.

1
ответ дан 17 December 2019 в 07:07
поделиться

Спасибо за предложения. В конце концов, многоугольник, с которым я тестирую, представляет собой прямоугольник, поэтому, если он пересекает антемеридиан (у него есть долгота разных знаков), разрежьте его на два многоугольника, по одному с каждой стороны, и запросите объекты, которые пересекают любой из них.

0
ответ дан 17 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: