Перевод координат из локальной в СК Google

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
rs7
Новоприбывший
Сообщения: 3
Зарегистрирован: 23 апр 2009, 11:11
Репутация: 0

Перевод координат из локальной в СК Google

Сообщение rs7 » 23 апр 2009, 11:24

Здраствуйте.
Прошу помочь мне в решение стоящей передо мной задачи.

Была программа в которой отмечались объекты на карте. В качестве карты использовались снимки со спутника Гугла с максимальным приближением. Сохранялись отметки в системе координат программы - декартовой с центром в некоторой точке (1=10метрам). Все объекты в пределах города. Теперь стоит задача переделать эти координаты в координаты ГуглМапс, т.е. в широту/долготу. С некоторой точностью можно вручную сопаставить некоторое количество точек и получить пары значений (координаты точки в программе - координаты в ГуглМапс). Как с помощью этих данных пересчитать все координаты? Координаты города - (54.85:82.95)

Проблемма стоит остро, а времени изучать самому нету.
Буду очень благодарен за развёрнутый ответ.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение Максим Дубинин » 24 апр 2009, 02:33

если СК локальная (а обратного из вашего ее описания не ясно), то проще всего вот так
пристегивайтесь, турбулентность прямо по курсу

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение geologic » 24 апр 2009, 13:23

Координаты ГугльМапс вовсе не широта-долгота. Т.е. если вы заполучили растр оттуда, и хотите совместить ваши данные и этот растр, то вам надо знать, что родная его проекция - меркатор на сфере. Мне уже неудобно давать ссылки на статьи, где это описано, они по сту раз тут давались на форуме. Если интересно, найдете сами. Но сути дела это не меняет - берете ваши данные, загоняете в любой ГИС, и кладете - точнее, подгоняете на растргугл. Если вы это будете делать находясь в проекции "меркатор на сфере", то достаточно двух пар точек. МОжно и больше для контроля-улучшения, но в любом случае потери точности при использовании верной проекции будут минимальны.

Както-так, если в этом задача. Применять для этого полиномиальные... Хм ;)

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение Максим Дубинин » 24 апр 2009, 18:35

если ск локальная хоть в меркатор, хоть в широту-долготу, все равно придется полиномами
но наверное можно и подобрать коэффициенты просто, по мне так быстрее полиномами
пристегивайтесь, турбулентность прямо по курсу

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение geologic » 27 апр 2009, 10:20

Если СК "локальная на основе меркатора", то и привязывать надо "в меркатор". Если "локальная на основе ГК" - привязывать в ГК, так удобнее и надежней. Ведь если был соблюден масштаб, то для привязки достаточно будет одной точки (для задания сдвига), если ориентация листа - двух точек. Если точность автора темы сильно не волнует, тогда да, можно и без учета проекций - наверно. Я не знаю, потому что так никогда не делаю, даже если это "намного быстрее" - потом вылезает боком :(

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

rs7
Новоприбывший
Сообщения: 3
Зарегистрирован: 23 апр 2009, 11:11
Репутация: 0

Re: Перевод координат из локальной в СК Google

Сообщение rs7 » 05 май 2009, 14:18

Вот мои тестовые точки (находются на разных краях области).

[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 точек.

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

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение geologic » 05 май 2009, 15:31

1) Берете какой-нибудь ГИС, например, ArcView или ArcMap. Загружаете ваши точки в него как таблицу - обычно через текстовый формат или dbf. Устанавливаете в виде (в окне карты) проекцию меркатор на сфере, как вариант - меркатор на WGS. Это важно для точности и об этом потом, пока можно первую - в ArcView меркатор по умолчанию сферический.

2) Отбираете точки, для которых известны геогр. координаты, как те, что в вашем примере. Это можно сделать прямо в ГИС в таблице. Помещаете их на эту меркаторскую карту по геогр. координатам, как - можно почитать например, вот тут. Они возникают на экране уже сразу "где надо". Если подгрузить, например, нормальную карту россии/области в известной проекции, то будут совпадать. Запишите этот слой на диск "в проекции вида", т.е. уже в меркаторских координатах.

3) Грузите все остальные точки одной массой, по прямоугольным координатам XY, в другое новое пустое окно карты. туда же грузите ваши меркаторские ключевые координаты. И то и то должно иметь одинаковый вид - у меня по вашим данным получилось вот что.
Изображение

4) Инструментами коррекции или смещения векторной графики притяните ваши данные к известным точкам, прямо в виде, как картинку к картинке. В ArcView этот процесс коррекции описан вот здесь, в ArcMap - штатный инструмент Spatial Adjustment. Если форма облака точек совпадает, значит, проекция угадана верно и достаточно указать две точки, самые крайние, например. Обратите внимание - на картинке масштабирование 17 с чем-то, т.е. ваши работники ошиблись в 17 раз. Поворот указан 360 = ноль - т.е. картинка была привязана ровно, без поворота. У вас большие шансы, что точность удасться сберечь. Остальные точки используйте как контрольные: можете их все "натыкать" как пары и проглядеть RMS, можете просто посмотреть результат - насколько отлетает. Если точность удовлетворит, запишите результат в еще один файл.

5) Осталось вернуть новые, смещенные к месту точки в "географию" и снять координаты. В ArcView придется применить штатный модуль Projutil.exe, в более развитом Arcmap просто сохранить в меркаторском виде, чтобы придать проекцию, потом загрузить в географическое окно карты и снять координаты. Как "снять" - описано тут.

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

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Перевод координат из локальной в СК Google

Сообщение geologic » 05 май 2009, 15:54

Повторю еще раз главный принцип: раз уж проекция известна ("почти известна") грех отказываться от этой информации. Сажать нужно ваши точки как меркаторские на меркаторские же репера. Считайте, что эти испорченные точки и есть меркаторские, ну, съехали маленько. У вас весьма простой случай, слава богу, поворот ваши "ребята" не исказили, а могли бы исходную "кальку" еще и ненароком повернуть, и растянуть как попало, бывало и такое в нашей практике.

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

Да и для точности лучше повторите работу по ключам, когда разберетесь с парами тчоек и ошибкой RMS. В этот раз работайте не визуально по точкам, а вводите координаты из таблиц в окошки (или разберитесь с притягиванием). Если проекция угадана, ошибка должна быть близка к нулю и по пяти-шести, и по двадцати точкам, т.е. не должна зависеть от количества реперов. Если ошибка зависит от кол-ва реперов, верный признак, что вы корежите общую картину, а не уточняете.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя