Dist - ObjectVision/GeoDMS GitHub Wiki
Geometric functions dist(ance)
- dist(destination, origin)
dist(destination, origin) calculates the distance (as the crow flies) between origin and destination points of the same domain unit.
The resulting data item has a float32 value type without metric. Use the value function to convert the result to the requested values unit.
Use the sqrdist function if only the distance order is relevant as the sqrdist function calculates faster.
- destination and origin are data items with Point value type
The values unit and domain unit of the destination and origin arguments must match.
attribute<meter> distOD (ADomain) := value(dist(destination, origin), meter);
destination | origin | distOD |
---|---|---|
{401331, 115135} | {401331, 115135} | 0 |
{399501, 111793} | {399476, 111803} | 26.9 |
{399339, 114883} | {399289, 114903} | 53.9 |
{401804, 111323} | {401729, 111353} | 80.8 |
{398796, 111701} | {398696, 111741} | 107.7 |
ADomain, nr of rows = 5
If you want to calculate the distance to the nearest point between to different domain, the following example script can be used.
unit<uint32> from_domain := plan
{
attribute<rdc_meter> geometry := plan/geometry;
attribute<to_domain> to_domain_rel := connect(to_domain/geometry, geometry);
attribute<rdc_meter> geometry_to := to_domain/geometry[to_domain_rel];
attribute<meter> dist := value(dist(geometry_to, geometry), meter);
}
unit<uint32> to_domain := city
{
attribute<rdc_meter> geometry := city/geometry;
}