Brent,
I was so focussed on trying to use labelling that I didn't think of
other options, such as you suggested:) The two files method does the
job, and matches the hacky way that the original file generated...
I see some discussion of adding aggregate functions on top of
QgsExpression [1], which as I understand it, would make such functions
available for use in the labelling dialog. I could then do something
elegant like datetime = max(datetime) to select the most recent datapoint...
Regards
Gavin
[1] Towards the end of:
https://groups.google.com/forum/#!topic/qgis-developer-remote/3pWsSyYSd9s
On 11/03/2014 5:35 a.m., Brent Wood wrote:
Hi Gavin,
Can you have the row written to two files concurrently? One as an
append & one overwrite.
Both watched in QGIS & have the overwrite as the upper layer on the
map with a different symbol, thus overwriting the trackline point in
the append csv file.
Not as elegant as an SQL solution, but csv's are not really reknowned
for their elegance in data management :-)
I haven't really thought this through, but you might try using a named
pipe (see mkfifo on Linux, Windows has something along these lines
too), & run "tail -n 1 -f myfile.csv" into the named pipe, then open
this in QGIS. This is such a horrible solution it's almost certain not
to work, but you never know :-)
Cheers,
Brent
------------------------------------------------------------------------
*From:* Gavin Macaulay <[email protected]>
*To:* [email protected]
*Sent:* Tuesday, March 11, 2014 9:18 AM
*Subject:* [Qgis-user] Labelling expressions: how to select the 'last'
row in a csv dataset
Hi,
I have a csv file that looks like this:
datetime, latitude, longitude, speed
2014-03-07T06:11:56.794000, 69.6930, 19.0321, 0.0
2014-03-07T06:12:56.791000, 69.6904, 19.0291, 10.0
2014-03-07T06:13:56.787000, 69.6879, 19.0257, 10.0
A new row gets added to the file every second or so. I load this file
into QGIS as a csv file with the watch option turned on so that every
time the map is refreshed, the map plots any new points that have been
added to the file.
I would like to have the most recent line in the file plotted with a
different symbol to the rest (the data represents realtime data from a
moving ship so it's good to highlight the latest position). I can almost
do this using the expression based labelling, but not quite (I can get a
row number, but not the total number of rows, so can't do something
obvious like: $rownum == $numrows, or $id == max($id)).
Any suggestions on how I can achieve this? I could move the data into a
SQL-based layer and choose the last row using an SQL statement, but the
simplicity of generating the csv files is attractive.
Thanks
Gavin
_______________________________________________
Qgis-user mailing list
[email protected] <mailto:[email protected]>
http://lists.osgeo.org/mailman/listinfo/qgis-user
_______________________________________________
Qgis-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-user