Перевод координат из локальной в СК Google
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 23 апр 2009, 11:11
- Репутация: 0
Перевод координат из локальной в СК Google
Здраствуйте.
Прошу помочь мне в решение стоящей передо мной задачи.
Была программа в которой отмечались объекты на карте. В качестве карты использовались снимки со спутника Гугла с максимальным приближением. Сохранялись отметки в системе координат программы - декартовой с центром в некоторой точке (1=10метрам). Все объекты в пределах города. Теперь стоит задача переделать эти координаты в координаты ГуглМапс, т.е. в широту/долготу. С некоторой точностью можно вручную сопаставить некоторое количество точек и получить пары значений (координаты точки в программе - координаты в ГуглМапс). Как с помощью этих данных пересчитать все координаты? Координаты города - (54.85:82.95)
Проблемма стоит остро, а времени изучать самому нету.
Буду очень благодарен за развёрнутый ответ.
Прошу помочь мне в решение стоящей передо мной задачи.
Была программа в которой отмечались объекты на карте. В качестве карты использовались снимки со спутника Гугла с максимальным приближением. Сохранялись отметки в системе координат программы - декартовой с центром в некоторой точке (1=10метрам). Все объекты в пределах города. Теперь стоит задача переделать эти координаты в координаты ГуглМапс, т.е. в широту/долготу. С некоторой точностью можно вручную сопаставить некоторое количество точек и получить пары значений (координаты точки в программе - координаты в ГуглМапс). Как с помощью этих данных пересчитать все координаты? Координаты города - (54.85:82.95)
Проблемма стоит остро, а времени изучать самому нету.
Буду очень благодарен за развёрнутый ответ.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
если СК локальная (а обратного из вашего ее описания не ясно), то проще всего вот так
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
Координаты ГугльМапс вовсе не широта-долгота. Т.е. если вы заполучили растр оттуда, и хотите совместить ваши данные и этот растр, то вам надо знать, что родная его проекция - меркатор на сфере. Мне уже неудобно давать ссылки на статьи, где это описано, они по сту раз тут давались на форуме. Если интересно, найдете сами. Но сути дела это не меняет - берете ваши данные, загоняете в любой ГИС, и кладете - точнее, подгоняете на растргугл. Если вы это будете делать находясь в проекции "меркатор на сфере", то достаточно двух пар точек. МОжно и больше для контроля-улучшения, но в любом случае потери точности при использовании верной проекции будут минимальны.
Както-так, если в этом задача. Применять для этого полиномиальные... Хм
Както-так, если в этом задача. Применять для этого полиномиальные... Хм

- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
если ск локальная хоть в меркатор, хоть в широту-долготу, все равно придется полиномами
но наверное можно и подобрать коэффициенты просто, по мне так быстрее полиномами
но наверное можно и подобрать коэффициенты просто, по мне так быстрее полиномами
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
Если СК "локальная на основе меркатора", то и привязывать надо "в меркатор". Если "локальная на основе ГК" - привязывать в ГК, так удобнее и надежней. Ведь если был соблюден масштаб, то для привязки достаточно будет одной точки (для задания сдвига), если ориентация листа - двух точек. Если точность автора темы сильно не волнует, тогда да, можно и без учета проекций - наверно. Я не знаю, потому что так никогда не делаю, даже если это "намного быстрее" - потом вылезает боком 
Ну это наш с вами давний спор, насчет полиномов...

Ну это наш с вами давний спор, насчет полиномов...

-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 23 апр 2009, 11:11
- Репутация: 0
Re: Перевод координат из локальной в СК Google
Вот мои тестовые точки (находются на разных краях области).
[x][y] [google.lat][google.lng]
Локальная СК: Ось Х - вправо, Ось У - вниз.
Точность очень важна. Всего около 22000 точек.
Напиши поэтапно, "как дураку", пожалуйста алгоритм действий.
Если нужны какие-лтбо программы, напишите хотя-бы название, чтобы я мог найти.
Заранее спасибо
[x][y] [google.lat][google.lng]
Код: Выделить всё
+1729.353516 -258.740601 55.0163055869995 82.9456615447998
+1937.781860 -559.622498 55.0351395370218 82.8983795642853
+2045.171631 +069.667603 55.0447913879546 82.9972189664841
+3543.447510 -187.888824 55.1792107369159 82.9566049575806
-0234.129074 +647.508179 54.8392382122089 83.0878293514252
-0103.857651 -009.111580 54.8512226106783 82.9847359657288
+1345.542725 -720.694397 54.9818465506807 82.8732848167419
Точность очень важна. Всего около 22000 точек.
Напиши поэтапно, "как дураку", пожалуйста алгоритм действий.
Если нужны какие-лтбо программы, напишите хотя-бы название, чтобы я мог найти.
Заранее спасибо

-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
1) Берете какой-нибудь ГИС, например, ArcView или ArcMap. Загружаете ваши точки в него как таблицу - обычно через текстовый формат или dbf. Устанавливаете в виде (в окне карты) проекцию меркатор на сфере, как вариант - меркатор на WGS. Это важно для точности и об этом потом, пока можно первую - в ArcView меркатор по умолчанию сферический.
2) Отбираете точки, для которых известны геогр. координаты, как те, что в вашем примере. Это можно сделать прямо в ГИС в таблице. Помещаете их на эту меркаторскую карту по геогр. координатам, как - можно почитать например, вот тут. Они возникают на экране уже сразу "где надо". Если подгрузить, например, нормальную карту россии/области в известной проекции, то будут совпадать. Запишите этот слой на диск "в проекции вида", т.е. уже в меркаторских координатах.
3) Грузите все остальные точки одной массой, по прямоугольным координатам XY, в другое новое пустое окно карты. туда же грузите ваши меркаторские ключевые координаты. И то и то должно иметь одинаковый вид - у меня по вашим данным получилось вот что.

4) Инструментами коррекции или смещения векторной графики притяните ваши данные к известным точкам, прямо в виде, как картинку к картинке. В ArcView этот процесс коррекции описан вот здесь, в ArcMap - штатный инструмент Spatial Adjustment. Если форма облака точек совпадает, значит, проекция угадана верно и достаточно указать две точки, самые крайние, например. Обратите внимание - на картинке масштабирование 17 с чем-то, т.е. ваши работники ошиблись в 17 раз. Поворот указан 360 = ноль - т.е. картинка была привязана ровно, без поворота. У вас большие шансы, что точность удасться сберечь. Остальные точки используйте как контрольные: можете их все "натыкать" как пары и проглядеть RMS, можете просто посмотреть результат - насколько отлетает. Если точность удовлетворит, запишите результат в еще один файл.
5) Осталось вернуть новые, смещенные к месту точки в "географию" и снять координаты. В ArcView придется применить штатный модуль Projutil.exe, в более развитом Arcmap просто сохранить в меркаторском виде, чтобы придать проекцию, потом загрузить в географическое окно карты и снять координаты. Как "снять" - описано тут.
Внимательно поглядите, нет ли смещения точек посредине области. Если вариант меркатора угадан верно, то этого не должно быть. Если ваши точки были сняты с растра в одном меркаторе, а вы их корректировали по другому, то должно возникнуть небольшое смещение север-юг большинства точек (кроме крайних, разумеется). Ошибку можно убрать увеличением числа точек по оси север-юг, "приколоть меридиан". Однако смещение это нелинейное и все равно остается. Если точность важна, лучше провести допрос с пристрастием, кто и как рисовал эти точки - нужно знать, по снимкам гугль мапс или гугль эартс, хотя бы.
2) Отбираете точки, для которых известны геогр. координаты, как те, что в вашем примере. Это можно сделать прямо в ГИС в таблице. Помещаете их на эту меркаторскую карту по геогр. координатам, как - можно почитать например, вот тут. Они возникают на экране уже сразу "где надо". Если подгрузить, например, нормальную карту россии/области в известной проекции, то будут совпадать. Запишите этот слой на диск "в проекции вида", т.е. уже в меркаторских координатах.
3) Грузите все остальные точки одной массой, по прямоугольным координатам XY, в другое новое пустое окно карты. туда же грузите ваши меркаторские ключевые координаты. И то и то должно иметь одинаковый вид - у меня по вашим данным получилось вот что.

4) Инструментами коррекции или смещения векторной графики притяните ваши данные к известным точкам, прямо в виде, как картинку к картинке. В ArcView этот процесс коррекции описан вот здесь, в ArcMap - штатный инструмент Spatial Adjustment. Если форма облака точек совпадает, значит, проекция угадана верно и достаточно указать две точки, самые крайние, например. Обратите внимание - на картинке масштабирование 17 с чем-то, т.е. ваши работники ошиблись в 17 раз. Поворот указан 360 = ноль - т.е. картинка была привязана ровно, без поворота. У вас большие шансы, что точность удасться сберечь. Остальные точки используйте как контрольные: можете их все "натыкать" как пары и проглядеть RMS, можете просто посмотреть результат - насколько отлетает. Если точность удовлетворит, запишите результат в еще один файл.
5) Осталось вернуть новые, смещенные к месту точки в "географию" и снять координаты. В ArcView придется применить штатный модуль Projutil.exe, в более развитом Arcmap просто сохранить в меркаторском виде, чтобы придать проекцию, потом загрузить в географическое окно карты и снять координаты. Как "снять" - описано тут.
Внимательно поглядите, нет ли смещения точек посредине области. Если вариант меркатора угадан верно, то этого не должно быть. Если ваши точки были сняты с растра в одном меркаторе, а вы их корректировали по другому, то должно возникнуть небольшое смещение север-юг большинства точек (кроме крайних, разумеется). Ошибку можно убрать увеличением числа точек по оси север-юг, "приколоть меридиан". Однако смещение это нелинейное и все равно остается. Если точность важна, лучше провести допрос с пристрастием, кто и как рисовал эти точки - нужно знать, по снимкам гугль мапс или гугль эартс, хотя бы.
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Перевод координат из локальной в СК Google
Повторю еще раз главный принцип: раз уж проекция известна ("почти известна") грех отказываться от этой информации. Сажать нужно ваши точки как меркаторские на меркаторские же репера. Считайте, что эти испорченные точки и есть меркаторские, ну, съехали маленько. У вас весьма простой случай, слава богу, поворот ваши "ребята" не исказили, а могли бы исходную "кальку" еще и ненароком повернуть, и растянуть как попало, бывало и такое в нашей практике.
В принципе, можно подобрать особую проекцию - где бы учитывались сдвиг плюс масштабирование - и работать с этими данными онлайн, без физического пересчитывания, мы так периодически. Но разумеется, только в ГИС такой трюк возможен, и раз у вас однократное поступление данных вам ни к чему. Просто для иллюстрации принципа.
Да и для точности лучше повторите работу по ключам, когда разберетесь с парами тчоек и ошибкой RMS. В этот раз работайте не визуально по точкам, а вводите координаты из таблиц в окошки (или разберитесь с притягиванием). Если проекция угадана, ошибка должна быть близка к нулю и по пяти-шести, и по двадцати точкам, т.е. не должна зависеть от количества реперов. Если ошибка зависит от кол-ва реперов, верный признак, что вы корежите общую картину, а не уточняете.
В принципе, можно подобрать особую проекцию - где бы учитывались сдвиг плюс масштабирование - и работать с этими данными онлайн, без физического пересчитывания, мы так периодически. Но разумеется, только в ГИС такой трюк возможен, и раз у вас однократное поступление данных вам ни к чему. Просто для иллюстрации принципа.
Да и для точности лучше повторите работу по ключам, когда разберетесь с парами тчоек и ошибкой RMS. В этот раз работайте не визуально по точкам, а вводите координаты из таблиц в окошки (или разберитесь с притягиванием). Если проекция угадана, ошибка должна быть близка к нулю и по пяти-шести, и по двадцати точкам, т.е. не должна зависеть от количества реперов. Если ошибка зависит от кол-ва реперов, верный признак, что вы корежите общую картину, а не уточняете.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость