Синтаксис тега Region в KML
У меня есть несколько сотен меток, которые находятся в одной папке. Я пытаюсь сделать так, чтобы метки появлялись только ниже определенной высоты. (Метки были созданы путем экспорта слоя из ArcGIS, и я предполагаю, что высота должна быть указана в единицах, используемых системой координат слоя, в данном случае в футах; исправьте меня, если я ошибаюсь.) Однако, я ничего не делаю с <Region>
тег, кажется, работает; этикетки с радостью появляются на всех высотах. Вот код, который я использую; кто-нибудь может сказать, что с ним не так?
<Document id="DocumentName">
<name>NameGoesHere</name>
<Snippet></Snippet>
<Folder id="NameOfTheFolder">
<name>NameGoesHere</name>
<Region id="highAltitude">
<LatLonAltBox>
<north>40</north>
<south>37</south>
<east>-74</east>
<west>-79</west>
<minAltitude>50000</minAltitude>
<maxAltitude>500000</maxAltitude>
</LatLonAltBox>
<LabelStyle id="styleNameHere">
<scale>0</scale>
</LabelStyle>
</Region>
<Snippet></Snippet>
...
<placemark> ... </placemark>
<placemark> ... </placemark>
<placemark> ... </placemark>
...
</Folder>
</Document>
Смысл всего этого кода в том, чтобы подавлять метки на высотах выше 50000 футов, но он ничего подобного не делает. К концу кода, после </Folder>
тег, но до </Document>
В теге есть некоторый код, сгенерированный при экспорте файла, который задает стили меток. Но удаляю ли я <scale>
часть этого, кажется, не имеет никакого эффекта. Этот код выглядит следующим образом:
<Style id="Stylename">
<IconStyle>
...
</IconStyle>
<LabelStyle>
<color> ... </color>
<scale> ... </scale>
</LabelStyle>
<PolyStyle>
...
</PolyStyle>
</Style>
Я подозреваю, что я делаю что-то не так с точки зрения синтаксиса, но, поскольку у меня не было опыта работы с KML до нескольких дней назад, я не уверен, в чем проблема. Я ценю любые идеи относительно того, почему это не работает.
1 ответ
Вам необходимо определить Lod (уровень детализации) в регионе, иначе он всегда будет отображаться.
<Region id="highAltitude">
<LatLonAltBox>
...
</LatLonAltBox>
<Lod>
<minLodPixels>256</minLodPixels>
</Lod>
<Region>
MinLodPixels определяет размер области, где, если это меньше, чем это минимальное количество пикселей на экране, тогда область не отображается.
https://developers.google.com/kml/documentation/kmlreference
Кроме того, LabelStyle недопустим в регионе. Это должно появиться в <Style>
элемент. Если KML не работает так, как вы ожидаете, 9 из 10 раз синтаксис неверен - попробуйте проверить его с помощью средства проверки KML.