Я не знаком с библиотеками программного обеспечения для этой задачи.но если вы говорите в 2D пространстве, то здесь некоторые математики, что приходит на ум:
вы можете найти расстояние любых 2-х точек в 2D пространстве, используя этот расчет:
расстояние = SQRT ((X2 - X1)^2 + (У2 - Y1)^2)
inwhich^2 означает питание от 2
так le'ts у вас есть массив объектов Point (здесь я определяю простой класс для очков), таким образом вы можете узнать, какие точки соседствуют:
class Point {
protected $_x = 0;
protected $_y = 0;
public function __construct($x,$y) {
$this->_x = $x;
$this->_y = $y;
}
public function getX() {
return $this->_x;
}
public function getY() {
return $this->_y;
}
public function getDistanceFrom($x,$y) {
$distance = sqrt(pow($x - $this->_x , 2) + pow($y - $this->_y , 2));
return $distance;
}
public function isCloseTo($point=null,$threshold=10) {
$distance = $this->getDistanceFrom($point->getX(), $point->getY());
if (abs($distance) <= $threshold) return true;
return false;
}
public function addNeighbor($point) {
array_push($this->_neighbors,$point);
return count($this->_neighbors);
}
public function getNeighbors() {
return $this->_neighors;
}
}
$threshold = 100; // the threshold that if 2 points are closer than it, they are called "close" in our application
$pointList = array();
/*
* here you populate your point objects into the $pointList array.
*/
// you have your coordinates, right?
$myPoint = new Point($myXCoordinate, $myYCoordinate);
foreach ($pointList as $point) {
if ($myPoint->isCloseTo($point,$threshold) {
$myPoint->addNeighbor($point);
}
}
$nearbyPointsList = $myPoint->getNeighbors();
Редактировать: Извините, я забыл формулу линейного расстояния. оба значения расстояния по оси X и Y должны питаться от 2, а затем сумма их суммы является результатом. код теперь исправляется.
Вы говорите о нескольких местах в небольшом географическом районе или большом количестве мест, расположенных на большом расстоянии? Решения для нескольких точек, близких друг к другу, не будут масштабироваться до больших чисел, распределенных на расстояниях, где кривизна земли вступает в игру. –
Просто говорить о горстке мест действительно в моей области, а не о большом количестве мест. – Tom