4

I'm trying to generate a Steiner tree in QGIS 2.18.2 using a simple set of points, and a simple line vector. See the screen shot below:

enter image description here

I then open up v.net.steiner, set the points and vector layers.

enter image description here

However, I get the following message saying 'The following layers were not correctly generated'. See below: enter image description here

Having looked at other questions similar to this, (i) I have made sure both layers are in WGS84 for consistency, and (ii) I have tried saving the output file in different places such as on my desktop, or as a temporary file. Neither of these worked however.

Does anyone have any other suggestions?

Output log is as follows:

`Algorithm v.net.steiner - Creates Steiner tree for the network and given terminals starting... g.proj -c proj4="+proj=longlat +datum=WGS84 +no_defs" v.in.ogr min_area=0.0001 snap=-1 input="C:/Users/EJO31/Dropbox/Digital Comms - Fixed broadband model/Data/OpenStreetMap" layer=manhattan_line_vector_layer_WGS84_4_points output=tmp15156647622235 --overwrite -o v.in.ogr min_area=0.0001 snap=-1 input="C:/Users/EJO31/Dropbox/Digital Comms - Fixed broadband model/Data/OpenStreetMap" layer=manhattan_drive_WGS84_4_points output=tmp15156647622236 --overwrite -o g.region n=52.2135296 s=52.210668029 e=0.1360675 w=0.1327734 res=100 v.net -s input=tmp15156647622235 points=tmp15156647622236 out=tmp15156647622237 op=connect threshold=50 v.db.connect -o map=tmp15156647622237 table=tmp15156647622236 layer=2 v.net.steiner input=tmp15156647622237 arc_type=line,boundary terminal_cats="1-100000" npoints="-1" output=output22f3548a7a4a413eb6b3039d3c14746c --overwrite v.out.ogr -s -e input=output22f3548a7a4a413eb6b3039d3c14746c type=auto output="C:\Users\EJO31\AppData\Local\Temp\processing7112f5e23ee04250aae815ef39efcc02\cb8c1eab320b46aca5fc9590aee4c19d" format=ESRI_Shapefile output_layer=output --overwrite

C:\PROGRA~1\QGIS2~1.18\bin>set HOME=C:\Users\EJO31

C:\PROGRA~1\QGIS2~1.18\bin>set GISRC=C:\Users\EJO31.qgis2\processing\processing.gisrc7

C:\PROGRA~1\QGIS2~1.18\bin>set WINGISBASE=C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5

C:\PROGRA~1\QGIS2~1.18\bin>set GISBASE=C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5

C:\PROGRA~1\QGIS2~1.18\bin>set GRASS_PROJSHARE=C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\share\proj

C:\PROGRA~1\QGIS2~1.18\bin>set GRASS_MESSAGE_FORMAT=plain

C:\PROGRA~1\QGIS2~1.18\bin>if "" == "" set PATH=C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\bin;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\lib;C:\PROGRA~1\QGIS2~1.18\apps\Python27\lib\site-packages\Shapely-1.2.18-py2.7-win-amd64.egg\shapely\DLLs;C:\PROGRA~1\QGIS2~1.18\apps\Python27\DLLs;C:\PROGRA~1\QGIS2~1.18\apps\Python27\lib\site-packages\numpy\core;C:\PROGRA~1\QGIS2~1.18\apps\qgis\bin;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\lib;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\bin;{app};C:\PROGRA~1\QGIS2~1.18\apps\Python27\Scripts;C:\PROGRA~1\QGIS2~1.18\bin;C:\Windows\system32;C:\Windows;C:\Windows\WBem;C:\Program Files\R\R-3.4.0\bin\x64;C:\Program Files\RStudio\bin

C:\PROGRA~1\QGIS2~1.18\bin>if not "" == "" set PATH=C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\bin;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\lib;;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\bin;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\lib;C:\PROGRA~1\QGIS2~1.18\apps\Python27\lib\site-packages\Shapely-1.2.18-py2.7-win-amd64.egg\shapely\DLLs;C:\PROGRA~1\QGIS2~1.18\apps\Python27\DLLs;C:\PROGRA~1\QGIS2~1.18\apps\Python27\lib\site-packages\numpy\core;C:\PROGRA~1\QGIS2~1.18\apps\qgis\bin;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\lib;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\bin;{app};C:\PROGRA~1\QGIS2~1.18\apps\Python27\Scripts;C:\PROGRA~1\QGIS2~1.18\bin;C:\Windows\system32;C:\Windows;C:\Windows\WBem;C:\Program Files\R\R-3.4.0\bin\x64;C:\Program Files\RStudio\bin

C:\PROGRA~1\QGIS2~1.18\bin>set GRASS_VERSION=7.0.0

C:\PROGRA~1\QGIS2~1.18\bin>if not "" == "" goto langset

C:\PROGRA~1\QGIS2~1.18\bin>FOR /F "usebackq delims==" %i IN ("C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\etc\winlocale") DO @set LANG=%i

C:\PROGRA~1\QGIS2~1.18\bin>set PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

C:\PROGRA~1\QGIS2~1.18\bin>set PYTHONPATH=;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\etc\python;C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.0.5\etc\wxpython\n

C:\PROGRA~1\QGIS2~1.18\bin>g.gisenv.exe set="MAPSET=PERMANENT"

C:\PROGRA~1\QGIS2~1.18\bin>g.gisenv.exe set="LOCATION=temp_location"

C:\PROGRA~1\QGIS2~1.18\bin>g.gisenv.exe set="LOCATION_NAME=temp_location"

C:\PROGRA~1\QGIS2~1.18\bin>g.gisenv.exe set="GISDBASE=C:\Users\EJO31\AppData\Local\Temp\processing7112f5e23ee04250aae815ef39efcc02\grassdata"

C:\PROGRA~1\QGIS2~1.18\bin>g.gisenv.exe set="GRASS_GUI=text"

C:\PROGRA~1\QGIS2~1.18\bin>g.proj -c proj4="+proj=longlat +datum=WGS84 +no_defs" Default region was updated to the new projection, but if you have multiple mapsets g.region -d should be run in each to update the region from the default Projection information updated

C:\PROGRA~1\QGIS2~1.18\bin>v.in.ogr min_area=0.0001 snap=-1 input="C:/Users/EJO31/Dropbox/Digital Comms - Fixed broadband model/Data/OpenStreetMap" layer=manhattan_line_vector_layer_WGS84_4_points output=tmp15156647622235 --overwrite -o Over-riding projection check Check if OGR layer contains polygons... 0..10..20..30..40..50..60..70..80..90..100 Importing 10 features (OGR layer )... 0..10..20..30..40..50..60..70..80..90..100 ----------------------------------------------------- Building topology for vector map ... Registering primitives...

10 primitives registered 62 vertices registered Building areas... 0..10..20..30..40..50..60..70..80..90..100 0 areas built 0 isles built Attaching islands... Attaching centroids... 10..20..30..40..50..60..70..80..90..100 Number of nodes: 15 Number of primitives: 10 Number of points: 0 Number of lines: 10 Number of boundaries: 0 Number of centroids: 0 Number of areas: 0 Number of isles: 0

C:\PROGRA~1\QGIS2~1.18\bin>v.in.ogr min_area=0.0001 snap=-1 input="C:/Users/EJO31/Dropbox/Digital Comms - Fixed broadband model/Data/OpenStreetMap" layer=manhattan_drive_WGS84_4_points output=tmp15156647622236 --overwrite -o Over-riding projection check Check if OGR layer contains polygons... 0..20..40..60..80..100 Column name renamed to Column name renamed to Importing 5 features (OGR layer )... 0..20..40..60..80..100 ----------------------------------------------------- Building topology for vector map ... Registering primitives...

5 primitives registered 5 vertices registered Building areas... 0..20..40..60..80..100 0 areas built 0 isles built Attaching islands... Attaching centroids... 20..40..60..80..100 Number of nodes: 0 Number of primitives: 5 Number of points: 5 Number of lines: 0 Number of boundaries: 0 Number of centroids: 0 Number of areas: 0 Number of isles: 0

C:\PROGRA~1\QGIS2~1.18\bin>g.region n=52.2135296 s=52.210668029 e=0.1360675 w=0.1327734 res=100

C:\PROGRA~1\QGIS2~1.18\bin>v.net -s input=tmp15156647622235 points=tmp15156647622236 out=tmp15156647622237 op=connect threshold=50 Copying features... 10..20..30..40..50..60..70..80..90..100 Building topology for vector map ... Registering primitives...

10 primitives registered 62 vertices registered Number of nodes: 15 Number of primitives: 10 Number of points: 0 Number of lines: 10 Number of boundaries: 0 Number of centroids: 0 Number of areas: - Number of isles: - Copying attributes... Building topology for vector map ... Registering primitives...

19 primitives registered 75 vertices registered Building areas... 0..5..10..15..21..26..31..36..42..47..52..57..63..68..73..78..84..89..94..100 0 areas built 0 isles built Attaching islands... Attaching centroids... 5..10..15..21..26..31..36..42..47..52..57..63..68..73..78..84..89..94..100 Number of nodes: 19 Number of primitives: 19 Number of points: 5 Number of lines: 14 Number of boundaries: 0 Number of centroids: 0 Number of areas: 0 Number of isles: 0 v.net complete. 4 lines (network arcs) written to output.

C:\PROGRA~1\QGIS2~1.18\bin>v.db.connect -o map=tmp15156647622237 table=tmp15156647622236 layer=2 The table is now part of vector map and may be deleted or overwritten by GRASS modules Select privileges were granted on the table

C:\PROGRA~1\QGIS2~1.18\bin>v.net.steiner input=tmp15156647622237 arc_type=line,boundary terminal_cats="1-100000" npoints="-1" output=output22f3548a7a4a413eb6b3039d3c14746c --overwrite Number of terminals: 5 Number of Steiner points set to 3 Building graph... Registering arcs... 5..10..15..21..26..31..36..42..47..52..57..63..68..73..78..84..89..94..100 Flattening the graph... Graph was built Init costs from node 9 Init costs from node 12 Init costs from node 15 Init costs from node 17 Init costs from node 19 ERROR: Terminal at node [9] cannot be connected to terminal at node [15]

C:\PROGRA~1\QGIS2~1.18\bin>v.out.ogr -s -e input=output22f3548a7a4a413eb6b3039d3c14746c type=auto output="C:\Users\EJO31\AppData\Local\Temp\processing7112f5e23ee04250aae815ef39efcc02\cb8c1eab320b46aca5fc9590aee4c19d" format=ESRI_Shapefile output_layer=output --overwrite ERROR: Vector map not found

C:\PROGRA~1\QGIS2~1.18\bin>exit Converting outputs Loading resulting layers

The following layers were not correctly generated. Network_Steiner You can check the log messages to find more information about the execution of the algorithm`

2 Answers 2

1

I have been strugling with this grass tools to create this R package that builds Steiner Trees. I had that same error and It was because topology errors or little gaps between lines. Sometimes, they seems to be all within the network, but sometimes they are not attached. If a node is within one of these, the v.net.steiner crush.

You can solved using a sequence of grass tools:

  1. v.clean (to clean topology)
  2. v.net (to connect points to network)
  3. (optional) dissolve lines to create an unique network

If this still doesn't work, is probably because you have gaps between lines. One way to detect these is by doing the following:

  1. Do a tiny buffer of your lines (like 0.1 m)
  2. Dissolve all polygons (this will dissolve all the network).
  3. Multipart to singlepart (this will transform you unique feature in multiple features, which means that if you have separated polygons then you have unchained lines.
  4. Zoom to each of those and edit or remove the line.
1
  • Thanks Cesar, as this is quite an old question I'm going to accept this as the answer and close. Commented May 10, 2020 at 15:49
1

Try and use UTM for all of your layers. Grass GIS prefers this

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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