Saturday 8 July 2017

qgis - Fill attribute-table on feature-creation based on intersection with other layer


I am digitising line-features based on WGS-84 point-coordinates from a PDF which cannot be copied from.


The final line layer should contain lines which each connect two points and have the following attributes:



  • Name of start point - name of end point


  • value in [ft]

  • value in [m]

  • remark (same for all features)

  • date of creation


Currently I have a csv-based point layer which simply contains the name and coordinates of each point.




Creating the point layer is no problem, but creating the lines is a bit of a hassle. Either I manually create a .csv containing all existing connections between points like the following table and run connect by lines:


enter image description here


Or I digitise the lines manually but fill in the values (except for the value in [ft]) automatically.





Personally I would prefer option 2, since option 1 involves more manual work and the process has to be repeated regularly (and I figure I could transfer the solution to other tasks), but I can't get the expression right which should fill in the name of the line. All other values are created flawlessly (though they are not taken from another layer based on geometry).


I added the WKT of each point to the point-layer. Currently I am running the following, which returns NULL, despite it seems to be correct to me:


attribute(get_feature('point-layer','geom',geom_to_wkt(start_point($geometry))),'Waypoint')||' - '||attribute(get_feature('point-layer','geom',geom_to_wkt(end_point($geometry))),'Waypoint')

Any ideas where I went wrong?



Answer



You could try the aggregate function to get the value of WayPoint where the object in point-layer intersects the start_point (and end_point) of the digitised line. This might work better than trying to compare the WKTs:


aggregate(layer:='point-layer', aggregate:='max', expression:="WayPoint",
filter:= intersects( $geometry, start_point(geometry(@parent))))

||' - '||
aggregate(layer:='point-layer', aggregate:='max', expression:="WayPoint",
filter:= intersects( $geometry, end_point(geometry(@parent))))

This only works in QGIS 3, the geometry(@parent) function wasn't available in QGIS 2.x


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...