Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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中将MM.MMM坐标转换为十进制_Php_Coordinates_Openstreetmap - Fatal编程技术网

在PHP中将MM.MMM坐标转换为十进制

在PHP中将MM.MMM坐标转换为十进制,php,coordinates,openstreetmap,Php,Coordinates,Openstreetmap,为了使用OpenStreetMapAPI,我需要将DDM坐标转换为十进制(DD),但在internet上找不到解决方案 示例:我想将“N51°8.080,E11°33.313”转换为“51.134664 11.555220” 我只是尝试了一些类似的方法: $longitude = $degreesLong+((($minutesLong*60)+($secondsLong))/3600); $latitude = $degreesLat + ((($minutesLat * 60) + ($se

为了使用OpenStreetMapAPI,我需要将DDM坐标转换为十进制(DD),但在internet上找不到解决方案

示例:我想将“N51°8.080,E11°33.313”转换为“51.134664 11.555220”

我只是尝试了一些类似的方法:

$longitude = $degreesLong+((($minutesLong*60)+($secondsLong))/3600);
$latitude = $degreesLat + ((($minutesLat * 60) + ($secondsLat)) / 3600);
但是这个公式是不正确的

有人能帮我吗


谢谢

在网上仔细查看后,我找到了以下解决方案:

 // converts DD°MM.mmm to DD coordinates
public function ConvertToDecimal($cmbs){

    $convertedArray = [];
    
    foreach ($cmbs as $cmb) {

        // degrees
        $degreesLong = substr($cmb->longitude, 1, 1);
        $degreesLat = substr($cmb->latitude, 1, 2);

        // minutes and seconds
        $msLong = str_replace('.','',substr($cmb->longitude, 5, 6));
        $msLat = str_replace('.','',substr($cmb->latitude, 6, 7));

        // converted latitude
        $latitude = ($msLat/60);
        // if below 100 then add zero
        $latitude <100 ? $extra = '.0' :  $extra = '.';
        $latitude = str_replace('.', '',$latitude);
        $latitude = $degreesLat . $extra .$latitude;

        // converted longitude
        $longitude = ($msLong/60);
        // if below 100 then add zero
        $longitude <100 ? $extra = '.0' :  $extra = '.';
        $longitude = str_replace('.', '',$longitude);
        $longitude = $degreesLong . $extra .$longitude;

         array_push($convertedArray, [
            'name' => $cmb->name, 'lng' => $longitude, 'lat' => $latitude, 'gc_code' => $cmb->gc_code,
          'picture' => $cmb->picture]);

    }
    
    return $convertedArray;
}
//将DD°MM.mmm转换为DD坐标
公共功能转换到特定($cmbs){
$convertedArray=[];
foreach($cmbs作为$cmb){
//学位
$degreesLong=substr($cmb->经度,1,1);
$degreesLat=substr($cmb->纬度,1,2);
//分秒
$msLong=str_replace('.','',substr($cmb->经度,5,6));
$msLat=str_replace('.','',substr($cmb->纬度,6,7));
//换算纬度
$LATIONE=($msLat/60);
//如果低于100,则加零
$latitude name,'lng'=>$longitude,'lat'=>$latitude,'gc\u code'=>$cmb->gc\u code,
'图片'=>$cmb->图片];
}
返回$convertedArray;
}

如果有人知道一个更短/更好的方法,只需发布

在网上仔细查看后,我找到了以下解决方案:

 // converts DD°MM.mmm to DD coordinates
public function ConvertToDecimal($cmbs){

    $convertedArray = [];
    
    foreach ($cmbs as $cmb) {

        // degrees
        $degreesLong = substr($cmb->longitude, 1, 1);
        $degreesLat = substr($cmb->latitude, 1, 2);

        // minutes and seconds
        $msLong = str_replace('.','',substr($cmb->longitude, 5, 6));
        $msLat = str_replace('.','',substr($cmb->latitude, 6, 7));

        // converted latitude
        $latitude = ($msLat/60);
        // if below 100 then add zero
        $latitude <100 ? $extra = '.0' :  $extra = '.';
        $latitude = str_replace('.', '',$latitude);
        $latitude = $degreesLat . $extra .$latitude;

        // converted longitude
        $longitude = ($msLong/60);
        // if below 100 then add zero
        $longitude <100 ? $extra = '.0' :  $extra = '.';
        $longitude = str_replace('.', '',$longitude);
        $longitude = $degreesLong . $extra .$longitude;

         array_push($convertedArray, [
            'name' => $cmb->name, 'lng' => $longitude, 'lat' => $latitude, 'gc_code' => $cmb->gc_code,
          'picture' => $cmb->picture]);

    }
    
    return $convertedArray;
}
//将DD°MM.mmm转换为DD坐标
公共功能转换到特定($cmbs){
$convertedArray=[];
foreach($cmbs作为$cmb){
//学位
$degreesLong=substr($cmb->经度,1,1);
$degreesLat=substr($cmb->纬度,1,2);
//分秒
$msLong=str_replace('.','',substr($cmb->经度,5,6));
$msLat=str_replace('.','',substr($cmb->纬度,6,7));
//换算纬度
$LATIONE=($msLat/60);
//如果低于100,则加零
$latitude name,'lng'=>$longitude,'lat'=>$latitude,'gc\u code'=>$cmb->gc\u code,
'图片'=>$cmb->图片];
}
返回$convertedArray;
}

如果有人知道一个更短/更好的方法,只需发布

到目前为止,您尝试了哪些代码?另请参见:$longitude=$degreesLong+(($minutesLong*60)+($secondsLong))/3600$纬度=$degreesLat+($minutesLat*60)+($secondsLat))/3600;到目前为止,您尝试了哪些代码?另请参见:$longitude=$degreesLong+(($minutesLong*60)+($secondsLong))/3600$纬度=$degreesLat+($minutesLat*60)+($secondsLat))/3600;