当前位置: 首页 > news >正文

做区块链在哪个网站/百度推广做二级域名

做区块链在哪个网站,百度推广做二级域名,网站空间商,百度搜索营销一、简介 主流被使用的地理坐标系并不统一,常用的有WGS84、GCJ02(火星坐标系)、BD09(百度坐标系)以及百度地图中保存矢量信息的web墨卡托,本文利用Python编写相关类以实现4种坐标系统之间的互相转换。 二、…

一、简介

  主流被使用的地理坐标系并不统一,常用的有WGS84、GCJ02(火星坐标系)、BD09(百度坐标系)以及百度地图中保存矢量信息的web墨卡托,本文利用Python编写相关类以实现4种坐标系统之间的互相转换。

 

二、代码及说明

 

import mathclass LngLatTransfer():def __init__(self):self.x_pi = 3.14159265358979324 * 3000.0 / 180.0self.pi = math.pi  # πself.a = 6378245.0  # 长半轴self.es = 0.00669342162296594323  # 偏心率平方passdef GCJ02_to_BD09(self, gcj_lng, gcj_lat):"""实现GCJ02向BD09坐标系的转换:param lng: GCJ02坐标系下的经度:param lat: GCJ02坐标系下的纬度:return: 转换后的BD09下经纬度"""z = math.sqrt(gcj_lng * gcj_lng + gcj_lat * gcj_lat) + 0.00002 * math.sin(gcj_lat * self.x_pi)theta = math.atan2(gcj_lat, gcj_lng) + 0.000003 * math.cos(gcj_lng * self.x_pi)bd_lng = z * math.cos(theta) + 0.0065bd_lat = z * math.sin(theta) + 0.006return bd_lng, bd_latdef BD09_to_GCJ02(self, bd_lng, bd_lat):'''实现BD09坐标系向GCJ02坐标系的转换:param bd_lng: BD09坐标系下的经度:param bd_lat: BD09坐标系下的纬度:return: 转换后的GCJ02下经纬度'''x = bd_lng - 0.0065y = bd_lat - 0.006z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * self.x_pi)theta = math.atan2(y, x) - 0.000003 * math.cos(x * self.x_pi)gcj_lng = z * math.cos(theta)gcj_lat = z * math.sin(theta)return gcj_lng, gcj_latdef WGS84_to_GCJ02(self, lng, lat):'''实现WGS84坐标系向GCJ02坐标系的转换:param lng: WGS84坐标系下的经度:param lat: WGS84坐标系下的纬度:return: 转换后的GCJ02下经纬度'''dlat = self._transformlat(lng - 105.0, lat - 35.0)dlng = self._transformlng(lng - 105.0, lat - 35.0)radlat = lat / 180.0 * self.pimagic = math.sin(radlat)magic = 1 - self.es * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((self.a * (1 - self.es)) / (magic * sqrtmagic) * self.pi)dlng = (dlng * 180.0) / (self.a / sqrtmagic * math.cos(radlat) * self.pi)gcj_lng = lat + dlatgcj_lat = lng + dlngreturn gcj_lng, gcj_latdef GCJ02_to_WGS84(self, gcj_lng, gcj_lat):'''实现GCJ02坐标系向WGS84坐标系的转换:param gcj_lng: GCJ02坐标系下的经度:param gcj_lat: GCJ02坐标系下的纬度:return: 转换后的WGS84下经纬度'''dlat = self._transformlat(gcj_lng - 105.0, gcj_lat - 35.0)dlng = self._transformlng(gcj_lng - 105.0, gcj_lat - 35.0)radlat = gcj_lat / 180.0 * self.pimagic = math.sin(radlat)magic = 1 - self.es * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((self.a * (1 - self.es)) / (magic * sqrtmagic) * self.pi)dlng = (dlng * 180.0) / (self.a / sqrtmagic * math.cos(radlat) * self.pi)mglat = gcj_lat + dlatmglng = gcj_lng + dlnglng = gcj_lng * 2 - mglnglat = gcj_lat * 2 - mglatreturn lng, latdef BD09_to_WGS84(self, bd_lng, bd_lat):'''实现BD09坐标系向WGS84坐标系的转换:param bd_lng: BD09坐标系下的经度:param bd_lat: BD09坐标系下的纬度:return: 转换后的WGS84下经纬度'''lng, lat = self.BD09_to_GCJ02(bd_lng, bd_lat)return self.GCJ02_to_WGS84(lng, lat)def WGS84_to_BD09(self, lng, lat):'''实现WGS84坐标系向BD09坐标系的转换:param lng: WGS84坐标系下的经度:param lat: WGS84坐标系下的纬度:return: 转换后的BD09下经纬度'''lng, lat = self.WGS84_to_GCJ02(lng, lat)return self.GCJ02_to_BD09(lng, lat)def _transformlat(self, lng, lat):ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + \0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng))ret += (20.0 * math.sin(6.0 * lng * self.pi) + 20.0 *math.sin(2.0 * lng * self.pi)) * 2.0 / 3.0ret += (20.0 * math.sin(lat * self.pi) + 40.0 *math.sin(lat / 3.0 * self.pi)) * 2.0 / 3.0ret += (160.0 * math.sin(lat / 12.0 * self.pi) + 320 *math.sin(lat * self.pi / 30.0)) * 2.0 / 3.0return retdef _transformlng(self, lng, lat):ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + \0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng))ret += (20.0 * math.sin(6.0 * lng * self.pi) + 20.0 *math.sin(2.0 * lng * self.pi)) * 2.0 / 3.0ret += (20.0 * math.sin(lng * self.pi) + 40.0 *math.sin(lng / 3.0 * self.pi)) * 2.0 / 3.0ret += (150.0 * math.sin(lng / 12.0 * self.pi) + 300.0 *math.sin(lng / 30.0 * self.pi)) * 2.0 / 3.0return retdef WGS84_to_WebMercator(self, lng, lat):'''实现WGS84向web墨卡托的转换:param lng: WGS84经度:param lat: WGS84纬度:return: 转换后的web墨卡托坐标'''x = lng * 20037508.342789 / 180y = math.log(math.tan((90 + lat) * self.pi / 360)) / (self.pi / 180)y = y * 20037508.34789 / 180return x, ydef WebMercator_to_WGS84(self, x, y):'''实现web墨卡托向WGS84的转换:param x: web墨卡托x坐标:param y: web墨卡托y坐标:return: 转换后的WGS84经纬度'''lng = x / 20037508.34 * 180lat = y / 20037508.34 * 180lat = 180 / self.pi * (2 * math.atan(math.exp(lat * self.pi / 180)) - self.pi / 2)return lng, lat

 

  整个模块的使用方式可用下面的导图概括,其中每个函数都只需要传入经纬度坐标信息:

 

  以上就是本文的全部内容,如有笔误之处望指出!

 

转载于:https://www.cnblogs.com/feffery/p/11023673.html

http://www.lbrq.cn/news/1366543.html

相关文章:

  • 凤岗网站设计/十大短视频平台排行榜
  • 做网站怎么做多少钱/痘痘该怎么去除效果好
  • 常州免费做网站/最专业的seo公司
  • 陈塘庄做网站公司/站长之家域名
  • 用手机能创建网站吗/潍坊关键词优化平台
  • 南昌哪里可以做电商网站/线上渠道推广有哪些方式
  • 同仁seo排名优化培训/东莞网站推广及优化
  • 天猫网站左侧导航用js怎么做/怎么优化网站
  • 怎么做一考试网站/seo在线培训课程
  • 淮南市住房与城乡建设委员会网站/免费宣传网站
  • 西部数码创建php网站/爱站查询工具
  • 网站开发准备流程/seo哪家公司好
  • 网站图片验证码出不来/游戏代理平台哪个好
  • 两个相同的网站对做优化有帮助/今日军事新闻视频
  • kkday是哪里做的网站/免费网站制作软件平台
  • 网站备案真麻烦/电子商务平台有哪些
  • 网页制作模板内容互换/应用商店优化
  • dw个人简历网页制作模板/优化seo公司哪家好
  • 网络技术培训班多少钱/宁波正规优化seo公司
  • 网络营销方式有几种/富阳seo关键词优化
  • 发任务做任务得网站/西安网站建设公司
  • 南京哪家公司做企业网站 做得比较好/最近一周新闻大事摘抄2022年
  • dedecms 做微网站/软文发布推广平台
  • WordPress发的文章怎么删/seo域名综合查询
  • 哔哩哔哩网页版入口链接/优化设计电子版在哪找
  • 企业网站推广总结/建站优化公司
  • wordpress手机号/北京seo公司司
  • 做水浒传有关的网站/有必要买优化大师会员吗
  • 中国最大的网站建设公司/百度高级搜索指令
  • 做爰全过程免费网站的视频/html网页制作代码大全
  • PCL统计点云Volume
  • 文件与目录操作命令
  • go学习笔记:panic是什么含义
  • Linux U盘识别问题排查指南
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • 图像、视频、音频多模态大模型中长上下文token压缩方法综述