Каковы стандарты правильности/проверки для файлов KMZ?

У меня есть файл KMZ, который содержит файл KML, который, в свою очередь, содержит файл KMZ. Я использую JTS для обработки этого с помощью java. Текущая функциональность синтаксического анализатора kml/kmz не работает с описанным выше вариантом использования.

Может кто-нибудь, пожалуйста, пролить свет на это?


person ZeroGraviti    schedule 14.05.2017    source источник
comment
Как вы можете иметь файл KMZ внутри файла KML? Предоставьте минимально воспроизводимый пример, демонстрирующий вашу проблему.   -  person geocodezip    schedule 14.05.2017
comment
Итак, это KMZ, который содержит KML, который, в свою очередь, содержит KMZ (т. е. KMZ ‹›----› KML ‹›-----› KMZ). Кроме того, этот файл KMZ с такой структурой открывается в Google Earth.   -  person ZeroGraviti    schedule 15.05.2017
comment
Google Планета Земля не поддерживает записи KMZ, упакованные в файл KMZ. Если так, то, вероятно, захочется распаковать внутренний KMZ и перепаковать самый внешний файл KMZ с распакованные файлы из первого KMZ. Вы можете ссылаться на файл KMZ из KMZ, если используете его абсолютный URL. См. раздел Вложенные файлы KMZ. Пожалуйста, подтвердите, находится ли содержащийся KMZ в первом KMZ или просто ссылается извне через networkLink.   -  person JasonM1    schedule 16.05.2017


Ответы (2)


Файл KMZ представляет собой ZIP-архив и должен содержать только один файл KML на корневом уровне (обычно с именем «doc.kml»). Если он содержит более одного файла KML, Планета Земля (или другое средство визуализации KML) выберет один файл KML из KMZ и отобразит его, а остальные проигнорирует.

Теоретически у вас может быть больше файлов KML в подпапках в zip-файле и ссылка на них через NetworkLinks в основном KML-файле, но я никогда не пробовал, чтобы убедиться, что это работает.

Поскольку файл KMZ представляет собой zip-архив, а файл KML представляет собой XML-документ, нет возможности иметь другой файл KMZ внутри KML, если только на него не ссылается что-то вроде NetworkLink.

Вот документация KML о файлах KMZ: https://developers.google.com/kml/documentation/kmzarchives

person Christiaan Adams    schedule 15.05.2017

Google Планета Земля не поддерживает вложенные файлы KMZ (т. е. записи файла KMZ в файле KMZ), и, скорее всего, это не поддерживается в JTS.

Файл KMZ, «содержащийся внутри» файла KMZ, может быть структурирован двумя способами:

  1. Файл KMZ, на который ссылается другой файл KMZ.
    Файл KMZ test1.kmz включает doc.kml с NetworkLink со ссылкой на test2.kmz, который является отдельным файлом. Файл test2.kmz находится в той же «папке», что и test1.kmz. В качестве альтернативы test2.kmz может находиться на другом веб-сервере, а test1.kmz использует абсолютный URL-адрес для test2.kmz.

  2. Файл KMZ в файле KMZ -- это не поддерживается в Google Планета Земля
    Файл KMZ содержит две записи: doc.kml + test2.kmz, а doc.kml имеет NetworkLink со ссылкой на "test2. кмз"

Для варианта № 2 рекомендуется либо переместить вложенный файл KMZ в то же расположение, что и внешний файл KMZ, либо распаковать содержимое вложенных файлов KMZ и добавить их непосредственно в родительский файл KMZ. Возможно, вам потребуется создать папку для каждого вложенного файла KMZ и изменить ссылку URL-адреса в NetworkLink, которая на него ссылается.

На практике внешний файл KMZ, на который ссылается другой файл KMZ (вариант № 1), встречается нечасто, поскольку рекомендуемая практика использования KMZ заключается в наличии автономной сцены KML, включающей все значки, изображения, наложения, вложенные файлы KML и т. д. Таким образом, файл KMZ является автономным и может быть отправлен по электронной почте или даже отображен в автономном средстве просмотра KML.

person JasonM1    schedule 18.05.2017