Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / По заданной точке найти полигон / 19 сообщений из 19, страница 1 из 1
09.06.2011, 20:43
    #37303258
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Подскажите, пожалуйста, алгоритм нахождения полигона которому принадлежит заданная точка.
Суть такова:
Есть полигоны(выпуклые и не выпуклые без самопересечений)
Нужно определить вхождение точки в полигон.
Пробовал перебирать все полигоны проверяя на вхождение точки(методом луча, подсчёт углов, триангуляция) предварительно выбрав полигоны которые могут попасть под условия отбора(т.е. плюс минус X Y), но быстродействие никакое.
Может кто то сталкивался с данной задачей.
...
Рейтинг: 0 / 0
10.06.2011, 11:06
    #37303775
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
timtim,

Цифры, статистика, подробности?
...
Рейтинг: 0 / 0
10.06.2011, 15:55
    #37304485
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Бенедикт,

Таблица ~3 млн строк(id,lat, lon), от 8 секунд, экспериментирую пока.
...
Рейтинг: 0 / 0
10.06.2011, 15:59
    #37304493
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
полигоны имеют от 400 до 23000 точек
...
Рейтинг: 0 / 0
10.06.2011, 16:37
    #37304582
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
timtim,

О как.

Т. е. единицы тысяч полигонов. Могут пересекаться?
Ортодромия в данной проекции (ребро многоугольника) и на данных растояниях, надеюсь, считается отрезком прямой?
Сколько можно отдать памяти (оперативки и дисковой) под постороение вспомогательных индексов?
Сколько сейчас в процентном соотношении занимает поиск многоугольников-кандидатов к процедуре определения попадания точки внутрь многоугольника?
...
Рейтинг: 0 / 0
10.06.2011, 16:52
    #37304619
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Бенедикт,

Могут иметь общие точки.
Пока на плоскости считаю.
Хочется вообще отказаться от таблицы(в бинарном виде как то хочу всё это описать, пока объёмы большие получаются).
Поиск многоугольников-кандидатов, при использовании таблицы на сервере сейчас самая не трудозатратная операция.
...
Рейтинг: 0 / 0
10.06.2011, 17:15
    #37304661
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Точки-то понятно как заданы... А сами полигоны каким методом задаются?
И кстати, сколько примерно "кандидатов" в среднем набирается каждый раз?
...
Рейтинг: 0 / 0
10.06.2011, 17:22
    #37304673
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
AndreTM,

Полигоны задаются точками которые описывают полигон по часовой стрелке(первая точка <> последней).
В среднем 2-3 кандидата отбираются.
...
Рейтинг: 0 / 0
10.06.2011, 17:25
    #37304677
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
timtim,

если поиск кандидатов - "дешёвая" задача, и многоугольники могут иметь общие точки (а то и рёбра?), то надо упрощать сами многоугольники, превращая их в набор выпуклых многугольников, а в пределе - треугольников. Но это стОит памяти.

Насчёт желания - поимайте сначала одного зайца.
...
Рейтинг: 0 / 0
10.06.2011, 17:28
    #37304682
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Бенедикт,
Да, треугольники самое оптимальное, но память!
...
Рейтинг: 0 / 0
10.06.2011, 17:29
    #37304684
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
timtim,

ну а в абсолютном времени, если есть самый большой по количеству вершин многоугольник, сколько работает процедура определения попадания точки?
...
Рейтинг: 0 / 0
10.06.2011, 17:39
    #37304697
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Бенедикт,

Пока неприемлемо вообще по времени.
Смысл примерно в следующем (в идеале), переместил курсор и получил номер страны, федерального округа, района, улуса.
...
Рейтинг: 0 / 0
10.06.2011, 17:45
    #37304709
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
а ты через API делаешь свои регионы? можно было бы тогда PtInRegion заюзать
...
Рейтинг: 0 / 0
10.06.2011, 17:48
    #37304712
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
тут выкладывал, тебе надо насоздавать свои регионы в коде при открытии формы, потом только поиск по массиву созданных регионов.

Помогите пож
...
Рейтинг: 0 / 0
10.06.2011, 17:48
    #37304715
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Konst_One,

Пробовал - при большом количестве точек неприемлемо.
Хотя пробовал так «на посмотреть» надо ещё разок попробовать.
...
Рейтинг: 0 / 0
10.06.2011, 17:50
    #37304718
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
timtim,

понятно, что неприемлемо, не понятно, почему. Тот же метод трассировки луча линеен по количеству рёбер. Даже при 23000 он должен отрабатывать менее чем за секунду, IMHO. На каком этапе задержка?
...
Рейтинг: 0 / 0
10.06.2011, 17:51
    #37304720
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
тоже самое можно и полиполигонам делать, API посмотри соответствующее. когда-то делал графическую рисовалку , где линии со стрелками тягал , как раз рисовал через APIполигоны и искал их по координатам мыши, работало очень шустро
...
Рейтинг: 0 / 0
10.06.2011, 18:12
    #37304758
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
Я возьму тайм-аут, что бы не пудрить Вам мозг.
У меня смешалось всё(в коде, голове). Надо всё переосмыслить и опробовать ещё раз.
Спасибо за ответы!
...
Рейтинг: 0 / 0
10.06.2011, 18:36
    #37304789
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По заданной точке найти полигон
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / По заданной точке найти полигон / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]