Continuing my posts on the centerline of a complex polygon (you can work your way backward from here), here’s it’s application to a riverine system (legend: light blue river, black centerline derived from routing through the skeleton of voronoi polygons from a densified stream bank set + the skipped skeleton bits in pink– read through the series if you if you don’t grok that explaination):
12 thoughts on “What is the center line of a complex polygon? Routing Stream and Rivers”
I had to this for a job one time and found a nice ArcGIS model (ArcInfo required). Clever way of using Thiessen Polygons to do the job, am guessing the workflow is pretty similar to yours:
I also used FME and worked pretty well too, from what I remember too ET GeoWaizards a create centerline tool.
It would be really cool if you could do all of this in PostGIS.
Ahh, hadn’t seen that one. I’ll have to take a look.
Depending on how you densify, it may take a long time to finish the process especially if you have lots of features. After the trimming of the skeletons, unsplitting the lines and applying a threshold minimum length helps in cleaning further the lines and also creates line segments according to line intersections. You still have to make some manual edits but it helps a lot in minimizing the worload.
Have you ever tried the RBT Toolkit?
I read the documentation a bit and it sounds promising. Too bad we are not alowed to download 3rd party extensions here in the office, I was hoping to try it.
Soon to come– a complete QGIS solution… .
is this possible in QGIS 2.x already ?
No, but check out https://eox.at/2015/12/curved-labels/
is tihis possible in QGIS 2.x already ? – convert polygons to centerlines
Are you able to provide the methodology for this process? We are trying to do something very similar for remote sensing application
In the end, this was a much more challenging proposition than I could have imagined. Fully automated centerline extraction is quite difficult. Specifically, what is your use case?
We’re doing rapid characterization of river widths across large areas. Input is a binary river mask, but we need to compute centerlines initially.
It is possible to achieve it, on PostgresGis, with one of the options of the free tool geom8tricks. With the PolygonsToLines option, once you select the origin polygons and the destination Database connection has been correctly configured, you get the line objects, centered on the polygons . The program does it in two stages, in a first one it obtains the decomposition of the polygon in lines, by means of st_skeleton function.
In a second stage, the tool selects the longest line of all those that make up the object.
The problem of intersections is solved whenever there is a primary key column in the origin polygons, which allows to distinguish between the objects that intersect