Получить координаты между двумя точками?

Допустим, у меня есть два момента: l1 = (lat1, lng1) а также l2 = (lat2, lng2), Как программно создать сетку координат, которые расположены на расстоянии х метров друг от друга?

введите описание изображения здесь

Согласно этому изображению, if I have the two red points and a value x, I want to find out the coordinates of the yellow points, Я знаю, что две красные точки могут не иметь расстояния между ними (по горизонтали или вертикали), кратного x, что может привести к тому, что последние две точки в строке и / или столбце будут иметь расстояние меньше x.

2

Решение

Основываясь на вашей карте, вы создаете ограниченную сетку на очень маленькой части поверхности Земли. Это означает, что вы можете игнорировать проекционную математику и просто работать с 2D-алгеброй: вычитать долготы и делить на количество горизонтальных сеток, затем вычитать широты и делить на количество вертикальных сеток.

// source coordinates in decimal degrees
$pOne = [ 'lat' => 35.001234, 'lon' => -78.940202 ];
$pTwo = [ 'lat' => 35.010272, 'lon' => -78.721478 ];

// grid size along latitude and longitude
$nLat = 5;
$nLon = 5;

// get the grid size for each dimension in degrees
$dLat = ($pTwo['lat'] - $pOne['lat']) / $nLat;
$dLon = ($pTwo['lon'] - $pOne['lon']) / $nLat;

for ($i = 0; $i < $nLat; $i++) {
$lat = $pOne['lat'] + ($i*$dLat);
for ($j = 0; $j < $nLon; $j++) {
$lon = $pOne['lon'] + ($j*$dLon);
printf('<%.6f, %.6f>' . PHP_EOL, $lat, $lon);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector