Mapserver, OpenStreetMap и МСК

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Mapserver, OpenStreetMap и МСК

Сообщение gnan » 14 июл 2014, 16:21

Здравствуйте.
Несколько дней прочтения статей по тематике систем координат, проекций и прочего привели меня суда). Но т.к. как от проекций и прочих картографических примудростей я далек, а время поджимает, то захотелось простого человеческого общения, что бы быстрее разобраться в теме, ибо сроки поджимают.
Дано:
- mapserver, настроеный базовым слоем на OpenStreetMap
- mapserver'у указано еще на несколько wms слоев. Эти слои у меня в виде набора 4-х чайлов: map, tab, id, dat. Предположительно там содержится информация в одной из МСК (еще более предположительно МСК-86).
При наложении слоев у меня Ханты находятся примерно в центре Африки.

Задача: обеспечить наложение слоев на OpenStreetMap, что бы эти слои совпадали.

Как я понял, все слои сейчас имеют проекцию: init=epsg:900913

Я нашел вот такие параметры: http://www.mapbasic.ru/msk86
"МСК-86 зона 5, 6 градусная", 8, 1001, 7, 84.05, 0, 1, 5500000, -5811057.63 (Взял самую последнюю ради эксперимента)

Из этого какие выводы я смог сделать:
Осевой меридиан = 84.05 (Параметр mapserver-layer-projection: lon_0=84.05)
Смещение по долготе = 5500000 (lonc=5500000)
Смещение по широте = -5811057.63

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

Подскажите куда копать?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapserver, OpenStreetMap и МСК

Сообщение Denis Rykov » 14 июл 2014, 16:33

Не понял причём здесь MapServer и OpenStreetMap, проблема только с данными. В самих ваших данных не содержится описания проекции?
Spatial is now, more than ever, just another column- The Geometry Column.

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Mapserver, OpenStreetMap и МСК

Сообщение trir » 14 июл 2014, 16:45

Перегнать в kml и открыть в SASPlanet :=)

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 14 июл 2014, 16:54

Denis Rykov писал(а):Не понял причём здесь MapServer и OpenStreetMap, проблема только с данными. В самих ваших данных не содержится описания проекции?
Ну может и с данными. По идее проблема в конвертации из одной системы координат в другую. Но желательно сделать это конфигурацией параметров mapserver.
Как из этих файлов можно вытащить описание проекции?

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 14 июл 2014, 16:55

trir писал(а):Перегнать в kml и открыть в SASPlanet :=)
Веб приложение уже умеет обращаться к mapserver. Так что без него никуда.

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 15 июл 2014, 12:46

Каким образом можно сопоставить вот эту информацию:
"МСК-86 зона 5, 6 градусная", 8, 1001, 7, 84.05, 0, 1, 5500000, -5811057.63 (http://www.mapbasic.ru/msk86)
и параметры проекции mapserver'a?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapserver, OpenStreetMap и МСК

Сообщение Denis Rykov » 15 июл 2014, 13:00

gnan писал(а):Ну может и с данными. По идее проблема в конвертации из одной системы координат в другую. Но желательно сделать это конфигурацией параметров mapserver.
Зачем осуществлять трансформацию данных MapServer-ом? Или вы планируете отдавать WMS в нативной системе координат данных? Если нет, то тогда не зачем при каждом запросе пересчитывать исходные данные в EPSG:3857 (вы же хотите совместить свои данные со слоями, находящимися в этой проекции). Поэтому трансформируйте ваши данные один раз в 3857 и используйте уже их.
gnan писал(а):Как из этих файлов можно вытащить описание проекции?
Это вы должны знать раз работаете с Mapinfo. В ESRI Shape-файлах описание проекции находится в *.prj файле, как там в Mapinfo - не знаю, можете спросить в соответствующей ветке, посвященной данному ПО. Если ваши данные содержат описание проекции, то вам и не нужно знать ее параметры - просто трансформируйте средствами MapInfo их в 3857, а потом в map-файле просто укажите EPSG-код проекции:

Код: Выделить всё

PROJECTION
  "init=epsg:3857"
END
Spatial is now, more than ever, just another column- The Geometry Column.

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 15 июл 2014, 13:31

Denis Rykov писал(а):Зачем осуществлять трансформацию данных MapServer-ом? Или вы планируете отдавать WMS в нативной системе координат данных? Если нет, то тогда не зачем при каждом запросе пересчитывать исходные данные в EPSG:3857 (вы же хотите совместить свои данные со слоями, находящимися в этой проекции). Поэтому трансформируйте ваши данные один раз в 3857 и используйте уже их.
Мы получаем wms слои от другой стороны в том формате, который есть.
Denis Rykov писал(а): Это вы должны знать раз работаете с Mapinfo. В ESRI Shape-файлах описание проекции находится в *.prj файле, как там в Mapinfo - не знаю, можете спросить в соответствующей ветке, посвященной данному ПО. Если ваши данные содержат описание проекции, то вам и не нужно знать ее параметры - просто трансформируйте средствами MapInfo их в 3857, а потом в map-файле просто укажите EPSG-код проекции:

Код: Выделить всё

PROJECTION
  "init=epsg:3857"
END
С MapInfo я тоже не работаю
По сути у меня есть mapserver, которым я отображаю OpenStreetMap базовым слоем. Дополнительными слоями нужно отобразитть информацию поверх базового, но они в МСК86
Т.е. в идеале мне нужны параметры mapserver'a для того, что бы корректно наложить МСК-86 на epsg:3857

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Mapserver, OpenStreetMap и МСК

Сообщение trir » 15 июл 2014, 17:44

Согласно документации MapServer принимает описание проекции в формате proj, как перевести описание проекции из формата MapInfo в формат proj, рассматривалось здесь

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 15 июл 2014, 18:48

trir писал(а):Согласно документации MapServer принимает описание проекции в формате proj, как перевести описание проекции из формата MapInfo в формат proj, рассматривалось здесь
Отлично, сделал по образу и подобию.
Получилось: +proj=tmerc +ellps=krass +towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22 +units=m +lat_0=0 +lon_0=60.05 +k=1 +x_0=1500000 +y_0=-5811057.63 +no_defs

В epsg файле mapserver'a прописал

Код: Выделить всё

<999999> +proj=tmerc +ellps=krass +towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22 +units=m +lat_0=0 +lon_0=60.05 +k=1 +x_0=1500000 +y_0=-5811057.63 +no_defs
В кофиге проекции слоя прописал "init=epsg:999999"

Мой слой теперь не отображается на карте :(

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Mapserver, OpenStreetMap и МСК

Сообщение trir » 15 июл 2014, 19:56

кури маны
Example 1: Inline Projection Parameters

PROJECTION
"proj=utm"
"ellps=GRS80"
"datum=NAD83"
"zone=15"
"units=m"
"north"
"no_defs"
END

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 15 июл 2014, 23:00

trir писал(а):кури маны
С них я начал. Возможно что то не докурил. В чем ошибка не пойму.

Перенес параметры из epsg файла в конфиг. Слой стал отображаться ближе к городу.

Код: Выделить всё

"proj=tmerc"
"ellps=krass"
"towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22"
"units=m"
"lat_0=0"
"lon_0=60.05"
"k=1"
#"x_0=1500000"
"x_0=2176250"
#"y_0=-5811057.63 "
"y_0=-5840800.63"
"no_defs"
Параметры x_0 и y_0 помогли приблизить к городу. Но такое ощущение, что слой надо чуть повернуть против часовой стрелки.
Изображение

Я вроде бы близок к результату, не пойму пока как повернуть слой. Как это сделать?
С другой стороны меня гложет мысль, что перебор параметров - совсем неточный метод. Почему x_0 и y_0 не совпадают с теми, что приведены на сайте?

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Mapserver, OpenStreetMap и МСК

Сообщение trir » 16 июл 2014, 03:29

"МСК-86 зона 5, 6 градусная", 8, 1001, 7, 84.05, 0, 1, 5500000, -5811057.63 (Взял самую последнюю ради эксперимента)
"proj=tmerc"
"ellps=krass"
"towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22"
"units=m"
"lat_0=0"
"lon_0=84.05"
"k=1"
"x_0=5500000"
"y_0=-5811057.63"
"no_defs"
Так не может быть:
#"x_0=1500000"
"x_0=2176250"
Это значит:
"lon_0=66.05"
"МСК-86 зона 2, 6 градусная", 8, 1001, 7, 66.05, 0, 1, 2500000, -5811057.63
Между прочим первая цифра в x - означает номер зоны!

gnan
Новоприбывший
Сообщения: 8
Зарегистрирован: 14 июл 2014, 15:45
Репутация: 0

Re: Mapserver, OpenStreetMap и МСК

Сообщение gnan » 16 июл 2014, 15:12

"proj=tmerc"
"ellps=krass"
"towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22"
"units=m"
"lat_0=0"
"lon_0=66.05"
"k=1"
"x_0=2500000"
"y_0=-5811057.63 "
"no_defs"
Поправил на коэфициенты второй зоны - пропала необходимость в повороте карты на какой то угол. Но несовпадение все равно есть.
Изображение

Еще есть непонимание по поводу коэфициентов параметра towgs84. Некоторые позиции в моем конфиге сейчас не совпадают по знаку с коэфициентами по ссылке www.mapbasic.ru/msk86
Поставил так:
"towgs84=23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22"
Расхождение получилось такое:
Изображение

Как выяснить какие коэфициенты необходимы тут, что бы совпадение было 100%-ным?

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Mapserver, OpenStreetMap и МСК

Сообщение trir » 16 июл 2014, 16:04

что бы совпадение было 100%-ным?
1. Не будет
2. Нанимать геодезистов, что бы они GPS'или тригопункты и рассчитывали параметры перехода

Ответить

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

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 4 гостя