Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am attempting to write a script to get the end points of a series polylines, and then use those end points to create a polygon. I'm not sure which tools to begin to use on this project.

I would prefer to use QGIS or even better a python script using open source tools.


share|improve this question
This is a similar post which outlines retrieving the end nodes of a street segment in qGIS:… – evv_gis Feb 10 '14 at 18:21
up vote 11 down vote accepted

It is easier with Fiona, more "Pythonic", and list slicing:

import fiona
with fiona.drivers():
   for line in"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"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"some_shapefile.shp"):
     print shape(line['geometry']).boundary[0], shape(line['geometry']).boundary[1]
share|improve this answer
Gene, the boundary() method of a Shapely object might be more reliable. See – sgillies Feb 10 '14 at 21:38
Great answer, gene. Just one correction, the boundary of the MultiLineString could have more than 2 points if it is complex. – cag Feb 11 '14 at 10:16

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

for i in range(lyr.GetFeatureCount()):
    print firstpoint[0],firstpoint[1],lastpoint[0],lastpoint[1] #X,Y,X,Y
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.