Страница 1 из 18

Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 15 май 2010, 14:11
VictorM
SAS.Planet - наиотличнейшая программа, спасибо разработчикам! Недавно заюзал еще одну ее фичу. Я живу в Архангельске, увлекаюсь рыбалкой и туризмом, перемещаюсь по родному краю на машине, лодке, лыжах. У меня много всяких топографических карт Архангельской области, 10-ти, 5-ти, 2-, 1-километровки и некоторые другие, рассматриваю их в Озике, удобно, но не идеально - карты порезаны на листы, бывает заинтересует какое-нибудь место, которое находится в районе границы двух, а то и четырех листов, приходится переключаться между картами, пока изучишь все подходы, вот бы все карты склеить. Еще одна мечта - чтобы при разном масштабировании на экране менялась подробность карты, как в каких-нибудь Яндекс.Картах, названия мелких объектов исчезали, а оставались только крупные, короче, чтобы при одном приближении видеть 10-километровку, при другом - 5-, при следующем 2- и так далее. фичу. У меня много всяких топографических карт Архангельской области, 10-ти, 5-ти, 2-, 1-километровки и некоторые другие, рассматриваю их в Озике, удобно, но не идеально - карты порезаны на листы, бывает заинтересует какое-нибудь место, которое находится в районе границы двух, а то и четырех листов, приходится переключаться между картами, пока изучишь все подходы, вот бы все карты склеить. Еще одна мечта - чтобы при разном масштабировании на экране менялась подробность карты, как в каких-нибудь Яндекс.Картах, названия мелких объектов исчезали, а оставались только крупные, короче, чтобы при одном приближении видеть 10-километровку, при другом - 5-, при следующем 2- и так далее.
Решил я тогда использовать кэш САС.Планеты в качестве хранилища топографических карт, а саму прогу - в качестве движка для их отображения. Нужно перегнать карты в один из форматов, которые САС.Планета понимает в качестве кэша, предварительно изменив проекцию этих карт на Меркатор (все российские топографические карты - в проекции Гаусса-Крюгера). В этом помогла мощнейшая программа GlobalMapper. Я загрузил все свои карты одного масштаба, предварительно привязанные под Озик, в GlobalMapper, изменил там проекцию на Меркатор, причем GM при изменении проекции умеет трансформировать растровое изображение, где надо растягивать, где надо сжимать.
Потом отрезал от карт рамки, в большинстве случаев получилось автоматически, в некоторых случаях пришлось вручную повозиться с указанием границ листов, благо они проходят по параллелям и меридианам. Дальше порезать полученную огромную карту квадратно-гнездовым методом на фрагменты по 256x256 пикселей и сохранить в формате, который понимает САС.Планета, такой формат нашелся - Google Map Tiles, подключить полученную карту к САС.Планете (создать файл *.zmp).
Что это мне дало - непрерывную 2-км (пока, с километровками еще не закончил) карту всей области, можно прокрутить ее с севера на юг, с запада на восток перед глазами, не переключаясь между листами.
Для поездки в конкретное место можно средствами САС.Планеты сохранить любой участок (опять же непрерывный) под Озик, загрузить в наладонник и ехать.
В настоящее время пишу более подробную инструкцию по этой теме, как закончу, выложу.

Здесь в точке, где стоит метка, сходятся 4 листа 5-километровок.

Изображение

А здесь - 4 листа 2-километровок. Сетка не совпадает, так как это сетка прямоугольных координат, а граница листов проходит как раз по границе двух зон Гаусса-Крюгера:

Изображение

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 15 май 2010, 16:22
garl
В настоящее время пишу более подробную инструкцию по этой теме, как закончу, выложу.

многие спасибо скажут.

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 16 май 2010, 13:16
VictorM
Закончил с инструкцией. Как я понял, поподробнее почитав форум, многие это делать умеют, но подробного описания не нашел, поэтому пусть будет:

Часть 1.zip
Часть 2.zip

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 16 май 2010, 13:38
VictorM
И еще - сами карты, на примере которых написана инструкция

Онега.zip

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 16 май 2010, 23:08
Vinil_37
Эту инструкцию не читал.
Чам отличается от описаного на РуБорде?

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 17 май 2010, 01:23
Papazol
Спасибо за инструкцию. Некоторые моменты совсем не очевидны, поэтому без подобной инструкции сделать эту работу весьма затруднительно.
Однако хотелось бы уточнить детали, лишь вскользь упомянутые в данном документе.
1)
В появившемся окне переходим на вкладку Projection и меняем следующие значения:
Проекция - с Transverse Mercator на Mercator, в нижнем окошке все параметры на 0 кроме первого (SCALE FACTOR), его оставляем, как был:

Для чего мы должны поменять все параметры, кроме первого, на 0? Что будет, если этого не сделать?
2)
Систему координат пока не трогаем, перед сохранением карты поставим WGS-84, а пока нам будет удобнее работать в той системе, которая была (в данном случае Пулково-1942).

Почему пока нам будет удобнее работать в существующей системе координат? Что будет, если мы сразу поменяем её на WGS84?
3)
Нужно определиться с системой координат, можно сохранять и в Пулково-42, можно и в WGS-84, от выбранной СК зависят дальнейшие действия по подключению карты к SAS.Планета.

Каковы должны быть дальнейшие действия по подключению к SAS.Планете при выборе системы координат Пулково-42?

4) При редактировании zmp-файла следует изменить значение параметра UseDwn на 0, ведь мы не собираемся загружать тайлы из сети.

5)
По умолчанию кэш формата Google Maps Tiles SAS.Планета хранит в папке \cache_gmt основной папки SAS.Планеты. Если такой папки нет, создайте ее. В папке \cache_gmt (или в какой другой, если вы храните кэш в другом месте) создайте папку My100000 и скопируйте в нее папки с тайлами (папки Z9 - Z13) сгенерированные GlobalMapper'ом.

Можно просто указать путь к кэшу GMT точно такой же, как и к родному кэшу SAS.Планеты, а папки с тайлами поместить просто в папку My100000, лежащую в родном (общем) кэше.

6) Предлагаемый GlobalMapper'ом максимальный уровень зума при экспорте не всегда (а может, всегда не) является оптимальным. Мне показалось, что нужно ставить на 1 меньше, тогда изображение будет не увеличенным по сравнению с исходным сканом карты. Это положительно сказывается на качестве изображения, да и тайлов получается в 4 раза меньше. Поскольку новые детали всё равно не появятся, смысла в увеличении нет.

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 17 май 2010, 07:51
VictorM
Спасибо за замечания.

1)
В появившемся окне переходим на вкладку Projection и меняем следующие значения:
Проекция - с Transverse Mercator на Mercator, в нижнем окошке все параметры на 0 кроме первого (SCALE FACTOR), его оставляем, как был:

Для чего мы должны поменять все параметры, кроме первого, на 0? Что будет, если этого не сделать?


А ведь действительно, можно не менять. Но если, например, экспортировать карту из ГМ в GeoTiff, для дальнейшего использования в Озике, то нужно менять, иначе Озик неправильно открывает. Я свои эксперименты по склеиванию карт начал с GeoTiff'ов, до сих пор по привычке так и делал.

2)
Систему координат пока не трогаем, перед сохранением карты поставим WGS-84, а пока нам будет удобнее работать в той системе, которая была (в данном случае Пулково-1942).

Почему пока нам будет удобнее работать в существующей системе координат? Что будет, если мы сразу поменяем её на WGS84?


Думал, что если сразу поменять на WGS84, то и границы листов при обрезании нужно будет указывать в ней. Ан нет, границы ГМ воспринимает в исходной СК листа, так что можно поменять сразу.

3)
Нужно определиться с системой координат, можно сохранять и в Пулково-42, можно и в WGS-84, от выбранной СК зависят дальнейшие действия по подключению карты к SAS.Планета.

Каковы должны быть дальнейшие действия по подключению к SAS.Планете при выборе системы координат Пулково-42?

если хотим в пулково, то в файле params.txt значение параметра projection нужно изменить на 2 (меркатор на эллипсоид) и в параметрах sradiusa,
sradiusb задать радиусы полуосей эллипсоида (sradiusa=6378137, sradiusb=6356752).

Можно просто указать путь к кэшу GMT точно такой же, как и к родному кэшу SAS.Планеты, а папки с тайлами поместить просто в папку My100000, лежащую в родном (общем) кэше.


Конечно, можно и так.

Вообще инструкция несколько "примитивна", я если честно, такие писать не очень люблю, гораздо полезнее и интереснее объяснять физический смысл процесса. На написание такой пошаговой инструкции меня сподвигла фраза, услышанная из обсуждения GlobalMapper'а:
"А как без русификатора, если я в английском полный "0"?"

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 17 май 2010, 09:54
vdemidov
VictorM писал(а):если хотим в пулково, то в файле params.txt значение параметра projection нужно изменить на 2 (меркатор на эллипсоид) и в параметрах sradiusa,sradiusb задать радиусы полуосей эллипсоида (sradiusa=6378137, sradiusb=6356752).

Ну насколько я понимаю, это все равно будет ни разу не Пулково, так как у Пулково 42 есть смещения эллипсоида, а Планета работает только с центрированным.

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 17 май 2010, 17:24
Papazol
VictorM писал(а):Вообще инструкция несколько "примитивна", я если честно, такие писать не очень люблю, гораздо полезнее и интереснее объяснять физический смысл процесса.

Примитивные инструкции имеют право на жизнь. Потому что если для того, чтобы к определённой поездке создать нужную карту, придётся начинать с азов и доходить до тонкостей, очень многие люди просто не осилят этот процесс. Я тоже из их числа. Всё знать невозможно, тем более в области, так далеко отстоящей от твоей профессии. Global Mapper по сложности сходен с Фотошопом, но и в том, и в другом можно конкретные операции успешно проводить по инструкции, не вдаваясь в теорию.

Re: Использование SAS.Планеты с пользовательскими картами

СообщениеДобавлено: 19 май 2010, 17:46
webdev2
Есть еще простой алгоритм, правда он больше для квадрата N37 применим.
Там карты 1M, 500K, 200K, 100K.
1. Cкачиваем кэш Генштаба для SatMap отсюда: http://rutracker.org/forum/viewtopic.php?t=2886100
2. В SatMap выделяем нужный участок и экспортируем в родной формат SasPlanet.

Для других квадратов надо подождать, когда они появятся для SatMap.