返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php gps如何转gcj-02
  • 490
分享到

php gps如何转gcj-02

2023-07-05 07:07:01 490人浏览 薄情痞子
摘要

这篇文章主要介绍“PHP gps如何转GCj-02”,在日常操作中,相信很多人在php gps如何转gcj-02问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php gps如何转gcj-02”的疑惑有所帮助!

这篇文章主要介绍“PHP gps如何转GCj-02”,在日常操作中,相信很多人在php gps如何转gcj-02问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php gps如何转gcj-02”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

php gps转gcj-02的方法:1、创建一个php示例文件;2、通过“public static function wgs84ToGcj02 (float $lng, float $lat):array {...}”方法将WGS84转为GCJ02即可。

php 经纬度坐标转换 WGS84、火星坐标 (GCJ-02)、百度坐标 (BD-09)

项目有gps上报的功能, 由于前端插件问题导致大量gps定位数据转换百度坐标(BD-09)时产生极大偏移, 故需要后端做经纬度坐标转换, 看到一篇java的相关技术帖, 拿来做了修改

Ps: 坐标转换稍有偏差,在可接受范围内

php代码:

<?php  namespace App\Tool; class GpsUtils {    const x_pi = 3.14159265358979324 * 3000.0 / 180.0;    // π    const pi = 3.1415926535897932384626;    // 长半轴    const a = 6378245.0;    // 扁率    const ee = 0.00669342162296594323;         public static function bd09ToWgs84 (float $lng, float $lat): array {        $gcj = self::bd09ToGcj02($lng, $lat);        return self::gcj02ToWgs84($gcj[0], $gcj[1]);    }         public static function wgs84ToBd09 (float $lng, float $lat): array {        $gcj = self::wgs84ToGcj02($lng, $lat);        return self::gcj02ToBd09($gcj[0], $gcj[1]);    }         public static function gcj02ToBd09 (float $lng, float $lat): array {        $z = sqrt($lng * $lng + $lat * $lat) + 0.00002 * sin($lat * self::x_pi);        $theta = atan2($lat, $lng) + 0.000003 * cos($lng * self::x_pi);        $bd_lng = $z * cos($theta) + 0.0065;        $bd_lat = $z * sin($theta) + 0.006;        return [$bd_lng, $bd_lat];    }         public static function bd09ToGcj02 (float $bd_lon, float $bd_lat): array {        $x = $bd_lon - 0.0065;        $y = $bd_lat - 0.006;        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * self::x_pi);        $theta = atan2($y, $x) - 0.000003 * cos($x * self::x_pi);        $gg_lng = $z * cos($theta);        $gg_lat = $z * sin($theta);        return [$gg_lng, $gg_lat];    }         public static function wgs84ToGcj02 (float $lng, float $lat): array {        $d_lat = self::transfORMlat($lng - 105.0, $lat - 35.0);        $d_lng = self::transformlng($lng - 105.0, $lat - 35.0);        $rad_lat = $lat / 180.0 * self::pi;        $magic = sin($rad_lat);        $magic = 1 - self::ee * $magic * $magic;        $sqrt_magic = sqrt($magic);        $d_lat = ($d_lat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrt_magic) * self::pi);        $d_lng = ($d_lng * 180.0) / (self::a / $sqrt_magic * cos($rad_lat) * self::pi);        $mg_lat = $lat + $d_lat;        $mg_lng = $lng + $d_lng;        return [$mg_lng, $mg_lat];    }         public static function gcj02ToWgs84 (float $lng, float $lat): array {        $d_lat = self::transformlat($lng - 105.0, $lat - 35.0);        $d_lng = self::transformlng($lng - 105.0, $lat - 35.0);        $rad_lat = $lat / 180.0 * self::pi;        $magic = sin($rad_lat);        $magic = 1 - self::ee * $magic * $magic;        $sqrt_magic = sqrt($magic);        $d_lat = ($d_lat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrt_magic) * self::pi);        $d_lng = ($d_lng * 180.0) / (self::a / $sqrt_magic * cos($rad_lat) * self::pi);        $mg_lat = $lat + $d_lat;        $mg_lng = $lng + $d_lng;        return [$lng * 2 - $mg_lng, $lat * 2 - $mg_lat];    }         public static function transFormLat (float $lng, float $lat): float {        $ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng));        $ret += (20.0 * sin(6.0 * $lng * self::pi) + 20.0 * sin(2.0 * $lng * self::pi)) * 2.0 / 3.0;        $ret += (20.0 * sin($lat * self::pi) + 40.0 * sin($lat / 3.0 * self::pi)) * 2.0 / 3.0;        $ret += (160.0 * sin($lat / 12.0 * self::pi) + 320 * sin($lat * self::pi / 30.0)) * 2.0 / 3.0;        return $ret;    }         public static function transFormLng (float $lng, float $lat): float {        $ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng));        $ret += (20.0 * sin(6.0 * $lng * self::pi) + 20.0 * sin(2.0 * $lng * self::pi)) * 2.0 / 3.0;        $ret += (20.0 * sin($lng * self::pi) + 40.0 * sin($lng / 3.0 * self::pi)) * 2.0 / 3.0;        $ret += (150.0 * sin($lng / 12.0 * self::pi) + 300.0 * sin($lng / 30.0 * self::pi)) * 2.0 / 3.0;        return $ret;    }}

相关拓展:

GCJ-02是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。

它是一种对经纬度数据的加密算法,即加入随机的偏差。

国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

到此,关于“php gps如何转gcj-02”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: php gps如何转gcj-02

本文链接: https://lsjlt.com/news/350348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php gps如何转gcj-02
    这篇文章主要介绍“php gps如何转gcj-02”,在日常操作中,相信很多人在php gps如何转gcj-02问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php gps如何转gcj-02”的疑惑有所帮助!...
    99+
    2023-07-05
  • php gps怎么转gcj-02
    php gps转gcj-02的方法:1、创建一个php示例文件;2、通过“public static function wgs84ToGcj02 (float $lng, float $lat):array {...}”方法将WGS84转为...
    99+
    2023-05-14
    php
  • Java转换坐标系,GPS(WGS84)大地200(CGCS200)、百度(BD-09)、高德(GCJ-02)互转,一文搞懂坐标系、坐标转换
    1.分不清的坐标系 WG-S84: 地理坐标系统,GPS仪器记录的经纬度信息,Google Earth采用,Google Map中国范围外使用,高德地图中国范围外使用。 GCJ-02: 投影坐标系统,火星坐标系,中国国家测绘局制定的坐标系统...
    99+
    2023-12-22
    java 开源
  • GIS数据格式坐标转换(地球坐标WGS84、GCJ-02、火星坐标、百度坐标BD-09、国家大地坐标系CGCS2000)
    文章目录 前言一、坐标系1.地球坐标 (WGS84)2.国测局坐标系(GCJ-02、火星坐标系)3.百度坐标(BD-09)4.国家大地2000坐标系(CGCS2000) 二、百度坐标系(B...
    99+
    2023-09-10
    信息可视化 python
  • java如何获取gps定位信息
    在Java中获取GPS定位信息,可以使用Java提供的定位API或通过第三方库来实现。1. 使用Java定位API:Java提供了j...
    99+
    2023-09-14
    java
  • curl如何转php
    小编给大家分享一下curl如何转php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!curl转php的方法:1、通过“curl -X GET -H "C...
    99+
    2023-06-25
  • php如何转zip
    本篇内容介绍了“php如何转zip”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.压缩文件第一步,我们需要创建一个zip对象,并且向它添加...
    99+
    2023-07-05
  • php如何转word
    本文小编为大家详细介绍“php如何转word”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何转word”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,我们需要明确一点,Word 文档是一种二进制文件...
    99+
    2023-07-05
  • php doc如何转html
    这篇文章给大家分享的是有关php doc如何转html的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php doc转html的实现方法:首先打开php.ini并修改开启com模块;然后通过“function wo...
    99+
    2023-06-15
  • php image如何转base64
    本篇内容主要讲解“php image如何转base64”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php image如何转base64”吧!php image转base64的方法:1、获取一个...
    99+
    2023-06-25
  • php svg如何转jpg
    这篇文章主要介绍了php svg如何转jpg,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php svg转jpg的方法:1、创建一个PHP示例文件;2、通过“public f...
    99+
    2023-06-25
  • php blob如何转base64
    本篇内容介绍了“php blob如何转base64”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php blob转base64的方法:1、打...
    99+
    2023-06-25
  • php如何转换decimal
    这篇文章主要为大家展示了“php如何转换decimal”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何转换decimal”这篇文章吧。php转换decimal的方法:1、创建一个PHP示...
    99+
    2023-06-26
  • php如何转换int
    本篇内容介绍了“php如何转换int”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php转换int的方法:1、创建一个PHP示例文件;2、确...
    99+
    2023-07-04
  • php blob如何转file
    这篇文章主要介绍“php blob如何转file”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php blob如何转file”文章能帮助大家解决问题。php blob转file的方法:1、创建一个p...
    99+
    2023-07-05
  • php如何实现翻转
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php如何实现翻转?PHP自定义函数实现翻转中文的功能对于PHP语言来说,说到字符串翻转大家首先想到应该就是strrev()这个函数了,strrev定义和用法strre...
    99+
    2020-03-17
    php
  • php数组如何反转
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php实现数组反转php里面有个函数可以反转数组,工作中也经常用到,非常方便。今天来自己实现这样的功能。$arr = [2,5,6,1,8,16,12]; functi...
    99+
    2019-07-24
    php数组
  • php中asci如何转unicode
    小编给大家分享一下php中asci如何转unicode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php ascii转unicode的方法:首先创建一个PHP示...
    99+
    2023-06-20
  • php中html如何转text
    这篇文章主要介绍php中html如何转text,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php html转text的方法:首先创建一个PHP示例文件;然后通过“function html2text($str){....
    99+
    2023-06-15
  • php如何强制转码
    这篇文章主要介绍了php如何强制转码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php强制转码的方法:1、通过“(int)$num1;”方式转码;2、通过“intval($...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作