标签存档: 经纬度

求全国当前不同地区的日出与日落时间

        一、准备全国经纬度数据文件

        二、看代码

fwrite(STDOUT,"请输入城市名:");
$city = trim(fgets(STDIN)); 
format_long_la($city);

function format_long_la($city){
    $arrtemp = get_long_la($city=$city); 
    if(count($arrtemp)==1){
        $newarr = explode(" ",$arrtemp[0]);$length = count($newarr);
        $long = explode(":",$newarr[$length-1]);//经度数组
        $la   = explode(":",$newarr[$length-2]);//纬度数组
        $arr  = array_merge($la,$long);$len = count($arr);
        for($i=0;$i<$len;$i++){//删除不能转换为数字类型的值
            if(!is_numeric($arr[$i])){
                unset($arr[$i]);
            }     
        }
        print_r($arr);
        
        echo date("Y M d D")."\n北纬".$arr[3]."\n东经".$arr[1]."\n".$city."的\n日出时间是:"
            .date_sunrise(time(),SUNFUNCS_RET_STRING,$arr[3],$arr[1],90,8)."\n";
        echo "日落时间是:".date_sunset(time(),SUNFUNCS_RET_STRING,$arr[3],$arr[1],90,8)."\n";
        
        fwrite(STDOUT,"请输入城市名:");
        $city = trim(fgets(STDIN)); 
        format_long_la($city);

    }else if(empty($arrtemp)){
        fwrite(STDOUT,"\n地址不存在,请输入详细地址:");
        $city = trim(fgets(STDIN)); 
        format_long_la($city);      
    }else{
        echo print_r(get_long_la($city=$city));
        fwrite(STDOUT,"\n包含".$city."的结果太多,请输入城市名:");
        $city = trim(fgets(STDIN)); 
        format_long_la($city);      
    }   
}
function get_rise_time(){}
function get_set_time(){}

function get_long_la($city="北京"){
    $arr = array(); 
    $file = 'thelongitudeandlatitude.html';
    if(file_get_contents($file)){
        $str = file_get_contents($file);
    }else{
        echo "文件不存在!";
    }
    $str = trim($str);
    $arr = explode("【",$str);$length = count($arr);//取'【'进行切割
    $strtemp = array();$ij= ""; 
    for($i = 1;$i < $length;$i++){
        if(!empty($arr[$i])&&$arr[$i]!=""){
            $arr[$i] = explode(";",$arr[$i]);//取';'进行切割
            $len = count($arr[$i]);
        }       
        for($j = 0;$j<$len;$j++){
            if(!empty($arr[$i][$j])&&$arr[$i][$j]!=""){
                $ij = $arr[$i][$j];
            }
            //echo "arr$i-$j:".$ij."</br>";
            if(strpos($ij,$city)){
                $strtemp[] = $ij;//break 2;//跳出双重循环,执行下边的语句
            }
        }
    }   
    return $strtemp;
}

        将代码与全国经纬度数据放在同一目录下,在php CLI环境下执行该文件就可。

        三、其他:全球78707个地址经纬度数据