Anonymous | Login | Signup for a new account | 21-11-24 12:50 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001641 | SAS.Планета | [All Projects] Хотелка | public | 19-10-2012 17:34 | 23-02-2013 11:06 | ||||
Reporter | Fetser | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | sometimes | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | XP | OS Version | SP3 | ||||
Product Version | 121010 | ||||||||
Target Version | 131111 | Fixed in Version | 131111 | ||||||
Summary | 0001641: Считать площадь сложных полигонов хотя-бы приблизительно | ||||||||
Description | Неоднократно писал данную хотелку, но к сожалению количество полигонов при подсчёте площади которых выходит NAN м2 достаточно велико. После каждого исправления методов расчёта "стало лучше, но работать пока нельзя" И что обидно Глобал Мапер считает любые полигоны. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | Чебоксары.kmz [^] (28,044 bytes) 19-10-2012 17:34 Не считается.kmz [^] (499 bytes) 23-10-2012 08:25 Считается.kmz [^] (492 bytes) 23-10-2012 08:26 | ||||||||
Notes | |
(0009648) vdemidov (manager) 21-10-2012 17:21 |
Жду алгоритма, который посчитает эту площадь. А пока есть то что есть. |
(0009674) Fetser (reporter) 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 кв. км |
(0009677) vdemidov (manager) 22-10-2012 14:28 |
Это не полигон. Это фрактал какой-то. Я пас. |
(0009679) Tolik (manager) 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 (reporter) 22-10-2012 15:14 edited on: 22-10-2012 15:30 |
>Я не знаю, как это по науке считать А наука их именно так и создаёт. Рассчитывается по определённой формуле каждый пиксель растрового изображения на предмет того входит в зону или не входит. И полученное растровое изображение переводится в вектор. Так что по сути данный расчёт площади для таких типов полигонов самый верный. Радиомобайл вообще суммирует закрашенные пиксели растрового изображения и перемножает на среднюю площадь одного пиксела. И точность расчёта будет очень высокая потому что, не смотря на сложный внешний вид, это изуродованный рельефом круг. |
(0009690) zed (manager) 22-10-2012 18:15 |
Я так понимаю, что проблема из-за того, что полигон самопересекающийся? Просто, на ура гуглятся алгоритмы расчёта площади многоугольника методом "отсечения ушей", где полигон разбивается на кучу треугольников, сумма площадей которых и даёт результат. Но про самопересечения там ни слова. |
(0009691) zed (manager) 22-10-2012 18:21 |
О, нашёл: Changeset: 3111 (22c4a6ae68cf) сделал вычисление площади триангуляцией, теперь все точно. User: azya Date: 2011-03-24 17:24:38 +0300 (19 months) ...и потом было ещё несколько доработок этого метода. Можно попробовать отрефакторить этот момент, но только надо поднять все старые баги с подсчётом площади, чтобы было на чём тестировать. Может помочь, если проблема не в алгоритме, а в реализации. |
(0009692) zed (manager) 22-10-2012 18:26 |
Либо, если тут действительно самопересечения портят всю малину, то надо искать алгоритм, который бы разбил самопересекающийся полигон на несколько нормальных, без самопересечения и считать уже по ним. Fetser А можете сделать маленький полигон, для которого выводит NAN? |
(0009708) Fetser (reporter) 23-10-2012 08:25 edited on: 23-10-2012 11:12 |
Самопересечение тут не причём. Получил два совершенно одинаковых на внешний вид полигона один из них считается другой нет. Зависит от того какой по счёту является точка с совпадающими координатами. В полигоне какой не хочет считаться она вторая, а если полигон рисовать начиная с другой точки то он считается. |
(0009810) Tolik (manager) 02-11-2012 07:16 |
В версии 121102.6637 при попытке вывести информацию о метке Чебоксары вылетает floating point чё-то там. ELF прилагается. |
(0009813) vdemidov (manager) 02-11-2012 08:27 |
Ну эта авешка не совсем в тему этого бага, но уже пофиксил. |
(0010583) zed (manager) 18-02-2013 13:10 |
Удалось немного улучшить ситуацию - прикреплённые к тикету полигоны считаются. Применил способ разбиения исходного полигона на относительно мелкие кусочки, и расчёт площади проходит уже для каждого отдельного куска. Площадь по-прежнему считает старый алгоритм и иногда он выдаёт NAN и, соответственно, площадь таких кусков игнорируется. Но в рамках этого тикета - считать хотя бы приблизительно, задачу можно считать решённой (если тестирование на прикреплённом exe будет удачным). |
(0010584) zed (manager) 18-02-2013 16:13 edited on: 18-02-2013 16:43 |
Нашёл ещё более удачный вариант - полигон сразу разбивается на треугольники, так что про старый алгоритм можно забыть как страшный сон. Прикрепил exe. Изменения залил в vsasas |
(0010586) vdemidov (manager) 18-02-2013 21:41 |
А разве там не на плоские треугольники расчитано? Я пока не очень вникал, правда. |
(0010587) zed (manager) 19-02-2013 04:51 |
Там всё верно. |
Users who viewed this issue | |
User List | Anonymous (4407x), kalakotkas (1x), ReViZe (1x) |
Total Views | 4409 |
Last View | 21-11-2024 12:50 |
Issue History | |||
Date Modified | Username | Field | Change |
19-10-2012 17:34 | Fetser | New Issue | |
19-10-2012 17:34 | Fetser | File Added: Чебоксары.kmz | |
21-10-2012 17:21 | vdemidov | Note Added: 0009648 | |
21-10-2012 17:21 | vdemidov | Status | new => confirmed |
21-10-2012 17:21 | vdemidov | Target Version | => 50xxxx |
22-10-2012 12:38 | Fetser | Note Added: 0009674 | |
22-10-2012 12:43 | Fetser | Note Edited: 0009674 | View Revisions |
22-10-2012 12:51 | Fetser | Note Edited: 0009674 | View Revisions |
22-10-2012 14:28 | vdemidov | Note Added: 0009677 | |
22-10-2012 15:05 | Tolik | Note Added: 0009679 | |
22-10-2012 15:14 | Fetser | Note Added: 0009680 | |
22-10-2012 15:19 | Tolik | Note Edited: 0009679 | View Revisions |
22-10-2012 15:20 | Tolik | Note Edited: 0009679 | View Revisions |
22-10-2012 15:30 | Fetser | Note Edited: 0009680 | View Revisions |
22-10-2012 18:15 | zed | Note Added: 0009690 | |
22-10-2012 18:21 | zed | Note Added: 0009691 | |
22-10-2012 18:26 | zed | Note Added: 0009692 | |
23-10-2012 08:25 | Fetser | Note Added: 0009708 | |
23-10-2012 08:25 | Fetser | File Added: Не считается.kmz | |
23-10-2012 08:26 | Fetser | File Added: Считается.kmz | |
23-10-2012 08:41 | Fetser | Note Edited: 0009708 | View Revisions |
23-10-2012 11:12 | Fetser | Note Edited: 0009708 | View Revisions |
02-11-2012 07:16 | Tolik | Note Added: 0009810 | |
02-11-2012 07:17 | Tolik | File Added: SASPlanet.Debug.elf | |
02-11-2012 08:27 | vdemidov | Note Added: 0009813 | |
18-02-2013 13:01 | zed | File Added: SASPlanet.PolyTest.7z | |
18-02-2013 13:10 | zed | Note Added: 0010583 | |
18-02-2013 16:13 | zed | Note Added: 0010584 | |
18-02-2013 16:14 | zed | File Deleted: SASPlanet.PolyTest.7z | |
18-02-2013 16:40 | zed | File Added: SASPlanet.7z | |
18-02-2013 16:43 | zed | Note Edited: 0010584 | View Revisions |
18-02-2013 21:41 | vdemidov | Note Added: 0010586 | |
19-02-2013 04:51 | zed | Note Added: 0010587 | |
22-02-2013 13:41 | zed | Project | SAS.Планета => SACS.Планета |
22-02-2013 13:42 | zed | Status | confirmed => resolved |
22-02-2013 13:42 | zed | Resolution | open => fixed |
22-02-2013 13:42 | zed | Assigned To | => zed |
22-02-2013 13:42 | zed | File Deleted: SASPlanet.7z | |
22-02-2013 13:42 | zed | File Deleted: SASPlanet.Debug.elf | |
23-02-2013 09:28 | vdemidov | Project | SACS.Планета => SAS.Планета |
23-02-2013 11:06 | zed | Fixed in Version | => 131111 |
23-02-2013 11:06 | zed | Target Version | 50xxxx => 131111 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |