Формат файлов KML и его использование на картах Google. Введение


Наиболее часто встречаемой проблемой, из-за которой пользователи не могут открыть этот файл, является неверно назначенная программа. Чтобы исправить это в ОС Windows вам необходимо нажать правой кнопкой на файле, в контекстном меню навести мышь на пункт "Открыть с помощью", а выпадающем меню выбрать пункт "Выбрать программу...". В результате вы увидите список установленных программ на вашем компьютере, и сможете выбрать подходящую. Рекомендуем также поставить галочку напротив пункта "Использовать это приложение для всех файлов KML".

Другая проблема, с которой наши пользователи также встречаются довольно часто - файл KML поврежден. Такая ситуация может возникнуть в массе случаев. Например: файл был скачан не польностью в результате ошибки сервера, файл был поврежден изначально и пр. Для устранения данной проблемы воспользуйтесь одной из рекомендаций:

  • Попробуйте найти нужный файл в другом источнике в сети интернет. Возможно вам повезет найти более подходящую версию. Пример поиска в Google: "Файл filetype:KML" . Просто замените слово "файл" на нужное вам название;
  • Попросите прислать вам исходный файл еще раз, возможно он был поврежден при передаче;
После описания Гарминовской инструкции по созданию растровых карт возникает немало вопросов, а именно:
-Как закачать спутниковые карты, чтоб в них отсутствовали служебные символы и рисунки "Планеты Земля"
-Как разбить карты на фрагменты размером 1024*1024 максимум каждый, а также контролировать максимальное количество этих файлов
-Как автоматизировать процесс создания фрагментов и их привязки в программе "Планета Земля"

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

Почему сразу не написал? Да все просто, программы которые раньше использовал меняются, кое-где появляются новые возможности, в общем на данном этапе сей процесс у меня выглядит так.

1. Закачка картинок и создание kmz файла
Есть такая совершенно бесплатная програмка, называется SASPlanet. Находятся она тут http://sasgis.org/download/ и скачать ее можно там-же.
Прелесть данной програмки в том, что она позволяет скачивать снимки не только Google карт, но и с кучи разных других источников. Причем скачивает их с возможностью задать на сколько фрагментов делить, и создавать ли дополнительные файлы привязки!!! Вот эти картинки совершенно лишены лишней информации, они закачиваются пакетом, т.е. сразу можно качать приличные объемы, можно задать уровень детализации, сгенерируются базовые файлы привязки, которыми можем воспользоваться, а главное может сразу создать kmz файл для навигатора!!!

Посему, качаем програмку, а точнее архив и распаковываем его на своем компьютере. Запускаем SASPlanet и первое что необходимо сделать, это выставить параметр в меню "Источник\Интернет и кеш", т.е. чтобы карты брались и с интернета, если они отсутствуют, и из кеша, если они уже были закачаны на компьютер.

Далее следует поиграть с програмкой, т.е. посмотреть карты, какие они с того или иного источника (меняя меню "Карты") дабы определиться что Вам больше всего подходит. Во многом работа с программой схожа с Планетой Земля.

Вот если вы определились с какой картой Вам интереснее и какой именно участок Вам нужен в навигатор, то тогда:

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

Отмечаем выбранный участок, для этого выбираем меню выделения прямоугольной области, карту при этом можно увеличить или уменьшить, главное чтоб отмечать было удобно.

Выделяем на карте нужную нам область

Появится вот такое меню


Выставляем тип карты на тот тип который вам понравился.
Масштаб ставим на число, которое мы запомнили как уровень детализации.
Проверьте что пункт "Пытаться загружать отсутствующие тайлы" отмечен галочкой.

Теперь нам немного надо подумать. Мы видим, что ниже под типом карты, программа нам дала разрешение картинки, в данном примере оно составляет 14336x12800 точек. У нас существуют в навигаторе следующие ограничения: размер файла может быть не больше 1024x1024 (естественно меньше можно, к примеру 900x200), общее количество таких файлов может быть не более 100.
Т.е. в данном конкретном случае, мы никоим образом не влазим в действующие ограничения. Тут два выхода, либо пометить меньшую территорию, либо выбрать более слабый уровень детализации. Если я сейчас установлю детализацию на один уровень меньше, т.е. 13, то получу разрешение картинки равное 7168x6400.
Вот 7168x6400 всполне подходят, ибо если мы картинку поделим например по горизонтали на 8 частей, а по вертикали на 7, то получим 896x915, что вполне влазиит в ограничение по размеру файлов, а количество файлов получится 7*8=56, что удовлетворяет условию, когда количество файлов должно быть не более 100.

Итак мы определились с размерами, масштабами и готовы дать команду загрузки из интернета всех необходимых снимков! Нажимаем кнопку "Начать"
Потребуется определенное время, иногда немалое, пока программа загрузит все данные с сервиса карт на локальный диск.

Появится вот такое меню, после окончания загрузки просто нажмите "Выход"

Мы закачали все нужные нам карты, теперь продолжаем, для этого надо снова вернуться к помеченой области, для этого просто выберите меню "Предыдущее выделение"


и, таким образом, мы вернулись к знакомому нам диалоговому меню

В этом диалоге выбираем закладку "Склеить"


Выберите результирующий формат как показано, т.е. создание "Kmz для Garmin".
Укажите путь сохранения и имя файла.
Выставьте правильный масштаб.

Поехали! Нажимаем "Начать" и програмка создаст kmz файл, внутри которого будут содержаться картинки карт, разбитые на части!!!

Все!!! То, что нам нужно было от программы SASPlanet мы получили, осталось лишь скопировать файл карт в навигатор (каталог /Garmin/CustomMaps/).
Единственно отмечу, не стоит давать kmz файлу имя русскими буквами, такой файл навигатор просто не увидит.

2. Редактирование карты
Есть ситуации, когда необходимо подправить картинки карт. У меня, например, получилась карта, дома которая выглядела нормально, а реально на водоеме ее читаемость оставляла желать лучшего, и в следующий раз я просто обрисовал сушу коричневым, а воду голубым, тем самым увеличив контрастность между объектами и повысив читаемость. Подобных причин может быть множество. Поэтому приведу руководство, как-же поредактировать готовый kmz файл.

Kmz файл представяет собой обычный Zip архив. Нужно настроить оболочку Windows, чтобы она позволяла видеть и изменять расширения файлов. Меняем расширение нашего файла на zip, и тогда файл можно открыть как архив и вытащить из него все содержимое.

Разархивируем наш файл в пустой каталог. Мы получим в нем:
doc.kml - текстовый XML файл привязок картинок к координатам.
files - каталог, в котором содержатся все картинки в формате jpg

Вот теперь берем и редактируем любые картинки в каталоге files. Главное не изменять имена файлов и не изменить размер картинок.
Для проверки как это будит выглядеть, можно программой Планета Земля открыть файл doc.kml, а он загрузит картинки. Как только, мы убедимся, что все нужные изменения сделаны, достаточно запаковать в zip архив файл doc.kml и каталог files с содержимым, после чего изменить расширение архива с zip на kmz.

Что такое KMZ-файл?

В KMZ-файл входит основной KML-файл и, как правило, связанные с ним ресурсы, сжатые с помощью архиватора в единый архив . KMZ-архив можно хранить на диске или отправлять по почте как единый файл. По сетевой ссылке KMZ-файл можно получить с веб-сервера. Перед сжатием основной KML -документ и связанные с ним ресурсы представляют с собой отдельные файлы с собственными именами и расширениями, организованные по каталогам. Формат KMZ служит не только для архивирования, но и для сжатия, поэтому в архив можно включить только один большой KML-файл. Размер файла обычно удается сократить в десять раз (в зависимости от содержания). Таким образом, KML-файл размером 10 КБ можно превратить в KMZ-файл размером 1 КБ.

Google Планета Земля и Google Карты распознают форматы KML и KMZ, а также поддерживают сохранение KMZ-файлов. По умолчанию основному KML-файлу присваивается имя doc.kml .

Примечание . Для ясности мы также будем называть основной KML-файл в KMZ-архиве doc.kml . В реальности он может называться как угодно, главное – он должен иметь расширение KML и быть единым KML -файлом в архиве.

Если размер файла doc.kml превышает 10 КБ или если в нем содержатся ссылки на другие ресурсы (картинки, звуковые фрагменты, модели или текстуры), необходимо создать KMZ-архив.

В этом разделе содержится несколько советов по созданию KML- и KMZ-файлов. Пример, который мы используем, заимствован с сайта Джимми Баффета , где формат KML используется для отображения гастрольных маршрутов и связанной с ними информации в Google Планете Земля.

Загрузите KMZ-файл с информацией об этом турне (используется с разрешения владельца).

Примечание . Чтобы относительные ссылки на KMZ-файлы правильно обрабатывались Google Планетой Земля 6.0, необходимо соблюсти все приведенные ниже инструкции (обратите особое внимание на пункт 4). В более ранних версиях геобраузера правила обработки относительных ссылок были менее строги, поэтому некоторые ссылки, которые работали в Google Планете Земля до версии 5.2 включительно, могут не работать в версии 6.0 и более поздних.

Чтобы создать KMZ-файл, выполните указанные ниже действия.

В примере ниже показана структура папок в KMZ-архиве гастрольного тура Джимми Баффета.

Так как дополнительных файлов всего пять, все они объединены в подпапку files . Если загрузить файл в Google Планету Земля, а затем скопировать и вставить его содержание в текстовый редактор, будет видно, что во всех элементах используются относительные ссылки на дополнительные ресурсы (значки, наложения на экране, звуковые файлы).

1.1 files/icon_surfing.png

files/Margaritaville.mp3

Ссылки на внешние файлы

В файле doc.kml обычно содержатся ссылки на другие файлы: картинки, значки, модели, текстуры и звуковые фрагменты. Они включаются в атрибут href (или в элемент ), который может находиться внутри следующих элементов KML:

Ссылки на внешние файлы могут быть абсолютными или относительными – этому посвящен следующий раздел. Они могут указывать на файлы внутри того же KMZ-архива, внутри других KMZ-архивов или на внешних веб-серверах. Относительные ссылки всегда определяются исходя из расположения файла doc.kml , как описано в разделе . Исключением является только внутри элемента .

Абсолютные и относительные ссылки

Абсолютная ссылка содержит URL файла целиком. Такие ссылки однозначны и, как правило, указывают на файлы, которые хранятся на внешних серверах. Абсолютная ссылка на локально сохраненный файл перестанет работать после того, как он будет перемещен в другую систему. Чтобы этого избежать, рекомендуется пользоваться относительными ссылками.

http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png

Обработка относительных ссылок

Относительные ссылки обрабатываются исходя из расположения файла doc.kml , т. е. любой относительный путь начинается в корневой папке KMZ-архива. В примере выше основной URL имеет следующий вид (он может отличаться в зависимости от того, откуда вы загрузили KMZ-архив):

Buffetthawaiitour.kmz

Чтобы сослаться на файл, находящийся в другом KMZ-архиве (например, images/jimmyphoto.jpg в margaritavillealbum.kmz ) используется обозначение "..", соответствующее переходу на один уровень вверх (выходу из текущего KMZ-архива (buffetthawaiitour.kmz ).

../margaritavillealbum.kmz/images/jimmyphoto.jpg"

Примечание . Правила обработки относительных ссылок в KMZ-архиве основаны на требованиях стандарта RFC 3986 (Раздел 5). Основной URL определяется расположением файла doc.kml , а все относительные URL обрабатываются на его основе.

Исключение: внутри элемента

Элемент включает элемент , указывающий на файл COLLADA, который необходимо загрузить в Google Планету Земля. Файлы COLLADA содержат трехмерные модели и имеют расширение DAE . Элемент также включает элемент , который связывает (файл текстуры, передаваемый в Google Планету Земля) и (путь к файлу текстуры внутри DAE -файла). Если в элементе указана относительная ссылка, Google Планета Земля обрабатывает ее на основе расположения DAE-файла, а не doc.kml , как это происходит во всех остальных случаях. Рассмотрим пример.

. . . MackyBldg.kmz/files/CU Macky.dae ../files/StairsnoCulling.jpg ../files/StairsnoCulling.jpg ../files/sideturretnoCulling.jpg . . .

Создание KMZ-архива

Чтобы создать ZIP-архив, воспользуйтесь приложением Windows Explorer или Mac Finder. Выделите содержание папки, в которой расположен файл doc.kml и связанные с ним ресурсы, и нажмите WinZip > Добавить в ZIP-файл . Библиотека Java в формате JAR также содержит ZIP-библиотеку для создания и извлечения ZIP-архивов, а в Linux предусмотрены соответствующие инструкции командной строки.

Примечание . При создании ZIP-архива необходимо выделить содержание папки с файлом doc.kml , а не саму папку.

Измените расширение созданного архива с ZIP на KMZ . Если потребуется извлечь файлы, достаточно снова изменить расширение на ZIP , после чего можно будет воспользоваться стандартной программой для распаковки ZIP-архивов.

KMZ-архивы в Google Планете Земля

Использование элемента