Координатная система или проекция

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
ILYA_
Новоприбывший
Сообщения: 11
Зарегистрирован: 18 янв 2011, 18:30
Репутация: 0

Координатная система или проекция

Сообщение ILYA_ »

Здравствуйте!

Вот такой вопрос. Есть карта в постгис (рисовалась в иллюстраторе, потом выгружалась в шейпы, потом из шейпов в базу postgis).

Мапсервером отображалась так: (система координат стояла WGS84)
Изображение

Затем координаты всех объектов в базе были преобразованы для точного соответствия реальным GPS координатам.
(при этом также карта повернута на 6 градусов)

Если смотреть в QGis, то стало вот так (мапсервером отображается аналогично):
Изображение

В параметрах каждого слоя в QGis осталось то что было раньше: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

Подскажите пожалуйста, что нужно сделать чтобы вид был как раньше (прямоугольные дома, улицы)?
(повторюсь, что новые координаты в любой точке соответствуют реальным GPS-координатам, т.е. новые координаты правильные)
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Координатная система или проекция

Сообщение rhot »

координаты всех объектов в базе были преобразованы для точного соответствия реальным GPS координатам.
Как преобразовывали? Опишите порядок действий подробнее.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
ILYA_
Новоприбывший
Сообщения: 11
Зарегистрирован: 18 янв 2011, 18:30
Репутация: 0

Re: Координатная система или проекция

Сообщение ILYA_ »

В качестве допущения примем трехмерную систему координат WGS84,
основанную на сфероиде, декартовой в районе города. Город имеет не
большие размеры и находится не в близи полюсов, поэтому такое допущение
не должно сильно сказаться на погрешностях при преобразовании координат.
Для вычисления географических координат по координатам на карте
используем выражения :
Xn=Ax∗Xc+Dx
Yn=Ay∗Yc+Dy
где (Xn ,Yn) — новые географические координаты, (Xc , Yc) —
текущие координаты на карте, (Ax ,Ay) — масштабирование по осям,
(Dx ,Dy ) — географические координаты начала отсчета системы координат
карты.
Но при таком варианте возникает погрешность 25-30м в некоторых точках.
Экспериментальным путем выяснено, что для уменьшения погрешности
необходимо предварительно повернуть карту на 6 градусов относительно начала
координат. Новые выражения преобразования координат имеют вид:
Xn=Ax∗Rx ( Xc , Yc ,angle)+Dx
Xn=Ay∗Ry ( Xc , Yyc ,angle)+Dy
Rx( x , y , angle)=x∗cos (angle)−y∗sin(angle)
Ry ( x , y , angle)=y∗cos(angle)+x∗sin(angle)
где Rx( x , y , angle), Ry (x , y , angle) – функции возвращающие координаты
после вращения точки относительно начале координат.
По 4 точкам вычисляем новые коэффициенты, которые дают
погрешность в пределах 5 метров по большей части города.

Вот изменение для одной таблицы:

update
home_territory_polygon
set
the_geom = rotateZ( the_geom, -0.12538043 );
update
home_territory_polygon
set
the_geom = scale( the_geom, 0.000062421, 0.000032628, 1);
update
home_territory_polygon
set
the_geom = translate( the_geom, 38.727393288, 58.09461128, 0 );
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Координатная система или проекция

Сообщение Максим Дубинин »

ILYA_ писал(а):Подскажите пожалуйста, что нужно сделать чтобы вид был как раньше (прямоугольные дома, улицы)?
Выводить то что получилось после коррекции в спроецированной (прямоугольной) системе координат - удобной для вас, возьмите для начала например соответствующую зону UTM. Это умеет любая ГИС и картографический сервер, в т.ч. и MapServer.
пристегивайтесь, турбулентность прямо по курсу
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Координатная система или проекция

Сообщение ericsson »

Если город не на экваторе, то изображение в географической "проекции" обязано быть растянутым по горизонтали.

"Мапсервер" (веб-интерфейс?) скорее всего, показывал карту в проекции Меркатора, а QGIS - честно показывает lat/lon, как она есть. Чтобы этого не было, можно выбрать для показа карты любую подходящую проекцию - UTM соответствующей зоны, как уже посоветовали, или еще что-нибудь.
ILYA_
Новоприбывший
Сообщения: 11
Зарегистрирован: 18 янв 2011, 18:30
Репутация: 0

Re: Координатная система или проекция

Сообщение ILYA_ »

Сделал как Вы посоветовали,
определил по широте-долготе зону. 58° 3' с.ш. 38° 50' в.д. - это зона 37N

Далее двух местах в QGis установил систему координат:
1) при загрузке слоя из PostGIS
2) в настройках проекта
3) в глобальных настройках QGis указано запрашивать систему координат при загрузке слоя.

Также стоит крестик у "Включить преобразование координат на лету"

Выбранная система:
WGS 84/ UTM зона 37N. (ID источника EPSG:32637)

Строка описания следующая: +proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs

Но дома прямым не стали. Может я что-то не так делаю?
Изображение

Кстати в базе PostGIS у всех данных стоит проекция(с-ма координат) -1 (т.е. "не задано"). Но ведь это не должно влиять на отображение в QGis, в котором задается проекция и система координат.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Координатная система или проекция

Сообщение Максим Дубинин »

Если система координат слоя неизвестна (не прописана) или прописана, но неправильно, то перепроецировать нельзя.

Сначала нужно:
а) точно определить в какой СК у вас данные, вы говорите lat/long WGS84, убедитесь в этом однозначным образом, например киньте сверху пару GPS треков или еще какие-нибудь данные в абсолютно точно известной вам СК

б) прописать эту СК вашим данным, будь то слои в файлах или в базе

только после этого продолжайте работу.
пристегивайтесь, турбулентность прямо по курсу
ILYA_
Новоприбывший
Сообщения: 11
Зарегистрирован: 18 янв 2011, 18:30
Репутация: 0

Re: Координатная система или проекция

Сообщение ILYA_ »

Спасибо огромное!
Прописал SRID у геом. объектов в базе и все сразу стало хорошо:

select UpdateGeometrySRID('home_polygon', 'the_geom', 4326);
select SetSRID(the_geom, 4326) from home_polygon;
Ответить

Вернуться в «Общий - ПО»

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

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