Создание большого файла KML - PullRequest
3 голосов
/ 15 сентября 2011

Я создаю KML-файлы, которые могут содержать 50 000 или более меток, расположенных в папках на основе групповой привязки к домену.Файл KML использует пользовательские изображения, которые упакованы в файл KMZ.

Я хочу разбить один файл KML на несколько файлов, разбитых по группам, поэтому вместо одного большого документа с папками у меня был бы файл KML root / index с ссылками на папкик меньшим файлам KML.

Возможно ли это?Я думаю, что файл KMZ может содержать только 1 файл KML, независимо от того, где он находится или в его имени, в zip-файле.Кроме того, я не совсем уверен, как файл KML может ссылаться на другой файл KML.Это единственный способ иметь его как <NetworkLink> для локального файла?Может ли <NetworkLink> работать для связи с локальным файлом в том же KMZ?

Ответы [ 2 ]

9 голосов
/ 12 октября 2012

По своему дизайну вы можете иметь несколько файлов KML в одном файле KMZ. Таким образом, вы можете объединить много файлов KML в один файл KMZ, который загружается, отправляется по электронной почте или доступен в автономном режиме.

Google Планета Земля может масштабироваться до большого количества объектов (50 000 или более) в одном файле KMZ, если функции разделены на несколько файлов KML и KML определен так, что все подчиненные Файлы KML не отображаются сразу. KML предоставляет механизмы для управления отображением объектов или вложенных KML-файлов с использованием фильтрации по времени, региону или высоте.

Большие KML-файлы можно масштабировать, используя любой из следующих методов:

  1. NetworkLinks
  2. Регионы
  3. Стиль папки радио или явная видимость = 0

NetworkLinks

Вы можете иметь любой уровень NetworkLinks из корневого KML-файла от простого (один KML-файл с сетевыми ссылками на все другие KML-файлы в KMZ) до глубокого (каждый KML-файл с NetworkLink на другие KML-файлы, каждый со своим собственный NetworkLink). Зависит от того, как вам нужно структурировать ваш KML и насколько велики данные.

Ключ заключается в том, что Google Планета Земля выбирает первый KML в качестве корневого файла KML, поэтому вы должны убедиться, что первый файл (обычно с именем doc.kml) является корневым файлом KML, который загружает другие файлы KML по сетевым ссылкам. Общая структура состоит в том, чтобы включать дополнительные файлы KML в подпапку «kml», чтобы отличать ее от корневого файла KML.

Вот пример KMZ с 4 записями файла: корневой файл KML (doc.kml), который содержит NetworkLink для " kml / sub1.kml " и другой для " kml / sub2.kml".", который в свою очередь имеет NetworkLink для" sub3.kml"также в подпапке" kml ".

== test.kmz ==

+doc.kml
   NetworkLink > kml/sub1.kml
   NetworkLink > kml/sub2.kml
+kml/sub1.kml
+kml/sub2.kml
   NetworkLink > sub3.kml
+kml/sub3.kml

Вот структура такого doc.kml файла:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <NetworkLink>
        <name>NetworkLinked sub-item</name>
        <Link>
          <href> kml/sub1.kml </href>
        </Link>
    </NetworkLink>
    <NetworkLink>
        <name>NetworkLinked sub-item</name>
        <Link>
          <href> kml/sub2.kml </href>
        </Link>
    </NetworkLink>
    ...
  </Document>
</kml>

Рекомендуется, чтобы в родительский KML-файл было добавлено более одного NetworkLink с основанными на времени функциями, а затем добавьте элемент <TimeSpan>, включая полный диапазон времени для этого набора функций, в противном случае Google Планета Земля будет автоматически загрузить весь файл при запуске.

<NetworkLink>
  <TimeSpan>
    <begin>2007-01-14T01:00:00Z</begin>
    <end>2007-01-14T02:00:00Z</end>
  </TimeSpan>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>

Регионы

A Регион влияет на видимость геометрии метки или изображения наложения. Регионы в сочетании с NetworkLinks обеспечивают доступ к огромным объемам данных в файлах KML. Регион может дополнительно иметь минимальную и максимальную высоту для фильтрации на уровне высоты.

Более подробно, вот учебник по регионам в KML
https://developers.google.com/kml/documentation/regions

Радио Папки

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

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
        <Style id="rf">
            <ListStyle>
                <listItemType>radioFolder</listItemType>
            </ListStyle>
        </Style>

        <Folder>        
            <name>One at a time example</name>
            <open>1</open>
            <description>Link 1 visible by default</description>
            <styleUrl>#rf</styleUrl>

            <NetworkLink>
                <name>NetworkLinked sub-item-1</name>
                <Link>
                    <href> kml/sub1.kml </href>
                </Link>
            </NetworkLink>

            <NetworkLink>
                <name>NetworkLinked sub-item-2</name>
                <visibility>0</visibility>
                <Link>
                    <href> kml/sub2.kml </href>
                </Link>
            </NetworkLink>

        </Folder>
    </Document>
</kml>
1 голос
/ 17 сентября 2011

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

См .: http://code.google.com/intl/nl-NL/apis/kml/documentation/kml_tut.html (поиск "Сетевые ссылки"), где написано:

Сетевая ссылка содержит элемент с (гипертекст ссылка), который загружает файл. Может быть локальный файл спецификация или абсолютный URL. Несмотря на название, не обязательно загружать файлы из сети. в ссылка указывает местоположение любого из следующего:

• Файл изображения, используемый значками в стилях значков, накладываемых поверхностях и наложенных на экран
• Файл модели, используемый в элементе
• Файл KML или KMZ, загруженный по сетевой ссылке

Нет, вы не можете ссылаться на другой файл внутри kmz. В кмз может содержаться только 1 кмл файл (хотя он может содержать и другие типы файлов). Вы можете найти схему файлов кмз и то, что может быть в них помещено здесь В частности, обратите внимание на следующий раздел:

2.Введите файл KML по умолчанию (doc.kml или любое другое имя, которое вы хотите дать это) на верхнем уровне в этой папке. Включите только один файл .kml. (Когда Google Планета Земля открывает файл KMZ, он сканирует файл в поисках первый файл .kml в этом списке. Он игнорирует все последующие .kml файлы, если таковые имеются, в архиве. Если архив содержит несколько .kml файлы, вы не можете быть уверены, какой из них будет найден первым, поэтому вам нужно включить только один.)

Последнее замечание: ваш вопрос ничего не говорит о том, нужны ли вам эти 50 000 меток в качестве автономных файлов или нет. Если бы вы могли обслуживать их динамически, вы могли бы использовать региональные ссылки, где GE сообщит вам регион просмотра клиента, чтобы вы могли вернуть небольшое подмножество путевых точек (только те, которые находятся внутри представления пользователей). Для получения дополнительной информации this - ссылка для нажатия.

...