# Align approximately colocated vector points for comparison

I have a more general, methodological question and do not have much knowledge about GIS techniques.

I have 6 topographic survey ([x,y,z] point clouds), each representing the same dune/beach system at different points in time. The surveys were conducted so as to have each point be as close as possible to the same point in the previous survey. Of course, the positions are not actually identical, but do represent the evolution of the beach at a given point through time due to storms, etc.

I would like to compare the change in elevation through time on a point-by-point basis. Should I just define a buffer around each point in a survey and clip the successive survey, in an attempt to capture the correct point in the buffer for comparison?

The data sets have 10000+ points and I can envision this become sloppy with overlapping buffers, etc. If you know of a more precise method or strategy to tackle this problem, let me know and I can read the documentation. Also, if I need to rephrase the question, let me know, my GIS lingo is also poor.

• You could use a proximity operator, like Near but this will indeed fail as the dunes drift father and a different dune becomes closer. Can you isolate individual dunes as linestrings? If so it becomes easier to identify general trends. If not, do the dunes generally move in a particular cardinal? You could create a wedge shaped geometry as a search... but that would be a lot of code. – Michael Stimson Jun 15 '17 at 23:06
• To achieve comparison of elevations over time you definitely want to interpolate the points to elevation rasters, then compare the rasters over time. Using, i.e. GRASS you could import the point clouds (see grasswiki.osgeo.org/wiki/LIDAR for details) then use the capabilities of temporal datasets (grass.osgeo.org/grass70/manuals/temporalintro.html) to do comparisons. In the GRASS wiki there's a nice demo of changes in dunes over time. – Micha Jun 16 '17 at 7:40
• @MichaelMiles-Stimson. There is basically one dune, if any, maybe just a berm. The beach elevations around here are very, very low. The surveys run normal to the shoreline (cross-shore). Some of the survey transects come as individual files which makes for easy identification of particular survey lines. Others come as *.csv with x,y,z columns for all the points. It is probably possible to isolate each cross-shore survey, if it can help. Also, the dune crest is a pretty straight line and runs SW to NE. – CoastalBoy Jun 16 '17 at 17:13
• @Micha I considered 2D interpolation and finding the difference in elevations between surfaces. However, I think the interpolation error will be on the same order as the change in elevation. In the alongshore direction, the interpolation step would be > 250' and the change in elevation is probably a few feet at most between surveys. I'll do the math on this though. Thanks for GRASS references, I've been meaning to glance through their documentation. – CoastalBoy Jun 16 '17 at 17:17
• I'd assume that the "alongshore" elevations hardly change at all, so maybe 250' is OK? If transects are closely spaced then interpolation might work. As for the GRASS references, it will take more than a glance ;-) – Micha Jun 17 '17 at 11:37