Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

keytree

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

keytree

KML utilities for the ElementTree API

  • 1.1.0
  • PyPI
  • Socket score

Maintainers
1

Keytree

Keytree provides functions for reading and writing KML using the ElementTree API.

Reading KML

KML Placemark elements can be adapted to the Python geo interface and then used with packages like Shapely_::

data = """ ... ... ... ... point ... Point test ... ... ... -122.364383,37.824664,0 ... ... ... ... ... ... """ from xml.etree import ElementTree doc = ElementTree.fromstring(data) kmlns = doc.tag.split('}')[0][1:] placemarks = doc.findall('*/{%s}Placemark' % kmlns) p0 = placemarks[0] import keytree f = keytree.feature(p0) print f.id, f.properties.name, f.properties.snippet pm_1, point, Point test

from shapely.geometry import shape s = shape(f.geometry) print s.buffer(1.5).exterior.length 9.4209934708642571

Writing KML

Objects that provide the Python geo interface can also be converted to ElementTree API Elements::

f = { ... 'id': 'pm_2', ... 'geometry': { ... 'type': 'Point', ... 'coordinates': (-122.364383, 37.824663999999999) }, ... 'properties': { ... 'title': 'Feature 2', ... 'description': 'The second feature', }

The first argument to the keytree.element function is an XML context, the created element will have the same namespace as that element::

data = """ ... ... ... ... ... """ doc = ElementTree.fromstring(data) elem = element(doc, f) print elem <Element {http://www.opengis.net/kml/2.2}Placemark at ...> pprint(list(elem)) [<Element {http://www.opengis.net/kml/2.2}name at ...>, <Element {http://www.opengis.net/kml/2.2}Snippet at ...>, <Element {http://www.opengis.net/kml/2.2}description at ...>, <Element {http://www.opengis.net/kml/2.2}Point at ...>]

The created element is not automatically added to the KML context and must be appended to its proper Document or Folder::

doc[0].append(elem) print etree.tostring(doc) <ns0:kml xmlns:ns0="http://www.opengis.net/kml/2.2"> ns0:Document <ns0:Placemark id="pm_2"> ns0:nameNumber 2</ns0:name> ns0:SnippetPlacemark number 2</ns0:Snippet> <ns0:description /> ns0:Point ns0:coordinates0.000000,0.000000,0.0</ns0:coordinates> </ns0:Point> </ns0:Placemark> </ns0:Document> </ns0:kml>

KML Helpers

The keytree.kml module contains a few useful utility functions::

from keytree.kml import kml_ns, findall_placemarks print kml_ns(doc) {http://www.opengis.net/kml/2.2} findall_placemarks(doc) [<Element {http://www.opengis.net/kml/2.2}Placemark at ...>]

.. _Shapely: http://pypi.python.org/pypi/Shapely

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc