Overlapping LAS tiles

In lidR a buffer is loaded on the fly when you process a collection of files by chunk. If some files are overlapping each other you have a warning to alert you about potential problems. The reason you will encounter issues is because you will load twice the points. I can see few classical cases of overlapping files that actually happened to me.

The files are already buffered

In this case lidR will load twice the buffered region and this will result in some dummy statistic, double tree counting, increasing processing time and probably other troubles. If the buffering is properly done, buffer points are likely to be flagged. For example flagged as withheld. You can filter them at read time

opt_filter(ctg) <- "-drop_withheld"

The files are flightlines

When a file records a single flight transect, files are overlapping, of course, but this does not create regions with duplicated points. You can process normally and ignore the message. The engine will take care of making independent and buffered chunks.

There are some duplicated files

A few tiles that appears more than once. When plotting, the light blue being transparent, the overlapping regions should appears darker. You must remove these files.


There are plenty of other explanations. Headers may be incorrectly populated, points may have been reprojected (this is likely the case below) and one may find other specific cases I have never thought about.

In your case, the collection looks good. The overlapping is very tiny. You must find why you have overlapping regions and if it was intended by the provider or not. Overlapping is not an issue by itself. The problem is duplicated points. I suggest you to apply few geometry operations to check your catalog and find where are the overlaps. For examples:

#> Le chargement a nécessité le package : raster
#> Le chargement a nécessité le package : sp

# Overlapping
ctg1 = readLAScatalog("BCTS/")
#> Be careful, some tiles seem to overlap each other. lidR may return incorrect outputs with edge artifacts when processing this catalog.

# Not overlapping
ctg2 = readLAScatalog("Campbell River/")


# Not overlapping catalog are expected to be unchange by union
spdf1     <- as.spatial(ctg1)
contour1 <- rgeos::gUnaryUnion(spdf1)

spdf1     <- as.spatial(ctg2)
contour2 <- rgeos::gUnaryUnion(spdf1)


# Compare the areas
round(contour1@polygons[[1]]@area, 4)
#> [1] 106817079
round(area(ctg1), 4)
#> [1] 111099479

round(contour2@polygons[[1]]@area, 4)
#> [1] 22133936
round(area(ctg2), 4)
#> [1] 22133936

Created on 2019-12-25 by the reprex package (v0.3.0)