2016-06-30 2 views
0

У меня есть таблица в базе данных, где я храню вершины многоугольников со следующей структурой: IdPolygon (int), Широта (реальная), долгота (реальная).Лучшая практика для определения того, находится ли точка внутри двумерного многоугольника (вершины многоугольника находятся на таблице)

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

Какова наилучшая практика с лучшей производительностью, чтобы проверить, находится ли точка внутри любого из полигонов, зарегистрированных в банке?

+0

Возможно, вам захочется исследовать алгоритмы поиска и найти тот, который вам подходит. –

+0

На самом деле список вершин не является достаточной информацией. Вы должны знать, в каком порядке они соединяются друг с другом. В противном случае, например, вы не можете указать обычный пятиугольник из пентаграммы (можно построить либо из того же набора вершин). Если у вас есть последовательность вершин, вы можете использовать алгоритм числовой обмотки, чтобы определить, находится ли точка внутри полигона. –

+0

Спасибо @JuanTomas. Вершины упорядочены после вашего наконечника. – Alvimar

ответ

0

Предлагаю вам хранить пространственные данные, используя поддержку пространственного типа с помощью sql-сервера, например. геометрия, геопространственность. Он имеет индексирование поддержки и пространственный запрос. См. Больше на https://msdn.microsoft.com/en-us/library/bb933991.aspx

+0

Спасибо. Я изменю тип данных и первоначальную стратегию. – Alvimar

Смежные вопросы