Locations are numbers between 0 inclusive and 1 exclusive.
On opennet, node locations are chosen when the node is created, and then remain fixed. On darknet, locations can change as nodes swap locations with their peers. Such changes are logged to the file
Keys are assigned location based on either the hash of the data (for CHKs) or the hash of the document name and public key (SSKs, and by extension USKs and KSKs). The routing process ensures that data is stored on nodes whose locations are near the location of the key.
Locations are circular, so that the distance between location 0.99 and 0.01 is 0.02.
They can be thought of as angular positions around a circle, except specified on the range 0 to 1 instead of in degrees or radians; the distance between two locations is the smaller of the two angles between them. For the code-inclined, this is
distance = min(abs(loc_a - loc_b),
1 - abs(loc_a - loc_b)).