Hi Sean,

how is your protocol better than wkt?

It is easier to create a geometry in shapely and then save it to shape file
using osgeo.ogr, so sometimes I use wkt or wkb  to convert geometries from
shapely to GDAL.

        #create a polygon using shapely
        p = Polygon(shell=points)
        #print p.wkt
        pGdal = ogr.CreateGeometryFromWkb(p.wkb)


BTW: great job with shapely, thank you

Cheers

--
Oleksandr Huziy

2012/6/27 Sean Gillies <[email protected]>

> Hi Christian,
>
> Have you looked at my Python geospatial data protocol doc?
>
> https://gist.github.com/2217756
>
> This would be a more general and less Shapely-dependent way to
> represent geometries, if you like.
>
> You might also announce on the python-gis-sig group:
>
>
> https://groups.google.com/forum/?hl=en_US&fromgroups#!forum/python-gis-sig
>
> On Wed, Jun 27, 2012 at 1:19 AM, Christian Ledermann
> <[email protected]> wrote:
> > Hello,
> > I have a first working draft of a library that reads and writes kml
> > files on github:
> > https://github.com/cleder/fastkml
> >
> > Introduction
> > fastkml is a library to read, write and manipulate kml files.
> > The aims are to keep it simple and fast (using lxml if available).
> > Fast refers to the time you spend to write and read KML files
> > as well as the time you spend to get aquainted to the library or to
> > create KML objects. It provides a subset of KML and is aimed at
> > documents that can be read from multiple clients such as openlayers
> > and google maps rather than to give you all functionality that KML
> > on google earth provides.
> >
> > Geometries are handled as shapely objects. This is a restriction
> > that I can live with and you will seldom find KML files that implement
> >  more complex geometries.
> >
> > Limitations
> > Geometries are limited to the geometry and multigeometry types shapely
> > provides (Point, LineString, Polygon, MultiPoint, MultiLineString,
> MultiPolygon
> > and LinearRing). While KML allows for more abstract MultiGeometries
> > consisting of a combination of Points, LineStrings and LinearRings,
> > this is not supported in fastkml
> >
> > Usage
> > You can find more examples in the included tests.py file, here is a
> > quick overview:
> >
> > Build a KML from scratch:
> > Example how to build a simple KML file:
> >
> >>>> from fastkml import kml
> >>>> from shapely.geometry import Point, LineString, Polygon
> >>>> k = kml.KML()
> >>>> ns = '{http://www.opengis.net/kml/2.2}'
> >>>> d = kml.Document(ns, 'docid', 'doc name', 'doc description')
> >>>> f = kml.Folder(ns, 'fid', 'f name', 'f description')
> >>>> k.append(d)
> >>>> d.append(f)
> >>>> nf = kml.Folder(ns, 'nested-fid', 'nested f name', 'nested f
> description')
> >>>> f.append(nf)
> >>>> f2 = kml.Folder(ns, 'id2', 'name2', 'description2')
> >>>> d.append(f2)
> >>>> p = kml.Placemark(ns, 'id', 'name', 'description')
> >>>> p.geometry =  Polygon([(0, 0, 0), (1, 1, 0), (1, 0, 1)])
> >>>> f2.append(p)
> >>>> print k.to_string(prettyprint=True)
> > '<ns0:kml xmlns:ns0="http://www.opengis.net/kml/2.2";>
> >  <ns0:Document id="docid">
> >    <ns0:name>doc name</ns0:name>
> >    <ns0:description>doc description</ns0:description>
> >    <ns0:visibility>1</ns0:visibility>
> >    <ns0:open>0</ns0:open>
> >    <ns0:Folder id="fid">
> >      <ns0:name>f name</ns0:name>
> >      <ns0:description>f description</ns0:description>
> >      <ns0:visibility>1</ns0:visibility>
> >      <ns0:open>0</ns0:open>
> >      <ns0:Folder id="nested-fid">
> >        <ns0:name>nested f name</ns0:name>
> >        <ns0:description>nested f description</ns0:description>
> >        <ns0:visibility>1</ns0:visibility>
> >        <ns0:open>0</ns0:open>
> >      </ns0:Folder>
> >    </ns0:Folder>
> >    <ns0:Folder id="id2">
> >      <ns0:name>name2</ns0:name>
> >      <ns0:description>description2</ns0:description>
> >      <ns0:visibility>1</ns0:visibility>
> >      <ns0:open>0</ns0:open>
> >      <ns0:Placemark id="id">
> >        <ns0:name>name</ns0:name>
> >        <ns0:description>description</ns0:description>
> >        <ns0:visibility>1</ns0:visibility>
> >        <ns0:open>0</ns0:open>
> >        <ns0:Polygon>
> >          <ns0:outerBoundaryIs>
> >            <ns0:LinearRing>
> >              <ns0:coordinates>0.000000,0.000000,0.000000
> >              1.000000,1.000000,0.000000
> >              1.000000,0.000000,1.000000
> >              0.000000,0.000000,0.000000
> >              </ns0:coordinates>
> >            </ns0:LinearRing>
> >         </ns0:outerBoundaryIs>
> >        </ns0:Polygon>
> >      </ns0:Placemark>
> >    </ns0:Folder>
> >  </ns0:Document>
> > </ns0:kml>'
> > Read a KML file
> > You can create a KML object by reading a KML file:
> >
> >>>> from fastkml import kml
> >>>> doc = """<?xml version="1.0" encoding="UTF-8"?>
> > ... <kml xmlns="http://www.opengis.net/kml/2.2";>
> > ... <Document>
> > ...   <name>Document.kml</name>
> > ...   <open>1</open>
> > ...   <Style id="exampleStyleDocument">
> > ...     <LabelStyle>
> > ...       <color>ff0000cc</color>
> > ...     </LabelStyle>
> > ...   </Style>
> > ...   <Placemark>
> > ...     <name>Document Feature 1</name>
> > ...     <styleUrl>#exampleStyleDocument</styleUrl>
> > ...     <Point>
> > ...       <coordinates>-122.371,37.816,0</coordinates>
> > ...     </Point>
> > ...   </Placemark>
> > ...   <Placemark>
> > ...     <name>Document Feature 2</name>
> > ...     <styleUrl>#exampleStyleDocument</styleUrl>
> > ...     <Point>
> > ...       <coordinates>-122.370,37.817,0</coordinates>
> > ...     </Point>
> > ...   </Placemark>
> > ... </Document>
> > ... </kml>"""
> >>>> k = kml.KML()
> >>>> k.from_string(doc)
> >>>> len(k.features())
> > 1
> >>>> len(k.features()[0].features())
> > 2
> >>>> k.features()[0].features()[1]
> > <fastkml.kml.Placemark object at 0x876a16c>
> >>>> k.features()[0].features()[1].description
> >>>> k.features()[0].features()[1].name
> > 'Document Feature 2'
> >>>> k.features()[0].features()[1].name = "ANOTHER NAME"
> >>>> print k.to_string(prettyprint=True)
> > <ns0:kml xmlns:ns0="http://www.opengis.net/kml/2.2";>
> >  <ns0:Document>
> >    <ns0:name>Document.kml</ns0:name>
> >    <ns0:visibility>1</ns0:visibility>
> >    <ns0:open>1</ns0:open>
> >    <ns0:Style id="exampleStyleDocument">
> >      <ns0:LabelStyle>
> >        <ns0:color>ff0000cc</ns0:color>
> >        <ns0:scale>1.0</ns0:scale>
> >      </ns0:LabelStyle>
> >    </ns0:Style>
> >    <ns0:Placemark>
> >      <ns0:name>Document Feature 1</ns0:name>
> >      <ns0:visibility>1</ns0:visibility>
> >      <ns0:open>0</ns0:open>
> >      <ns0:Point>
> >        <ns0:coordinates>-122.371000,37.816000,0.000000</ns0:coordinates>
> >      </ns0:Point>
> >    </ns0:Placemark>
> >    <ns0:Placemark>
> >      <ns0:name>ANOTHER NAME</ns0:name>
> >      <ns0:visibility>1</ns0:visibility>
> >      <ns0:open>0</ns0:open>
> >      <ns0:Point>
> >        <ns0:coordinates>-122.370000,37.817000,0.000000</ns0:coordinates>
> >      </ns0:Point>
> >    </ns0:Placemark>
> >  </ns0:Document>
> > </ns0:kml>
> >
> >
> >
> > --
> > Best Regards,
> >
> > Christian Ledermann
> >
> > Nairobi - Kenya
> > Mobile : +254 702978914
> >
> > <*)))>{
> >
> > If you save the living environment, the biodiversity that we have left,
> > you will also automatically save the physical environment, too. But If
> > you only save the physical environment, you will ultimately lose both.
> >
> > 1) Don’t drive species to extinction
> >
> > 2) Don’t destroy a habitat that species rely on.
> >
> > 3) Don’t change the climate in ways that will result in the above.
> >
> > }<(((*>
> > _______________________________________________
> > Community mailing list
> > [email protected]
> > http://lists.gispython.org/mailman/listinfo/community
>
>
>
> --
> Sean Gillies
> _______________________________________________
> Community mailing list
> [email protected]
> http://lists.gispython.org/mailman/listinfo/community
>
_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community

Reply via email to