Generate a unique ID for a line segment, based on the non-cryptographic murmur32 hash.

generateLineHash(x, precision=-1, algo='murmur32')



a SpatialLinesDataFrame object, with 1 line segment per feature (e.g. simple features)


digits are rounded to this many places to the right (negative) or left (positive) of the decimal place


hash function algorithm


The input SpatialLinesDataFrame object must NOT contain multi-part features. The precision specified should be tailored to the coordinate system in use and the snapping tolerance used to create join decision line segments. A precision of 4 is reasonable for geographic coordinates (snapping tolerance of 0.0001 degrees or ~ 10 meters). A precision of -1 (snapping tolerance of 10 meters) is reasonable for projected coordinate systems with units in meters.


A vector of unique IDs created from the hash of line segment start and end vertex coordinates. Unique IDs are returned in the order of records of x and can therefore be saved into a new column of the associated attribute table.


An error is issued if any non-unique IDs are generated. This could be caused by using coordinates that do not contain enough precision for unique hashing.


D.E. Beaudette