[GRASS-user] access vertices coordinates of a line from Python

gene martin.laloux at gmail.com
Tue Jun 26 11:34:12 PDT 2012


In fact, you can also use OGR python bindings, it is easy

     from osgeo import ogr
      # open grass vector
     ds = ogr.Open('/grassdata/geol/test/vector/linevector/head')
     layer = ds.GetLayer(0)
     layer.GetName()
     'linevector'
     feat = layer.GetFeature(0)
     geom = feature.GetGeometryRef()
     geom.ExportToWkt()
     'LINESTRING (206643.21517600651714
125181.180585758760571,201007.334329231875017
121517.855520597659051,208615.775875667924993
118699.916871574707329,199034.77765774706495
115036.59058768954128,200725.543214922072366
111936.85601020231843,192835.30987687263405
107428.147941565141082,192835.30987687263405 107428.147941565141082)'
     for i in range(geometry.GetPointCount()):
          xy = geometry.GetPoint(i)
          print xy

      (206643.21517600652, 125181.18058575876, 0.0)
      (201007.33432923188, 121517.85552059766, 0.0)
      (208615.77587566792, 118699.91687157471, 0.0)
      (199034.77765774706, 115036.59058768954, 0.0)
      (200725.54321492207, 111936.85601020232, 0.0)
      (192835.30987687263, 107428.14794156514, 0.0)
      (192835.30987687263, 107428.14794156514, 0.0)

After that you can use other modules like *shapely*

      from shapely.wkt import loads
      line =loads(geometry.ExportToWkt())
      list(line.coords) 
       [(206643.21517600652, 125181.18058575876), (201007.33432923188,
121517.85552059766), (208615.77587566792, 118699.91687157471),
(199034.77765774706, 115036.59058768954), (200725.54321492207,
111936.85601020232), (192835.30987687263, 107428.14794156514),
(192835.30987687263, 107428.14794156514)]





--
View this message in context: http://osgeo-org.1560.n6.nabble.com/access-vertices-coordinates-of-a-line-from-Python-tp4983417p4984036.html
Sent from the Grass - Users mailing list archive at Nabble.com.


More information about the grass-user mailing list