root676 / QNEAT3

QNEAT3 - Qgis Network Analysis Toolbox 3
GNU General Public License v3.0
64 stars 13 forks source link

[FEATURE] Service area improvements #19

Open merkato opened 5 years ago

merkato commented 5 years ago

I'm looking for two improvements in QNEAT3 plugin, to use it in Fire Brigade practice:

  1. Iso-Area as PointCloud (from Layer) returns origin_point_id field. If we can get Iso-Areas as Polygons (from Layer) polygons cut by this parameter - result will be a real Service Area (area of responsibility).

  2. Network entry cost from attribute table. In polish state/volunteer fire brigades realm there's level of readiness. It's represented by minutes from alarm to leaving fire station. In state fire brigade it's 1 minute, on volunteer it's 3 or 5 minutes depending on fire brigade class. Right now we cannot analyse whole county area with all units, only those with same readiness level.

I'm must say that QNEAT3 is easiest way to get isochrones in QGIS right now. I'm using pgRouting too (where I've implemented readiness attribute in query, and calculating service area from concave hull), but this is not optimal for fire brigade officers - generally not proficient in GIS.

josephholler commented 4 years ago

Responding to point 1: I've been interested in this as well. The current programming framework for QNEAT3 does not support it. From my understanding: The QNEAT3 Polygon and Contour outputs are based on TIN interpolations, so you'd have to generate a new TIN for each polygon, and this would be a very slow process. In addition, the TIN interpolations are based on Pointclouds. Pointclouds do contain the unique ID of the start point, however if a point is within the iso-area size of multiple start points, it only contains the cost and ID of the nearest start point.

Alternatively, you might look at the QGIS service area (from layer) algorithm: it will output multi-line features with one feature per input point. You could buffer these with a flat end cap style or use convex hulls to approximate a service area for each start point.

root676 commented 4 years ago

@josephholler: This is a very good analysis of the problem: Due to the fact that you could implement this in a pyhton script (looping through points and then intersecting the resulting iso-areas) I didn't want to add more algorithm parameters/steps that would make the currently very complex QNEAT3 algs more complicated.

josephholler commented 4 years ago

To follow up on this, the algorithms currently ask for an input "unique point ID field", which cannot be meaningful the way the algorithms work. Can this input be removed from the algorithms?