Самостоятельное создание простой электронной карты
-
- Участник
- Сообщения: 99
- Зарегистрирован: 17 июн 2012, 11:11
- Репутация: 1
- Откуда: Новосибирск
- Контактная информация:
Самостоятельное создание простой электронной карты
Всем здравствуйте.
Разрабатываю приложение, в котором нужны знания, которых у меня нет, пытаюсь разобраться, но в голове сумбур пока.
Приложение довольно схематично отображает участок нашей необъятной Родины - отображается граница РФ и сопредельных государств, береговая линия, важные населенные пункты. Данные хранятся в географических координатах. Вывод графики осуществляется с помощью opengl в в виде векторов; земной шар взят за идеальную сферу. Т.о., как я понимаю, проецировать мне не нужно, т.к. я же не составляю карту, а просто в трехмерном пространстве показываю трехмерную модель участка земной поверхности, правильно? Т.е. просто беру широту и долготу и по простым тригонометрическим формулам перевожу в x, y, z?
И правильно ли я понял, что геоданные всегда хранятся в какой-то проекции, причем самой лучшей не бывает, и если имеющаяся проекция не позволяет напрямую определять расстояния, то нужно перевести в другую проекцию и в ней произвести расчеты? Т.е. получается, что с помощью GDAL я могу загрузить данные, проверить в какой они проекции и потом перевести их с помощью proj4 в нужную для расчета расстояний проекции и в ней подсчитать?
Разрабатываю приложение, в котором нужны знания, которых у меня нет, пытаюсь разобраться, но в голове сумбур пока.
Приложение довольно схематично отображает участок нашей необъятной Родины - отображается граница РФ и сопредельных государств, береговая линия, важные населенные пункты. Данные хранятся в географических координатах. Вывод графики осуществляется с помощью opengl в в виде векторов; земной шар взят за идеальную сферу. Т.о., как я понимаю, проецировать мне не нужно, т.к. я же не составляю карту, а просто в трехмерном пространстве показываю трехмерную модель участка земной поверхности, правильно? Т.е. просто беру широту и долготу и по простым тригонометрическим формулам перевожу в x, y, z?
И правильно ли я понял, что геоданные всегда хранятся в какой-то проекции, причем самой лучшей не бывает, и если имеющаяся проекция не позволяет напрямую определять расстояния, то нужно перевести в другую проекцию и в ней произвести расчеты? Т.е. получается, что с помощью GDAL я могу загрузить данные, проверить в какой они проекции и потом перевести их с помощью proj4 в нужную для расчета расстояний проекции и в ней подсчитать?
Последний раз редактировалось drug 12 авг 2012, 06:43, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Самостоятельное создание простой электронной карты
Данные необязательно хранить спроецированными, вполне можно обойтись географическими координатами (долгота/широта). В вашем случае, действительно, вникать в картографию нет необходимости. Если исходные данные спроецированы, перепроецируйте в долготу/широту с помощью GDAL/OGR.
Измерять расстояния на плоскости - не лучшая идея. Все без исключения проекции искажают расстояния. Лучше воспользуйтесь формулами для сферы или эллипсоида:
en.wikipedia.org/wiki/Great-circle_distance
en.wikipedia.org/wiki/Vincenty%27s_formulae
Измерять расстояния на плоскости - не лучшая идея. Все без исключения проекции искажают расстояния. Лучше воспользуйтесь формулами для сферы или эллипсоида:
en.wikipedia.org/wiki/Great-circle_distance
en.wikipedia.org/wiki/Vincenty%27s_formulae
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: Самостоятельное создание простой электронной карты
Таким образом Вы используете ортометрическую проекцию.drug писал(а):…просто беру широту и долготу и по простым тригонометрическим формулам перевожу в x, y, z…
Нельзя делать карты и быть свободным от картографии

The purpose of computing is insight, not numbers
-
- Участник
- Сообщения: 99
- Зарегистрирован: 17 июн 2012, 11:11
- Репутация: 1
- Откуда: Новосибирск
- Контактная информация:
Re: Самостоятельное создание простой электронной карты
Т.е. достаточно будет изучить GDAL? За формулы спасибо.
А вот если возникнет задача вокруг точки с географическими координатами начертить окружность определенного радиуса, то правильным будет подход найти с помощью формул все точки лежащие на дальности равной заданному радиусу и с азимутом, изменяющимся от 0 до 360 градусов с определенным шагом и соединить их между собой или есть более элегантные решения этого вопроса?
А вот если возникнет задача вокруг точки с географическими координатами начертить окружность определенного радиуса, то правильным будет подход найти с помощью формул все точки лежащие на дальности равной заданному радиусу и с азимутом, изменяющимся от 0 до 360 градусов с определенным шагом и соединить их между собой или есть более элегантные решения этого вопроса?
-
- Участник
- Сообщения: 99
- Зарегистрирован: 17 июн 2012, 11:11
- Репутация: 1
- Откуда: Новосибирск
- Контактная информация:
Re: Самостоятельное создание простой электронной карты
Ну строго говоря Вы правы, я имел в виду, что мне ее делать не нужно, ее делает opengl за меня.ErnieBoyd писал(а): Таким образом Вы используете ортометрическую проекцию.
Нельзя делать карты и быть свободным от картографии

З.Ы. хотя правильнее будет назвать это преобразованием системы координат, а проекция это же вроде переход от 3D пространства к 2D.
Последний раз редактировалось drug 17 июн 2012, 13:49, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Самостоятельное создание простой электронной карты
Насчет построения окружности - да, ваш вариант - первое, что приходит в голову. Однако это сферическая тригонометрия, в которой я не силен.
Другая идея - поскольку у вас сфера, наверно, будет несложно пересечь ее плоскостью, проходящей параллельно касательной в заданной точке на некотором (рассчитанном) расстоянии от нее.
Другая идея - поскольку у вас сфера, наверно, будет несложно пересечь ее плоскостью, проходящей параллельно касательной в заданной точке на некотором (рассчитанном) расстоянии от нее.
-
- Участник
- Сообщения: 99
- Зарегистрирован: 17 июн 2012, 11:11
- Репутация: 1
- Откуда: Новосибирск
- Контактная информация:
Re: Самостоятельное создание простой электронной карты
Вообще я не хочу ограничиваться сферой, на всякий случай. Вообще я думаю, что это тривиальная задача для ГИС и хотелось бы узнать как это делается в существующих ГИС. Попробую пока по своему варианту, посмотрим, что получится 

-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Самостоятельное создание простой электронной карты
Ну, ваш вариант намного проще: уравнений решать не надо. Можно тут подсмотреть:
www.rsdn.ru/forum/alg/984680.all.aspx
или в учебниках высшей геодезии, там подробно рассматривается прямая геодезическая задача.
В ГИС-практике, как правило, редко приходится строить буфера большого радиуса, так что это можно сделать и в равноугольной проекции, подходящей для заданной территории. Поперечная проекция Меркатора дает сравнительно небольшие искажения расстояний на удалении до нескольких градусов от своего осевого меридиана. Но в вашем случае это просто неудобно, и лучше работать на сфере или эллипсоиде.
www.rsdn.ru/forum/alg/984680.all.aspx
или в учебниках высшей геодезии, там подробно рассматривается прямая геодезическая задача.
В ГИС-практике, как правило, редко приходится строить буфера большого радиуса, так что это можно сделать и в равноугольной проекции, подходящей для заданной территории. Поперечная проекция Меркатора дает сравнительно небольшие искажения расстояний на удалении до нескольких градусов от своего осевого меридиана. Но в вашем случае это просто неудобно, и лучше работать на сфере или эллипсоиде.
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot], Semrush [Bot] и 1 гость