Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取两点之间的坐标?_Php_Coordinates - Fatal编程技术网

Php 获取两点之间的坐标?

Php 获取两点之间的坐标?,php,coordinates,Php,Coordinates,假设我有两点:l1=(lat1,lng1)和l2=(lat2,lng2)。如何以编程方式生成相距x米的坐标网格 根据这张图,如果我有两个红色点和一个值x,我想找出黄色点的坐标。我知道两个红色点之间的距离(水平或垂直)可能不是x的倍数,这可能导致一行和/或一列中的最后两个点的距离小于x。根据您的地图,您正在地球表面的一小部分上创建一个有界网格。这意味着您可以忽略投影数学,只需处理二维代数:减去经度并除以水平栅格的数量,然后减去纬度并除以垂直栅格的数量 // source coordinates

假设我有两点:
l1=(lat1,lng1)
l2=(lat2,lng2)
。如何以编程方式生成相距x米的坐标网格


根据这张图,
如果我有两个红色点和一个值x,我想找出黄色点的坐标。我知道两个红色点之间的距离(水平或垂直)可能不是x的倍数,这可能导致一行和/或一列中的最后两个点的距离小于x。

根据您的地图,您正在地球表面的一小部分上创建一个有界网格。这意味着您可以忽略投影数学,只需处理二维代数:减去经度并除以水平栅格的数量,然后减去纬度并除以垂直栅格的数量

// 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);
    }
}
//以十进制度数表示的源坐标
$pOne=['lat'=>35.001234,'lon'=>78.940202];
$pTwo=['lat'=>35.010272,'lon'=>78.721478];
//沿纬度和经度的栅格大小
$nLat=5;
$nLon=5;
//获取每个标注的栅格大小(以度为单位)
$dLat=($pTwo['lat']-$pOne['lat'])/$nLat;
$dLon=($pTwo['lon']-$pOne['lon'])/$nLat;
对于($i=0;$i<$nLat;$i++){
$lat=$pOne['lat']+($i*$dLat);
对于($j=0;$j<$nLon;$j++){
$lon=$pOne['lon']+($j*$dLon);
printf(“”.PHP_EOL,$lat,$lon);
}
}
检查并确认