| 
	
		
		
			| Еще о SASPlanet |  | 
				
			 |  | 
| speleodog | Дата: Пятница, 21.06.2013, 21:57 | Сообщение # 1 |  | Главный путешественник Группа: Заслуженные Сообщений: 307 
 Авто: Нива 2121
 Награды: 
9 Репутация: 4 Замечания: 0%   ± Статус: Вне сайта (А разве вне сайта есть жизнь?) | Нашел я на просторах сети вот такую статью  Сдалал все так, как там описывается для карт Алтая. Но результата нет. Сделанное не открывается. Может другие будут удачливей   
 Преобразование пользовательских карт в формат, понятный SAS.Планете
 SAS.Планета - наиотличнейшая программа. Недавно заюзал еще одну ее фичу. У меня много всяких топографических карт Архангельской
 области, 10-ти, 5-ти, 2-, 1-километровки и некоторые другие, рассматриваю их в
 Озике, удобно, но не идеально - карты порезаны на листы, бывает заинтересует
 какое-нибудь место, которое находится в районе границы двух, а то и четырех
 листов, приходится переключаться между картами, пока изучишь все подходы, вот бы
 все карты склеить. Еще одна мечта - чтобы при разном масштабировании на экране
 менялась подробность карты, как в каких-нибудь Яндекс.Картах, названия мелких
 объектов исчезали, а оставались только крупные, короче, чтобы при одном
 приближении видеть 10-километровку, при другом - 5-, при следующем 2- и так
 далее.
 Решил я тогда использовать кэш САС.Планеты в качестве хранилища топографических карт, а саму прогу - в качестве движка для их отображения. Нужно
 перегнать карты в один из форматов, которые САС.Планета понимает в качестве
 кэша, предварительно изменив проекцию этих карт на Меркатор (все российские
 топографические карты - в проекции Гаусса-Крюгера). В этом помогла мощнейшая
 программа GlobalMapper. Я загрузил все свои карты одного масштаба,
 предварительно привязанные под Озик, в GlobalMapper, изменил там проекцию на
 Меркатор, причем GM при изменении проекции умеет трансформировать растровое
 изображение, где надо растягивать, где надо сжимать.
 Потом отрезал от карт рамки, в большинстве случаев получилось автоматически, в некоторых случаях
 пришлось вручную повозиться с указанием границ листов, благо они проходят по
 параллелям и меридианам. Дальше порезать полученную огромную карту
 квадратно-гнездовым методом на фрагменты по 256x256 пикселей и сохранить в
 формате, который понимает САС.Планета, такой формат нашелся - Google Map Tiles,
 подключить полученную карту к САС.Планете (создать файл *.zmp).
 Что это мне дало - непрерывную 2-км (пока, с километровками еще не закончил) карту всей
 области, можно прокрутить ее с севера на юг, с запада на восток перед глазами,
 не переключаясь между листами.
 Для поездки в конкретное место можно средствами САС.Планеты сохранить любой участок (опять же непрерывный) под Озик,
 загрузить в наладонник и ехать.
 
 Теперь по порядку
 
 Продемонстрирую вышесказанное на примере 4 соседних листов масштаба 1:100000 (в 1 см 1 км): P37-02; P37-03; P37-08; P37-09, предварительно привязанных под
 OziExplorer.  В реальности листов может быть больше, но не слишком много - примерно на 150 загруженных листах размером
 6000x4700 пикселей каждый, GlobalMapper ругается, что не хватает памяти, поэтому
 большие наборы карт нужно обрабатывать по частям.
 
 Запускаем GlobalMapper, у меня версия 11, в десятой версии все практически так же. Заходим в меню Файл, выбираем пункт Open Data
 File(s). Или, что тоже самое, Open Your Own Data Files прямо в окне
 GlobalMapper'а.  Здесь и далее на скриншотах буду стараться показать, куда надо
 щелкнуть, потому что не знаю как точно называются те или иные пункты меню в
 русифицировнной версии GM:
 
 
   Выбираем нужные нам файлы, с помощью клавиш Ctrl и Shift можно выбрать сразу несколько файлов. Можно выбрать только один, а потом
 открыть второй, третий и так далее, все карты будут добавляться к уже
 загруженным в GM. В отличие от Озика GlobalMapper показывает не map - файлы в
 своем диалоге открытия файлов, а файлы графических форматов. Тем не менее для
 правильного открытия файлы привязки (map) для каждой картинки должны
 присутствовать в тех же папках, где и сами картинки:
 
   Карты загрузились и заняли правильные места относительно друг друга, правда рамки листов не везде обрезались правильно и
 наползают на соседние листы:
 $IMAGE3$
 SAS.Планета работает с картами в проекции Меркатор, а наши карты на данный момент в проекции Гаусса-Крюгера (точнее, в ее импортном
 аналоге - Universal Transcverse Mercator, UTM). Для изменения проекции заходим в
 меню Tools - Configure:
 
   
 В появившемся окне переходим на вкладку Projection и меняем следующие значения:
 Проекция - с Transverse Mercator на Mercator, в нижнем окошке все параметры на 0 кроме первого (SCALE FACTOR), его оставляем,
 как был:
 
   Систему координат пока не трогаем, перед сохранением карты поставим WGS-84, а пока нам будет удобнее работать в той системе, которая
 была (в данном случае Пулково-1942). Проекция настроена, нажимаем ОК. Результат
 преобразований налицо, параллели и меридианы стали параллельны краям
 экрана:
 $IMAGE6$
 Теперь избавимся от белых рамок, которые наползают на соседние листы.
 Есть два способа  - быстрый (автоматический) и медленный (ручной). Быстрый удобен, но почему-то не для всех карт дает хорошие
 результаты. Попробуем этот способ:
 Выбираем пункт меню Tools - Control Center или, что то же самое, кнопку Open Control Center:
 
   Появится вот такое окошко (центр управления слоями):
 
   Выделяем все листы с помощью клавиш Shift или Ctrl, нажимаем кнопку Options. В появившемся окне переходим на вкладку
 Cropping:
 
   Выбираем Automatically Crop Collar.
 Нажимаем ОК. Приблизив карту в области границы двух листов видим, что между листами образовался зазор:
 
   На самом деле это не листы раздвинулись, все осталось на своем месте, просто часть изображения залита желтым цветом.
 Значит, в данном случае первый способ не подходит, применим второй способ, точный, но занудный, особенно, если листов
 много.
 
 |  |  |  |  |  | 
| speleodog | Дата: Пятница, 21.06.2013, 22:09 | Сообщение # 2 |  | Главный путешественник Группа: Заслуженные Сообщений: 307 
 Авто: Нива 2121
 Награды: 
9 Репутация: 4 Замечания: 0%   ± Статус: Вне сайта (А разве вне сайта есть жизнь?) | Продолжаю   Опять заходим в центр управления слоями через меню Tools - Control Center, все листы теперь выбирать не нужно. Выбираем первый лист
 (у меня это P-37-02), нажимаем кнопку Options (можно просто на первом листе
 дважды кликнуть мышью). В появившемся окне  также переходим на вкладку Cropping
 и выбираем на этот раз Crop to Manually Specified Lat/Lon Boundary:
 
   Автоматически появится окошко для ручного ввода границ листа. Здесь нам нужно указать границы местности, изображенной на данном
 листе (сверху вниз: северная, южная, западная, восточная :)). Если вы имеете
 минимальное представление о топографии, вы без проблем определите, где у листа
 границы. По моим наблюдениям в большинстве случаев западная и восточная границы определяются правильно автоматически, одна из
 границ - северная или южная тоже. В некоторых случаях неправильно определяются
 все границы. Для листа P-37-02 северная граница будет 64° (определена автоматически верно), южная 63°40' (нужно вводить в градусах в
 десятичной системе, поэтому вводим 63.6666666666), западная 37, восточная 38
 (определены автоматически верно). Правильные границы получатся
 такие:
 
   Нажимаем ОК
 Аналогично вводим вручную границы для всех остальных листов. Если все правильно, то листы состыкуются без
 зазоров:
 $IMAGE3$
 Подготовимся теперь к сохранению получившейся карты в формате Google Maps Tiles. Нужно определиться с системой координат,
 можно сохранять и в Пулково-42, можно и в WGS-84, от выбранной СК зависят
 дальнейшие действия по подключению карты к SAS.Планета. Я перед сохранением
 меняю СК на WGS-84, для этого нужно зайти в тот же диалог, где ранее меняли
 проекцию на Mercator (через меню Tool - Configure). Выбираем СК (datum) WGS84,
 нажимаем ОК:
 
   Все преобразования карты закончены, осталось только сохранить ее в формате Google Maps Tiles (порезанную на куски (тайлы) по
 256x256 пикселей, каждый из кусков озаглавлен в соотвествии с его местом в
 карте).
 Для этого выбираем пункт меню File - Export Web Formats (Google Maps, VE, WW, etc.) - Export Google Maps Tiles. Будьте
 внимательны, если у вас GlobalMapper 10-й версии, то пункт Export Google Maps
 Tiles будет не вторым, а первым в списке:
 
 
   
 Появится окошко, в котором можно задать параметры экспорта:
 
   Остановимся только на тех параметрах, значения которых имеет смысл менять:
 Zoom Level Setup - максимальный уровень сгенерированных тайлов, указанный здесь уровень отличается на 1 в меньшую
 сторону от уровня, отображаемого в SAS.Планете, то есть, тайлы 13 уровня мы
 будем видеть в SAS.Планете при масштабе 14x.
 Number of Zoom Levels to Use: 5. Сколько всего уровней генерировать вниз от максимального, указано 5, значит будут
 сгенерированы тайлы 13, 12, 11, 10 и 9 уровней.
 Эти параметры GlobalMapper выбирает автоматически, можно оставить их по умолчанию, если результат не устроит, можно будет в
 дальнейшем удалить лишние уровни или наоборот, сгенерировать
 недостающие.
 Tile Image File Format - графический формат для тайлов. Я пока сильно не задумывался, какой формат в данном случае лучше, для
 себя остановился на JPG.
 Поставим галку напротив последнего пункта - Skip Empty Tiles. Если между листами имеются промежутки, которые GlobalMapper
 заполняет желтым цветом, тайлы для таких пустых областей генерироваться не
 будут.
 Все параметры установили, нажимаем ОК.
 GlobalMapper предложить указать папку и имя *.htm - файла. Файл называем как хотим, он нам, в принципе, не пригодится. Если
 интересно - можете по окончании всех работ открыть этот файл и посмотреть, что
 получилось.
 Ну вот, процесс пошел, появилось вот такое окошко:
 
   
 Внизу написано, что окончание примерно в воскресенье в 11:25.  Иной раз, когда листов загружено много, процесс может занять полдня.
 
 Дождались окончания, тайлы готовы, в выходной папке сформировался файл формата htm и 5 папок: Z9 - Z13.
 
 Подключим теперь наш набор тайлов в SAS.Планете в качестве новой карты.
 Список картографических сервисов, с которыми умеет работать SAS.Планета, не зашит в программу жестко, а может легко пополняться
 пользователем. Каждый тип карт описывается специальным файлом с расширением zmp,
 находящимся в папке \maps основной папки программы SAS.Планета. Исчерпывающее
 описание файлов zmp можно найти в файле readme.txt, поставляемом с
 SAS.Планетой.
 Создадим для нашей карты новый zmp, для этого скопируем уже имеющийся файл GoogleSat.zmp под новым именем, например
 Example.zmp.
 Теперь заходим в получившийся файл, как в архив (Total Commander позволяет это делать даже без изменения расширения на zip,
 если вы пользуетесь проводником, измените расширение на zip, откройте архив
 WinRAR'ом или WinZip'ом).
 В архиве лежат 4 файла: 18.bmp, 24.bmp, GetUrlScript.txt и params.txt. Открываем params.txt, вот его
 содержимое:
 
 [PARAMS]pnum=1
 GUID={F6574B06-E632-4D5F-BC75-C8FA658B57DF}
 name=Спутник (Google)
 name_9=Satellite (Google maps)
 asLayer=0
 DefURLBase=http://khm.google.com/kh/v=60&hl=ru
 projection=1
 sradiusa=6378137
 sradiusb=6378137
 NameInCache=sat
 separator=0
 Ext=.jpg
 UseDwn=1
 Usestick=1
 UseGenPrevious=1
 Usedel=1
 Usesave=1
 UseAntiBan=1
 Sleep=1000
 DefHotKey=71
 ContentType=image/jpeg
 BanIfLen=4321
 Модифицируем этот файл следующим образом:
 строку pnum=1 удаляем,
 в строке GUID={F6574B06-E632-4D5F-BC75-C8FA658B57DF} изменяем уникальный идентификатор. Если у вас есть программа для их генерирования, то генерируем и вставляем новый, а можно просто случайным образом
 изменить пару знаков в имеющемся с учетом того, что все знаки в GUID'е - это
 знаки шестнадцатиричной системы счисления, то есть цифры от 0 до 9 и латинские
 буквы от A до F, другие символы недопустимы.
 в строке name=... меняем имя карты, например, "Мои карты 1:100000",
 с строке name_9= то же самое, только по английски, например "My maps 1:100000". Если не планируется использовать SAS.Планету с
 английским языком пользовательского интефейса, то можно эту строку вообще
 убрать, но если вы хотите выложить свой zmp-файл в Интернете, то лучше оставить,
 чтобы англоязычным пользователям было понятно.
 Строку DefURLBase=http://khm.google.com/kh/v=60&hl=ru удаляем совсем, ведь мы будем пользоваться тайлами, лежащими в кэше.
 NameInCache=sat меняем на NameInCache=my100000. My100000 - так будет называться папка с тайлами для новой карты в кэше SAS.Планеты.
 
 Строку DefHotKey=71 удаляем.
 В конце файла или между двумя любыми строками добавляем строку: CacheType=4.
 
 В результате получилось:
 
 [PARAMS]GUID={F6574B06-E632-3D5F-BC75-C8FA658B57DE}
 name=Мои карты 1:100000
 name_9=My maps 1:100000
 asLayer=0
 projection=1
 sradiusa=6378137
 sradiusb=6378137
 NameInCache=My100000
 separator=0
 Ext=.jpg
 UseDwn=1
 Usestick=1
 UseGenPrevious=1
 Usedel=1
 Usesave=1
 UseAntiBan=1
 Sleep=1000
 ContentType=image/jpeg
 BanIfLen=4321
 CacheType=4
 Сохраняем файл params.txt.
 Если вы меняли расширение файла example.zmp на zip, то поменяйте его обратно на zmp.
 Теперь нужно положить тайлы в папку, в которой они будут доступны SAS.Планете. По умолчанию кэш формата Google Maps
 Tiles SAS.Планета хранит в папке \cache_gmt основной папки SAS.Планеты. Если
 такой папки нет, создайте ее. В папке \cache_gmt (или в какой другой, если вы
 храните кэш в другом месте) создайте папку My100000 и скопируйте в нее папки с
 тайлами (папки Z9 - Z13) сгенерированные GlobalMapper'ом.
 
 Все готово. Запускаем SAS.Планету и, перемещаясь по какой-нибудь из ранее существующих карт, обращаем свой взор на город Онегу
 Архангельской области. Выбираем любой масштаб от x10 до x14 (ведь мы
 сгенерировали всего 5 уровней тайлов), заходим в меню Карты и выбираем пункт
 "Мои карты 1:100000":
 
   Теперь мы видим нашу карту в SAS.Планете и можем работать с ней точно так же, как и с другими картами:
 
   Разные уровни тайлов можно генерировать из листов разного масштаба, тогда при масштабировании карты в SAS.Планете мы будем видеть,
 например сначала 10-километроквку, где детализация низкая, но зато надписи
 крупные, затем 5-, 2-, 1-километровки и более подробные карты.
 
 Повторюсь: Сделал все согласно этой инструкции, новая папка в SASPlanet создалась, показывается что из кеш загружаются тайлы, но изображение не появилось... :(
 |  |  |  |  |  
 |