| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Работа с географическими картами |
| Автор: Artemon 23.9.2006, 18:47 |
| Есть карта в польском формате. Хочу отображать/масштабировать эту карту у себя в программе. Но вот загвоздка, координаты в карте естественно даны в градусах долготы и широты. Как преобразовать градусы в пиксели, а потом эти огромные числа вместить на экран (800x600)? |
| Автор: 586 23.9.2006, 19:27 |
преобразуй градусы в километры, а километры в пиксели. |
| Автор: Artemon 24.9.2006, 08:22 |
| Допустим я преобразовал градусы в пиксели. У меня получилась точка: (X = 10602517560.2357, Y = 14066733000) Как мне эту точку впихнуть на экран 800x600? |
| Автор: drkot 24.9.2006, 14:00 |
| Задайся точкой отсчета расположенной в центре видимой области (экрана) и считай координаты относительно этой точки + масштаб. |
| Автор: Timi 16.8.2007, 21:43 |
| Народ, а каким алгоритмом полюзуются програмисты допустим ДубльГИСа. (ДубльГИС - карта города с доми, на которые можно нажимать и смотреть ккие здания они содержат, маршруты автобусов смотреть и тогдалее) так как делаю саму карту |
| Автор: Earnest 17.8.2007, 10:18 |
| Думаю, они не одним алгоритмом пользуются. Вообще говоря, чтобы отобразить географические (широту, долготу) координаты на экране, нужно сначала выбрать проекцию, пересчитать грудуся в координаты проекции (грубо говоря, в метры), а потом, в зависимости от выбранного масштаба, пересчитать метры в пикселы экрана. Если ты работаешь с картой города, то особого смысла работать (хранить) географические координаты нет - проще работать с проекцией сразу. Даже не с проекцией - города обычно имеют некую местную декартову систему координат. В ней работать гораздо проще. С если очень хочется пересчитывать в географические координаты (на экране показывать, скажем), то достаточно привязаться к одной точке и использовать единый масштаб пересчета градусов в метры (по каждой оси отдельно, конечно): в рамках одного города искажения будут незначительны |