Я получил (голландские) x y координаты человека и x y координаты из разных мест в базе данных, например:
x = 158322
y = 460782
Теперь я хотел бы найти все местоположения в радиусе 15 км вокруг местоположения человека.
Каков наилучший способ найти это, и можете ли вы привести пример?
В зависимости от того, сколько у вас есть данных, вам нужно рассчитать расстояние между вашей фиксированной точкой и каждой точкой в вашем наборе данных. Если набор данных большой, вы можете сначала получить все точки в ограничительной коробке 15 км, а затем рассчитать расстояния для совпадающих точек.
Чтобы рассчитать расстояние в php, вы можете сделать что-то вроде этого:
$distance = sqrt(($x-$x2)^2+($y-$y2)^2 // = pythagoras a^2+b^2=c^2
Конечно, это предполагает, что земля плоская. Если вам нужно компенсировать кривизну Земли, выполните поиск в Google для «расчета расстояния между двумя координатами».
Если я правильно помню, «голландские координаты», о которых вы говорите, указаны в метрах, поэтому получение 15-километрового ограничивающего прямоугольника должно быть таким простым, как: x +/- 15000
а также y +/- 15000
Кстати, mysql имеет функцию sqrt, так что технически вы можете сделать все это в mysql.
Кроме того, если вам нужен код для преобразования Rijksdriehoekscoördinaten в GPS-координаты, дайте мне знать;)
Других решений пока нет …