Distance Between a Point and a Line
It’s possible to calculate the shortest distance between a point and a
Line
. As Polyline
and Polygon
are also built upon the Line
class
it’s also possible to calculate distances from a point the polyline/polygon
by iterating over their segments.
The following image explains how the distance is calcualated: P and R are located in such a way that the nearest distance to the line is the distance between P, R and the line end points. Point Q is nearer to the actual line than to any of the end points, so the actual distance is the perpendicular distance between Q and the line.
Example
<?php
use Location\Coordinate;
use Location\Distance\Vincenty;
use Location\Line;
use Location\Utility\PointToLineDistance;
$point = new Coordinate(52.5, 13.5);
$line = new Line(
new Coordinate(52.5, 13.1),
new Coordinate(52.5, 13.1)
);
$pointToLineDistanceCalculator = new PointToLineDistance(new Vincenty());
printf(
'Distance from point to line: %.1f meters%s',
$pointToLineDistanceCalculator->getDistance($point, $line),
PHP_EOL
);
The code above will produce the output below:
Distance from point to line: 27164.1 meters