Notes |
|
|
Жду алгоритма, который посчитает эту площадь. А пока есть то что есть. |
|
|
(0009674)
|
Fetser
|
22-10-2012 12:38
(edited on: 22-10-2012 12:51) |
|
Версия SASPlanet_101206 такие полигоны считает (может конечно и неточно). А нельзя ли сделать так что если новая версия не может посчитать, то вместо выдачи NAN программа такие полигоны считала по методу что был в SASPlanet_101206?
Насчёт точности, если верить глобалмаперу то полигон 6890,4 кв.км а SASPlanet_101206 считает 5579,67 кв. км Расхождение есть но лучше чем ничего.
а вот сравнение простого полигона:
GlobalMapper 26854 кв. км
SASPlanet_121010 27072 кв. км
SASPlanet_101206 29313 кв. км
|
|
|
|
Это не полигон. Это фрактал какой-то. Я пас. |
|
|
(0009679)
|
Tolik
|
22-10-2012 15:05
(edited on: 22-10-2012 15:20) |
|
Заинтересовался, что за фрактал, тоже открыл :)
Да ладно, ничё особенного.
Я не знаю, как это по науке считать, но придумал, как оцениить прямо сейчас.
Кликаем на полигон пр.кн., выбираем операции с выдел. областью, скачать.
САС показывает 16123 тайла на зуме 16 (больше зум - дольше думать будет, зато точнее), осталось умножить на площадь тайла где-то в центре этой области. Нарисовал полигон в 1 тайл z16, площадь его показывает 460434 м2. Итого 7423 км2 - грубо, конечно, и больше чем на самом деле (т.к. тайлы за края залазят).
Короче, это можно автоматизировать и сделать точнее, поделив площадь краевых тайлов пополам.
P.S. z18: 244684 тайла x 28630.31 m2 = 7005 км2
|
|
|
(0009680)
|
Fetser
|
22-10-2012 15:14
(edited on: 22-10-2012 15:30) |
|
>Я не знаю, как это по науке считать
А наука их именно так и создаёт. Рассчитывается по определённой формуле каждый пиксель растрового изображения на предмет того входит в зону или не входит. И полученное растровое изображение переводится в вектор. Так что по сути данный расчёт площади для таких типов полигонов самый верный. Радиомобайл вообще суммирует закрашенные пиксели растрового изображения и перемножает на среднюю площадь одного пиксела. И точность расчёта будет очень высокая потому что, не смотря на сложный внешний вид, это изуродованный рельефом круг.
|
|
|
(0009690)
|
zed
|
22-10-2012 18:15
|
|
Я так понимаю, что проблема из-за того, что полигон самопересекающийся?
Просто, на ура гуглятся алгоритмы расчёта площади многоугольника методом "отсечения ушей", где полигон разбивается на кучу треугольников, сумма площадей которых и даёт результат. Но про самопересечения там ни слова. |
|
|
(0009691)
|
zed
|
22-10-2012 18:21
|
|
О, нашёл:
Changeset: 3111 (22c4a6ae68cf) сделал вычисление площади триангуляцией, теперь все точно.
User: azya
Date: 2011-03-24 17:24:38 +0300 (19 months)
...и потом было ещё несколько доработок этого метода.
Можно попробовать отрефакторить этот момент, но только надо поднять все старые баги с подсчётом площади, чтобы было на чём тестировать. Может помочь, если проблема не в алгоритме, а в реализации. |
|
|
(0009692)
|
zed
|
22-10-2012 18:26
|
|
Либо, если тут действительно самопересечения портят всю малину, то надо искать алгоритм, который бы разбил самопересекающийся полигон на несколько нормальных, без самопересечения и считать уже по ним.
Fetser
А можете сделать маленький полигон, для которого выводит NAN? |
|
|
(0009708)
|
Fetser
|
23-10-2012 08:25
(edited on: 23-10-2012 11:12) |
|
Самопересечение тут не причём. Получил два совершенно одинаковых на внешний вид полигона один из них считается другой нет. Зависит от того какой по счёту является точка с совпадающими координатами. В полигоне какой не хочет считаться она вторая, а если полигон рисовать начиная с другой точки то он считается.
|
|
|
(0009810)
|
Tolik
|
02-11-2012 07:16
|
|
В версии 121102.6637 при попытке вывести информацию о метке Чебоксары вылетает floating point чё-то там. ELF прилагается. |
|
|
|
Ну эта авешка не совсем в тему этого бага, но уже пофиксил. |
|
|
(0010583)
|
zed
|
18-02-2013 13:10
|
|
Удалось немного улучшить ситуацию - прикреплённые к тикету полигоны считаются.
Применил способ разбиения исходного полигона на относительно мелкие кусочки, и расчёт площади проходит уже для каждого отдельного куска. Площадь по-прежнему считает старый алгоритм и иногда он выдаёт NAN и, соответственно, площадь таких кусков игнорируется. Но в рамках этого тикета - считать хотя бы приблизительно, задачу можно считать решённой (если тестирование на прикреплённом exe будет удачным). |
|
|
(0010584)
|
zed
|
18-02-2013 16:13
(edited on: 18-02-2013 16:43) |
|
Нашёл ещё более удачный вариант - полигон сразу разбивается на треугольники, так что про старый алгоритм можно забыть как страшный сон.
Прикрепил exe. Изменения залил в vsasas
|
|
|
|
А разве там не на плоские треугольники расчитано? Я пока не очень вникал, правда. |
|
|
(0010587)
|
zed
|
19-02-2013 04:51
|
|
|