Hi Oleksandr,

It's not better, just different. WKT is for sharing data between
different programs, even over a network. I designed this protocol for
passing geospatial data within a single Python program (or distributed
Python programs if you want) where it's not necessary to serialize
between modules or functions.

I'm glad you enjoy Shapely :)

On Wed, Jun 27, 2012 at 10:37 AM, Oleksandr Huziy <[email protected]> wrote:
> 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
>



-- 
Sean Gillies
_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community

Reply via email to