<?php
set_time_limit(0);
include './plugin/PHPExcel/PHPExcel.php';
include './plugin/PHPExcel/PHPExcel/IOFactory.php';
include './plugin/PHPExcel/PHPExcel/Reader/Excel5.php'; $inputFileName = "./20190514-165802.xlsx";
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
$sheet = $objPHPExcel->getSheet(0); // 读取第一個工作表
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
$highestRow = $sheet->getHighestRow(); // 取得总行数
$file = pathinfo($inputFileName);
$saveTo = $file['filename'] . "_convert." . $file['extension'];
for ($i = 2; $i <= $highestRow; $i++) {
//获取经纬度
$lng = (string)$objPHPExcel->setActiveSheetIndex()->getCell("K" . $i);
$lat = (string)$objPHPExcel->setActiveSheetIndex()->getCell("L" . $i);
if (empty($lng) || empty($lat)) {
continue;
}
//转换为百度地图经纬度
$convert = Convert_GCJ02_To_BD09(doubleval($lat), doubleval($lng));
$objPHPExcel->setActiveSheetIndex()->setCellValue("K" . $i, (string)$convert['lng'] . "\t");
$objPHPExcel->setActiveSheetIndex()->setCellValue("L" . $i, (string)$convert['lat'] . "\t");
//保存excel
/** 输出到指定目录 */
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($saveTo);//文件保存路径
}
echo "转换成功"; /**
* 中国正常GCJ02坐标---->百度地图BD09坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
*/
function Convert_GCJ02_To_BD09($lat, $lng)
{
$x_pi = 3.14159265358979324 * 3000.0 / 180.0;
$x = $lng;
$y = $lat;
$z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
$lng = $z * cos($theta) + 0.0065;
$lat = $z * sin($theta) + 0.006;
return array('lng' => $lng, 'lat' => $lat);
} /**
* 百度地图BD09坐标---->中国正常GCJ02坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
* @return array();
*/
function Convert_BD09_To_GCJ02($lat, $lng)
{
$x_pi = 3.14159265358979324 * 3000.0 / 180.0;
$x = $lng - 0.0065;
$y = $lat - 0.006;
$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
$lng = $z * cos($theta);
$lat = $z * sin($theta);
return array('lng' => $lng, 'lat' => $lat);
}

遇到的问题:转换后的经纬度小数位数不准确,添加\t解决

最新文章

  1. 剑指Offer面试题:17.树的子结构
  2. 使用MyBatis Generator自动创建代码( SSM框架)
  3. php+jquery+ajax实现用户名验证
  4. Centos7下Rinetd安装与应用
  5. Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
  6. 【转】pdf 中如何把几页缩小成一页打印
  7. java基础(十四)集合(一)
  8. 模板--&gt;扩展欧几里得
  9. 处理 InnerException 最佳方案?
  10. C#基础:命令解析
  11. MySQL5.6.39修改密码
  12. 关于UTF-8和GBK编码的转换
  13. Go语言学习之12 etcd、contex、kafka消费实例、logagent
  14. 构建简单的json树形菜单
  15. BZOJ3230 相似子串 字符串 SA ST表
  16. vb.net Function使用
  17. Java开发环境安装过程
  18. Math类操作数据
  19. DataGrid的列上添加日期控件
  20. JavaScript的NaN-唯一 一个自己不等于自己的对象!!

热门文章

  1. subclipse 和 eclipse结合遇到的问题
  2. ORA-01925:maximum of 80 enabled roles exceeded
  3. C++对象模型——函数的效能(第四章)
  4. 练习使用Trim()函数规范名字输入
  5. java dom4j 读写XML
  6. 【HNOI 2003】 激光炸弹
  7. bzoj2744 [HEOI2012]朋友圈——二分图匹配
  8. 你真的懂SDWebImage?
  9. Windows虚拟机中无法传输Arduino程序的问题
  10. 局部覆盖element-ui的默认样式