Mapserver, OpenStreetMap и МСК
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Mapserver, OpenStreetMap и МСК
Здравствуйте.
Несколько дней прочтения статей по тематике систем координат, проекций и прочего привели меня суда). Но т.к. как от проекций и прочих картографических примудростей я далек, а время поджимает, то захотелось простого человеческого общения, что бы быстрее разобраться в теме, ибо сроки поджимают.
Дано:
- 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
Из этих трех параметров какой-то видимый результат принесли только первые два, в основном даже первый. Слой сместился примерно на нужную долготу. А вот смещение по широте (т.е. поднять слой повыше на карте) - не получается.
Подскажите куда копать?
Несколько дней прочтения статей по тематике систем координат, проекций и прочего привели меня суда). Но т.к. как от проекций и прочих картографических примудростей я далек, а время поджимает, то захотелось простого человеческого общения, что бы быстрее разобраться в теме, ибо сроки поджимают.
Дано:
- 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 и МСК
Не понял причём здесь MapServer и OpenStreetMap, проблема только с данными. В самих ваших данных не содержится описания проекции?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Mapserver, OpenStreetMap и МСК
Перегнать в kml и открыть в SASPlanet :=)
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Ну может и с данными. По идее проблема в конвертации из одной системы координат в другую. Но желательно сделать это конфигурацией параметров mapserver.Denis Rykov писал(а):Не понял причём здесь MapServer и OpenStreetMap, проблема только с данными. В самих ваших данных не содержится описания проекции?
Как из этих файлов можно вытащить описание проекции?
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Веб приложение уже умеет обращаться к mapserver. Так что без него никуда.trir писал(а):Перегнать в kml и открыть в SASPlanet :=)
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Каким образом можно сопоставить вот эту информацию:
"МСК-86 зона 5, 6 градусная", 8, 1001, 7, 84.05, 0, 1, 5500000, -5811057.63 (http://www.mapbasic.ru/msk86)
и параметры проекции mapserver'a?
"МСК-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 и МСК
Зачем осуществлять трансформацию данных MapServer-ом? Или вы планируете отдавать WMS в нативной системе координат данных? Если нет, то тогда не зачем при каждом запросе пересчитывать исходные данные в EPSG:3857 (вы же хотите совместить свои данные со слоями, находящимися в этой проекции). Поэтому трансформируйте ваши данные один раз в 3857 и используйте уже их.gnan писал(а):Ну может и с данными. По идее проблема в конвертации из одной системы координат в другую. Но желательно сделать это конфигурацией параметров mapserver.
Это вы должны знать раз работаете с Mapinfo. В ESRI Shape-файлах описание проекции находится в *.prj файле, как там в Mapinfo - не знаю, можете спросить в соответствующей ветке, посвященной данному ПО. Если ваши данные содержат описание проекции, то вам и не нужно знать ее параметры - просто трансформируйте средствами MapInfo их в 3857, а потом в map-файле просто укажите EPSG-код проекции:gnan писал(а):Как из этих файлов можно вытащить описание проекции?
Код: Выделить всё
PROJECTION
"init=epsg:3857"
END
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Мы получаем wms слои от другой стороны в том формате, который есть.Denis Rykov писал(а):Зачем осуществлять трансформацию данных MapServer-ом? Или вы планируете отдавать WMS в нативной системе координат данных? Если нет, то тогда не зачем при каждом запросе пересчитывать исходные данные в EPSG:3857 (вы же хотите совместить свои данные со слоями, находящимися в этой проекции). Поэтому трансформируйте ваши данные один раз в 3857 и используйте уже их.
С MapInfo я тоже не работаюDenis Rykov писал(а): Это вы должны знать раз работаете с Mapinfo. В ESRI Shape-файлах описание проекции находится в *.prj файле, как там в Mapinfo - не знаю, можете спросить в соответствующей ветке, посвященной данному ПО. Если ваши данные содержат описание проекции, то вам и не нужно знать ее параметры - просто трансформируйте средствами MapInfo их в 3857, а потом в map-файле просто укажите EPSG-код проекции:Код: Выделить всё
PROJECTION "init=epsg:3857" END
По сути у меня есть mapserver, которым я отображаю OpenStreetMap базовым слоем. Дополнительными слоями нужно отобразитть информацию поверх базового, но они в МСК86
Т.е. в идеале мне нужны параметры mapserver'a для того, что бы корректно наложить МСК-86 на epsg:3857
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Mapserver, OpenStreetMap и МСК
Согласно документации MapServer принимает описание проекции в формате proj, как перевести описание проекции из формата MapInfo в формат proj, рассматривалось здесь
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Отлично, сделал по образу и подобию.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
Мой слой теперь не отображается на карте

-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Mapserver, OpenStreetMap и МСК
кури маны
Example 1: Inline Projection Parameters
PROJECTION
"proj=utm"
"ellps=GRS80"
"datum=NAD83"
"zone=15"
"units=m"
"north"
"no_defs"
END
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
С них я начал. Возможно что то не докурил. В чем ошибка не пойму.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 не совпадают с теми, что приведены на сайте?
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Mapserver, OpenStreetMap и МСК
"МСК-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"
Между прочим первая цифра в x - означает номер зоны!"МСК-86 зона 2, 6 градусная", 8, 1001, 7, 66.05, 0, 1, 2500000, -5811057.63
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 14 июл 2014, 15:45
- Репутация: 0
Re: Mapserver, OpenStreetMap и МСК
Поправил на коэфициенты второй зоны - пропала необходимость в повороте карты на какой то угол. Но несовпадение все равно есть."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%-ным?
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Mapserver, OpenStreetMap и МСК
1. Не будетчто бы совпадение было 100%-ным?
2. Нанимать геодезистов, что бы они GPS'или тригопункты и рассчитывали параметры перехода
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 4 гостя