How would one get the end points of a polyline?
It is easier with Fiona, more "Pythonic", and list slicing:
import fiona
with fiona.drivers():
for line in fiona.open("some_shapefile.shp"):
# print first and last point of every line
print line['geometry']['coordinates'][0], line['geometry']['coordinates'][-1]
And with shapely:
from shapely.geometry import Point
for line in fiona.open("some_shapefile.shp"):
print Point(line['geometry']['coordinates'][0]), Point(line['geometry']['coordinates'][-1])
And you can construct you polygon and save it with Fiona
New: using the suggestion of sgillies (boundary) with the shape function of shapely
from shapely.geometry import shape
for line in fiona.open("some_shapefile.shp"):
print shape(line['geometry']).boundary[0], shape(line['geometry']).boundary[1]
You can do this with the GDAL/OGR python bindings. Here's a link to the OGR API tutorial.
A worked example:
from osgeo import ogr
ds=ogr.Open(somepolylines)
lyr=ds.GetLayer()
for i in range(lyr.GetFeatureCount()):
feat=lyr.GetFeature(i)
geom=feat.GetGeometryRef()
firstpoint=geom.GetPoint(0)
lastpoint=geom.GetPoint(geom.GetPointCount()-1)
print firstpoint[0],firstpoint[1],lastpoint[0],lastpoint[1] #X,Y,X,Y