SASGIS - SAS.Планета
View Issue Details
0003324SAS.Планета[All Projects] Хотелкаpublic13-03-2018 12:2828-08-2024 16:00
zed 
 
normalminorhave not tried
confirmedopen 
160707 
24xxxx 
0003324: Добавить алгоритм расчёта площадей из GeographicLib
У нас эта библиотека сейчас используется для расчёта расстояний, но как оказывается, она умеет считать и площади (и периметры) полигонов (описание для С++, но функционал доступен и из Си API: GeographicLib::PolygonAreaT).

Сейчас у нас для расчёта площади используется копи-паста из QGIS и переход на библиотечный алгоритм мне видится более разумным. Можно сделать 2 алгоритма и вынести в настройки, какой конкретно использовать.
На заметку: алгоритм из GeographicLib работает с простыми полигонами без самопересечений. Так что предварительно полигоны надо "упрощать" при помощи Clipper-а или ещё как.
No tags attached.
related to 0003755resolved zed Неверный подсчет площади 
Issue History
13-03-2018 12:28zedNew Issue
13-03-2018 12:28zedStatusnew => confirmed
01-04-2021 17:06zedNote Added: 0020081
01-04-2021 17:07zedRelationship addedrelated to 0003755
28-08-2024 15:55zedNote Added: 0020492
28-08-2024 16:00zedNote Edited: 0020492bug_revision_view_page.php?bugnote_id=20492#r7891
28-08-2024 16:00zedNote Edited: 0020492bug_revision_view_page.php?bugnote_id=20492#r7892

Notes
(0020081)
zed   
01-04-2021 17:06   
Уже и QGIS переходит на эту библиотеку: https://github.com/qgis/QGIS/pull/41726
(0020492)
zed   
28-08-2024 15:55   
(edited on: 28-08-2024 16:00)
Текущий алгоритм у нас так же не поддерживает самопересечения. Всё ровно так же, как описано в справке к geographiclib:

Arbitrarily complex polygons are allowed. In the case self-intersecting
of polygons the area is accumulated "algebraically", e.g., the areas of
the 2 loops in a figure-8 polygon will partially cancel.

Надо что-то думать.