当你移动N和E时,坐标增加。这意味着要向东移动1NM或向北移动1NM(对应于1NM网格),只需将1/60度添加到相应的坐标。
//西南坐标对(起点)
$lat = 38.883672;
$lon = -105.698848;
$lat[1] = 38.883672 + .016667;
向东移动1海里(1格方格)
$lon[1] = -105.698848 + .016667;
因此,使用这个你可以很容易地建立一个网格200x200只需增加。
向北移动200海里(200格方格)
$lat[1] = 38.883672 + .016667*200;
$lon[1] = -105.698848 + .016667*200;
另外,如果要构建网格,最好将其存储在二维数组中,如下所示:
<?php
$lat = 38.883672;
$lon = -105.698848;
for ($col=0; $col< 200; $col++){
echo PHP_EOL."Grid values for col ".$col.PHP_EOL;
for ($row=0; $row< 200; $row++){
$newCoords = extrapolate($lat,$lon,$row,$col);
$coords[$col][$row]["lat"] = $newCoords["lat"];
$coords[$col][$row]["lon"] = $newCoords["lon"];
echo "Row ".$row." = ".$coords[$col][$row]["lat"]." , ";
echo $coords[$col][$row]["lon"].PHP_EOL;
}
}
function extrapolate($lat,$lon,$row,$col){
$newCoords["lat"] = round($lat + (1/60)*$row,6);
$newCoords["lon"] = round($lon + (1/60)*$col,6);
return ($newCoords);
}
现在,如果您喜欢使用自己的方法来计算偏移,您可以修改
extrapolate()
功能。
一旦你有了上面的数组,你就可以选择每个单元格周围的坐标,如下所示。举例来说,我们将选择最下面的SW单元。其4个坐标对为:
//西南角
$coords[0][0]["lat"];
$coords[0][0]["lon"];
//西北角
$coords[0][1]["lat"];
$coords[0][1]["lon"];
//东南角
$coords[1][0]["lat"];
$coords[1][0]["lon"];
//东北角
$coords[1][1]["lat"];
$coords[1][1]["lon"];
再举一个例子,我们将选择顶部的NE单元格。其4个坐标对为:
//西南角
$coords[198][198]["lat"];
$coords[198][198]["lon"];
//西北角
$coords[198][199]["lat"];
$coords[198][199]["lon"];
$coords[199][198]["lat"];
$coords[199][198]["lon"];
//东北角
$coords[199][199]["lat"];
$coords[199][199]["lon"];