Клуб API Карт

Вычисление площади многоугольника

Пост в архиве.

Ни кто не считал площадь многоугольника в километрах?

Как понял стандартного средства для этого нет, но быть может есть какие-то альтернативы?

Есть способ вычисления, путем разбиения на треугольники, но этот вариант не подходит, т.к. многоугольник не всегда выпуклый.

8 комментариев
Алексей Yarrr!
28 января 2016, 02:46

Если алгебраически посчитать не получается, то можете попробовать подсчитать геометрически.

Только имейте ввиду, что земля — не куб, и эта вытянутая сфера режется на лепестки и растягивается к полюсам при проецировании на плоскость. Лучше считать площадь многоугольника на поверхности сферы, так точнее будет.

Андрей Грэй
28 января 2016, 02:46

Вообще я не нашел методов расчета площади алгебраически, но нашел то что полностью подходит под даную задачу - Неевклидова сферическая геометрия Римана.

В теории подходит практически идеально, на практике посморим. Единственным недостатком пока вижу элептическую форму Земли, но как мне кажется погрешность в расчетах должна будет проявляться только при больших многоугольниках с длиной стороны от нескольких десятков километров. Но может быть всплывут еще какие-то погрешности связанные с картами.

Только есть один большой недостаток. Для решения геометрических задач с использованием Сферической геометрии, необходимо знание углов многоугольника.

Сведения об углах полигонов как-то можно получить из API или тоже нужно самостоятельно вычислять?

Алексей Yarrr!
28 января 2016, 02:46

Сведения об углах — врядли ;-). Тригонометрия в помощь.

Андрей Грэй
28 января 2016, 02:46

Ну я так и подумал. Ладно, буду ваять сам :)

Площадь можно вычислить методом трапеций

 

    //расчет площади методом трапеций
    var ret = 0;
    for (var i = 0, l = countor.length - 1; i < l; ++i) {
        ret += (countor[i][0] - countor[i + 1][0]) * (countor[i][1] + countor[i + 1][1]) / 2;
    }
    return Math.abs(ret);

Это вернет площадь в попугая на квадратный хрен значает что.

Потому что на входе или геокоординаты, или пиксели. А на выходе нужны метры.

Осталось перевести попугаев в метры и все готово.

Андрей Грэй
28 января 2016, 02:46

Ага, спасибо, пошукаю на эту тему. Может быть мне этого будет достаточно.

 

Кстати, для проверки хорошо бы иметь какие-то эталонные измерительные предметы на карте. Может быт есть сведения о площадах каких-то лесов или озер или еще каких-то географических объектов, для тренировки на них?

Алексей Yarrr!
28 января 2016, 02:46

вики в помощь ;-)

 Площадь 31 722[2] км² 

Андрей Грэй
28 января 2016, 02:46

Логично :))) Спасибо