Как поместить гиперссылку в SimpleKML? - PullRequest
0 голосов
/ 19 октября 2018

Пакет simplekml дает этот пример вступления:

import simplekml
kml = simplekml.Kml()
kml.newpoint(name="Kirstenbosch", coords=[(18.432314,-33.988862)])  # lon, lat, optional height
kml.save("botanicalgarden.kml")

Я хотел бы расширить его следующим образом, чтобы получить гиперссылку на описание:

import simplekml
kml = simplekml.Kml()
pnt = kml.newpoint(name="Kirstenbosch",
  coords=[(18.432314,-33.988862)],
  description='<a href="https://en.wikipedia.org/wiki/Kirstenbosch_National_Botanical_Garden">Please go here</a>')
kml.save("botanicalgarden.kml")

Однако, когда я смотрю на полученный файл KML, гиперссылка была преобразована в текст:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
    <Document id="feat_7">
        <Placemark id="feat_8">
            <name>Kirstenbosch</name>
            <description>&lt;a href=&quot;https://en.wikipedia.org/wiki/Kirstenbosch_National_Botanical_Garden&quot;&gt;Please go here&lt;/a&gt;</description>
            <Point id="geom_3">
                <coordinates>18.432314,-33.988862,0.0</coordinates>
            </Point>
        </Placemark>
    </Document>
</kml>

Согласно этой странице , я должен выглядеть примерно так(гиперссылка обернута в CDATA):

  <description><![CDATA[
    <A href="http://stlab.adobe.com/wiki/images/d/d3/Test.pdf">test link</A>]]></description>

Что мне нужно сделать в simplekml, чтобы правильно получить гиперссылку в файле .KML?

1 Ответ

0 голосов
/ 19 октября 2018

Я нашел этот учебник Google Планета Земля KML https://developers.google.com/kml/documentation/kml_tut:

В Google Планета Земля 4.0 есть функция автоматической разметки, которая автоматически преобразует текст, например www.google.com, в активные гиперссылки, по которым пользователь может щелкнуть,Текст внутри тега, тег и элемент автоматически преобразуются в стандартные гиперссылки HTTP.Вам не нужно добавлять теги самостоятельно.

Таким образом, похоже, что вы сможете получить желаемое поведение, просто передав гиперссылку без тега <a>, например:

import simplekml
kml = simplekml.Kml()
pnt = kml.newpoint(name="Kirstenbosch",
  coords=[(18.432314,-33.988862)],
  description='https://en.wikipedia.org/wiki/Kirstenbosch_National_Botanical_Garden')
kml.save("botanicalgarden.kml")

simplekml также имеет функцию parsetext () , которая позволяет отключить поведение, которое экранирует символы html.Таким образом, вы можете использовать свой оригинальный код следующим образом:

import simplekml
kml = simplekml.Kml()
kml.parsetext(parse=False)
pnt = kml.newpoint(name="Kirstenbosch",
  coords=[(18.432314,-33.988862)],
  description='<a href="https://en.wikipedia.org/wiki/Kirstenbosch_National_Botanical_Garden">Please go here</a>')
kml.save("botanicalgarden.kml")

Тег CDATA также имеет специальное поведение, которое говорит GE не избегать символов HTML.Подробнее об этом можно прочитать здесь: https://developers.google.com/kml/documentation/kml_tut

simplekml Заявления о постоянном синтаксическом анализе тега CDATA , так что это может быть вариантом для более сложных ссылок.

...