Opened 15 years ago

Last modified 4 years ago

#12416 new

Improve KML Serialization — at Initial Version

Reported by: jbronn Owned by: jbronn
Component: GIS Version: dev
Severity: Normal Keywords: gis kml 3d style rhr
Cc: Tyler Erickson Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no
Pull Requests:How to create a pull request

Description

Currently, there are several problems with the way KML is generated inside GeoDjango:

  1. Now that 3D is supported, there is no way to specify the following element tags, which are important to displaying them in Google Earth: <altitudeMode>, <extrude>, and <tessellate>.
  1. A Z value of 0 needs to be omitted for geometries that are purely 2D (this primarily affects the GEOSGeometry.kml property)
  1. Allow specification of an id for geometries, so that styling rules may be easily applied by the user.
  1. For polygons: "the <coordinates> for polygons must be specified in counterclockwise order. Polygons follow the "right-hand rule," which states that if you place the fingers of your right hand in the direction in which the coordinates are specified, your thumb points in the general direction of the geometric normal for the polygon." KML Reference.

I'm not sure about implementing this within the 'dumb' kml properties of GEOSGeometry and OGRGeometry, rather GeoQueryset.kml should wrap ST_AsKml in the necessary routines, e.g., ST_Reverse(ST_ForceRHR(ST_AsKml(the_geom))).

Attached is an initial idea for a write_kml routine.

According to the ticket's flags, the next step(s) to move this issue forward are:

  • To provide a patch by sending a pull request. Claim the ticket when you start working so that someone else doesn't duplicate effort. Before sending a pull request, review your work against the patch review checklist. Check the "Has patch" flag on the ticket after sending a pull request and include a link to the pull request in the ticket comment when making that update. The usual format is: [https://github.com/django/django/pull/#### PR].

Change History (1)

by jbronn, 15 years ago

Attachment: write_kml.diff added
Note: See TracTickets for help on using tickets.
Back to Top