Страницы: 1 2 След.
RSS
[ Закрыто ] Googlepolygon: удостовериться, что координаты точки принадлежат полигону
 
Добрый день, как удостовериться, что координаты точки принадлежат полигону?

Формулы не работают, хотя я их использовал и так и так....Специалисты, подскажите, пожалуйста, в чем ошибка.  
 
Цитата
anton6 написал: хотя я их использовал и так и так.
Надо было этак  :)
Модуль1 в  камин.
Изменено: Doober - 29.05.2016 23:50:33 (Замена файла)
 
Доброе время суток
Что-то Сергей у меня не выходит на таком варианте. Не всё так просто?
 
Спасибо Андрей, малость не смазал ручник :)
Забыл, что надо полигон замкнуть
Изменено: Doober - 29.05.2016 23:51:20
 
Что-то, Сергей, не бьёт, однако ;)  На ваял вариант по идее Проверка принадлежности точки многоугольнику (правда в ++ ни ногой, поэтому короткий вариант не вышел) и Пересекаются ли 2 отрезка?. Вроде работает, хотя при совпадении с вершиной относит их тоже к полигону, может и ещё чего.
anton6, успехов.
Изменено: Андрей VG - 30.05.2016 08:42:02
 
когда то скачал файлик - уже и не помню откуда и кто автор.
может кому нибудь пригодится.
в В1:С1 - координаты искомой точки.
 
Протестировал.... но результата нет

inside еще что-то показывает
inpolygon ничего... даже отсутствие значений...

Так же точки принадлежат одному и тому же полигону
Координаты брал из google
Помогите настроить точность
Спасибо заранее.
 
anton6 мой файл смотрели?
 
Доброе время суток
Цитата
Dima S написал:  anton6  мой файл смотрели?
А не поможет. ТС не только не благодарен (тема аж отсюда растёт), но ещё и безалаберен. Создал само пересекающиеся полигоны и хочет чтобы это работало. Алгоритм для Inside поправил, что-то я не в те ограничения ушёл.
Изменено: Андрей VG - 02.06.2016 07:35:04 (Забыл добавить файл)
 
Пока  спасибо за комплименты
Dima S, да смотрел, но не нашел его полезным
Полигоны если и пересекаются, то точки не принадлежат одному и тому же полигону
В каждом полигоне по 10 - 13 точек, а ИСТИНА только на одной - двух.
Более того, что 24 точки в полигоне не было...
 
Цитата
anton6 написал:
Полигоны если и пересекаются, то точки не принадлежат одному и тому же полигону
А причём тут принадлежность точек? Вы бы книжку ПОЧИТАЛИ по геометрии и по интернету бы ПОСМОТРЕЛИ, что все алгоритмы определения положения точки в полигоне РАБОТАЮТ при следующих условиях:
1. никакая вершина полигона не совпадет с другой вершиной полигона (не касается описания полигона в массиве, когда первая вершина повторяется в конце, как признак замыкания полигона)
2. Отрезки полигонов не пересекаются
3. Полигон замкнут (см. 1).

Антон, здесь ведь форум, а не школа, чтобы вас учить - принимайте участие в решении собственной проблемы. Иначе просто надоест, и ответов не дождётесь.
Цитата
anton6 написал:
Пока  спасибо за комплименты
Благодарность - она за то, что люди тратят на вас своё собственное время, а не как плата за решение - вы не в магазине. Или вы считаете, что облагодетельствовали своей задачей отвечающих вам?
Изменено: Андрей VG - 31.05.2016 22:41:58
 
Я не говорил, что я не благодарен..
Я благодарен за любое участие
Однако алгоритм не работает не смотря на знания по геометрии.
Почему, - мне самому было бы интересно установить.

Сегодня еще раз опробирую Ваш алгоритм.
Постараюсь расчертить полигоны без наложения
Хотя и в том примере, который дан, никакая вершина полигона не совпадает с другой вершиной. Во вложении координаты полигонов по задаче.  
 
Вот новые данные
http://radikal.ru/lfp/i042.radikal.ru/1606/00/6e017fded313.png/htm
На первой фотографии видно, что точки не принадлежат полигону.

http://radikal.ru/lfp/s009.radikal.ru/i308/1606/c2/07194324a865.png/htm
На второй ссылке точки полигона

Формула включает точки 83 и 91 в другой полигон.
И так практически по каждой зоне.
То не включает, до не дописывает.
Может задвоить принадлежность точки.  
Изменено: anton6 - 01.06.2016 21:21:03
 
anton6, свои темы можно редактировать. Совсем необязательно создавать ещё одно сообщение (удалил).
 
Доброе время суток
Цитата
Формула включает точки 83 и 91 в другой полигон.
Скорее всего это рёберный или вершинный случай. Вечером посмотрю, что можно сделать. А вы бы пока сделали график с линиями полигонов и тестируемых точек в вашем файле. Те картинки, что вы привели - это для форума по фотошопу. Или код функции тоже картинкой предоставить?
 
Вот здесь есть про полигон )
 
Антон, проверяйте. Только на будущее - когда используете функции не переставляйте местами значения аргументов - забавно может получиться и явно не то :)
Успехов.


P. S. Сергей, большое спасибо за приём замыкания массива, а то обычно такие костыли делал, а так, на мой взгляд, даже изящно получилось.
P. S. S. Юрий М, Andy конечно большая умница, но определять через сумму углов положение точки в полигоне - это перебор умища :)  Я, кстати, ТС на ExcelWord предлагал вполне рабочую функцию, сам ей пользовался в начале 2000 - содрал у Компьютер Пресс. Только вот ТС то ли не захотел, то ли не смог подготовить входной массив, как того требует функция.
 
Цитата
Андрей VG написал:
Только на будущее - когда используете функции не переставляйте местами значения аргументов -
В точку.В моей функции в файле anton6 местами поменяны x и y.сли вставить правильно,то и результат будет другим
Изменено: Doober - 01.06.2016 19:35:17
 
Andrei, так а что поменялось... 83 и 91 точки принадлежат ошибочно полигону по формуле, но они  в него не включены, принадлежат другому полигону. Почему они определены как ИСТИНА...это не ясно. Еще бывает, что точки с ИСТИНА принадлежат разным полигонам одновременно. Хотя полигоны не пересекаются.  
 
Доброе время суток
Антон
Цитата
anton6 написал:
Andrei, так а что поменялось... 83 и 91 точки принадлежат ошибочно полигону по формуле
В той колонке, где работает Inside выводится 0 и 1. Для этих точек 0.
В формуле Сергея вы вместо долготы и широты подаёте широту и долготу - поэтому и ошибка. Может что-то для внимательности попить?
 
Я сейчас про формулу InPolygon из последнего файла....которая  включает точки номер 83 и 91 из другого полигона... я не про Inside....
 
Цитата
Юрий М написал: Вот  здесь  есть про полигон )
Можно, конечно проверки написать, но это опять костыль...
Хочется, конечно inPolygon досконально понять, почему включаются точки из чужого полигона
 
Антон, извините за любопытсво, но почему именно InPolygon, а не последняя версия Inside (да там есть ещё проблема, если точка лежит на горизонтальной стороне) или решение Andy по ссылке Юрия М?
 
Андрей, есть нюансы использования
Если мне автоматизировать для своих нужд.... то.... inside, если выделяешь большее количество точек... (когда тянешь вниз рамку при выделении полигона и на пустые ячейки) выдает истину по точкам, которые полигону не принадлежат
Inpoligon этого не имеет, зато втягивает чужие точки в исследуемый полигон. И там и там надо что-то понять. Как это обойти.
Под inside нужно будет написать как-то так.... чтобы vba выделяла только массив.
Вообщем... я так не смогу.
Поэтому делаю акцент на полигон.  
 
Цитата
выдает истину по точкам, которые полигону не принадлежат
вы можете приложить пример такого поведения для последней версии Iside?
 
Вроде без отличий, последний релиз, вроде, стабильный) Спасибо!
 
Тестировал несколько раз, прилагаю файл.
В нем, к сожалению, нет работающего макроса. Макрос взят из последнего файла Юрия М
Есть неточности.
В разные полигоны включает одну и ту же точку одновременно.
Или определяет точку в другой полигон.
Смущает, конечно, что делает это все почему - то на последних точках.

Как-то так.
Много возился... много под эту идею автоматизировал других костылей... В итоге, успеха не достиг.
Прошу помощи.  
 
Цитата
anton6 написал:
Макрос взят из последнего файла Юрия М
Это не мой макрос )
 
#17 не работает

короче... г какое-то...
 
Доброе время суток
Цитата
anton6 написал:
короче... г какое-то...
Угу, по подправленному примеру - я исправил указание области координат полигонов с 1 по 8. Для 9 диапазон данных Q3:R9, а что у вас в формуле? Q$2:R$16 - и что вы после этого хотите, коли г на входе?
Свою возможную ошибку подправил - ввёл проверку на нахождение точки в экстенте полигона.
Страницы: 1 2 След.
Читают тему
Наверх