Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вычисление площади по гео координатам / 11 сообщений из 11, страница 1 из 1
31.10.2010, 00:46
    #36929538
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
есть многоугольник на "шарике". известны его координаты(широта и долгота).
нужен алгоритм расчета площади многоугольника.

может кто нибудь с этим сталкивался? или ссылку находил?

поделитесь плз!!!
...
Рейтинг: 0 / 0
31.10.2010, 01:06
    #36929545
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
_devel,

Для сферы http://ru.wikipedia.org/wiki/Сферический_треугольник

А вот для эллипсоида не знаю.
...
Рейтинг: 0 / 0
31.10.2010, 01:07
    #36929546
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
Т.е. смысл тот же, но нужно вывести эту формулу с учетом разных радиусов
...
Рейтинг: 0 / 0
31.10.2010, 10:35
    #36929653
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
...
Рейтинг: 0 / 0
31.10.2010, 23:23
    #36930229
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
_devel,

разбить многоугольник на треугольники (триангуляция) и расчитать площать как объединение сферических треугольников по формуле как предложили выше.
...
Рейтинг: 0 / 0
01.11.2010, 08:35
    #36930395
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
Спасибо всем ОГРОМНОЕ!


Вот за ночь кое-что навоял, на "скорую руку".

C#
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
     private static double AreaPolygon(PointF[] points)
        {
            double s = 0;
            for (int i = 0; i < points.Length - 1; i++)
            {
                 s += (points[i + 1].X - points[i].X) * (points[i + 1].Y + points[i].Y) / 2;
            }
            return Math.Abs(s);
        }

        public static double GeoAreaPolygon(PointF[] points)
        {
            double Lekv = 40075700;
            double Lmer = 40008550; //40 008,6

            ArrayList lat = new ArrayList();
            ArrayList lon = new ArrayList();
            foreach (PointF point in points)
            {
                lat.Add(point.X);
                lon.Add(point.Y);
            }
            ArrayList nds = new ArrayList();
            for (int i = 0; i < points.Length; i++)
            {
                double mlat = (float)lat[i] * Lekv / 360;
                double radlat = (float)lat[i] / (180 / Math.PI);
                double mlon = (float)lon[i] * Math.Cos(radlat) * Lmer / 360;
                nds.Add(new PointF((float)mlat, (float)mlon));
            }
            PointF[] arrPoints = new PointF[points.Length];
            for (int i = 0; i < nds.Count; i++)
            {
                arrPoints[i] = (PointF)nds[i];
            }
            return AreaPolygon(arrPoints);
        }

AreaPolygon - считает площадь.
GeoAreaPolygon - приводит географические координаты к метрам и вызывает AreaPolygon

Вроде сходиться, но на маленьких площадях есть не маленькая погрешность.
...
Рейтинг: 0 / 0
01.11.2010, 10:02
    #36930471
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
_develВроде сходиться, но на маленьких площадях есть не маленькая погрешность.
Это очень странно. Должно быть наоборот.
...
Рейтинг: 0 / 0
01.11.2010, 10:35
    #36930534
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
mayton_develВроде сходиться, но на маленьких площадях есть не маленькая погрешность.
Это очень странно. Должно быть наоборот.
Так погрешность то может быть и в тех данных, с которыми он сверяется.
...
Рейтинг: 0 / 0
01.11.2010, 10:42
    #36930552
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
mayton,

Та нет, погрешность везде одинаковая, просто на маленьких площадях она более заметна.
...
Рейтинг: 0 / 0
01.11.2010, 15:10
    #36931343
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
_develmayton,
Та нет, погрешность везде одинаковая, просто на маленьких площадях она более заметна.
Ну так о том и речь. Если погрешность твоя, например из-за того, что ты считаешь для сферы, а не для эллипсоида, то как раз чем меньше площадь, тем твой треугольник ближе к треугольнику эллипсоида (и вообще к плоскому треугольнику) и погрешность должна быть меньше.
...
Рейтинг: 0 / 0
01.11.2010, 16:20
    #36931616
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вычисление площади по гео координатам
2 _devel

Для малых треугольников (думаю, менее градуса по угловой мере) площадь должна практически совпадать с площадью обычного треугольника, натянутого на координаты. Поэтому меня и удивила погрешность такого рода. Я не знаю что вы там написали "на скорую руку", но если такой простейший тест не проходит то ищите ошибку.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вычисление площади по гео координатам / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]