1.天地图

ps.如果不对,可以适当调整一下像素的偏移值的正负。还不对的话,就参考后边介绍谷歌的。

# 地球不同层级像素分辨率比例
def getResolution(level):return 156543.03 * math.pow(2, -level)# 经纬度转墨卡托坐标,以及墨卡托坐标转经纬度
class CoordConvert:pi = 3.14159265358979323846d2r = pi / 180r2d = 180 / pia = 6378137.0@classmethoddef LL2WMC(cls, x, y):x = x * cls.d2r * cls.ay = y * cls.d2r * cls.areturn x, y@classmethoddef WMC2LL(cls, x, y):x = x / cls.a * cls.r2dy = y / cls.a * cls.r2dreturn x, ydef get_new_lng_lat(lng_lat_one, w1_delta, h1_delta):'''获取像素偏移对应的经纬度坐标(经验证,本方法适用于天地图):param lng_lat_one:  图片中心点经纬度:param w1_delta:  图中某点w距离中心点的像素偏移:param h1_delta:  某点h距离中心点的像素偏移:return:'''# 18层级像素分辨率 0.5971642684936523   (墨卡托像素偏差:18层级静态图像素偏差 * reso)reso = getResolution(18)# 中心点经纬度 转为 墨卡托坐标wmc_x, wmc_y = CoordConvert().LL2WMC(lng_lat_one[0], lng_lat_one[1])# 墨卡托坐标偏移  -->  经纬度偏移后的值dx, dy = w1_delta, -h1_deltashift_x, shift_y = CoordConvert().WMC2LL(wmc_x + dx * reso, wmc_y + dy * reso)return shift_x, shift_y# test
# 18级静态图,比如横向往右200个偏移像素值
lng1, lat1 = get_new_lng_lat([104.06585048500006, 30.48810598500006], 200, 0)
print('11111', lng1, lat1)  # 偏移后的点的经纬度

2.谷歌地图

class googleLngLatTrans:def __init__(self, level):self.level = level  # 地图层级, 一般默认18层级静态图地图def _Math_sinh(self, x):return (math.exp(x) - math.exp(-x)) / 2def _getMapSize(self):'''某一瓦片等级下瓦片地图X轴(Y轴)上的瓦片数目:return:'''return math.pow(2, self.level)def getResolution(self, latitude):'''分辨率,表示水平方向上一个像素点代表的真实距离(m):return:'''resolution = 6378137.0 * 2 * math.pi * math.cos(latitude) / 256 / self._getMapSize()return resolutiondef _lngToTileX(self, longitude):'''经度转瓦片坐标X:return:'''x = (longitude + 180) / 360tileX = math.floor(x * self._getMapSize())tileX = min(tileX, math.pow(2, self.level) - 1)return tileXdef _latToTileY(self, latitude):'''精度转瓦片坐标Y:return:'''lat_rad = latitude * math.pi / 180y = (1 - math.log(math.tan(lat_rad) + 1 / math.cos(lat_rad)) / math.pi) / 2tileY = math.floor(y * self._getMapSize())return tileYdef lnglatToTile(self, longitude, latitude):'''从经纬度获取某一级别瓦片坐标编号:return:'''tileX = self._lngToTileX(longitude)tileY = self._latToTileY(latitude)return tileX, tileYdef _pixelXTolng(self, pixelX, tileX):'''像素转经纬度:return:'''pixelXToTileAddition = pixelX / 256.0lngitude = (tileX + pixelXToTileAddition) / self._getMapSize() * 360 - 180return lngitudedef _pixelYToLat(self, pixelY, tileY):pixelYToTileAddition = pixelY / 256.0latitude = math.atan(self._Math_sinh(math.pi * (1 - 2 * (tileY + pixelYToTileAddition) /self._getMapSize()))) * 180.0 / math.pireturn latitudedef pixelToLnglat(self, pixelX, pixelY, tileX, tileY):'''从某一瓦片的某一像素点到经纬度:param pixelX: 像素坐标X:param pixelY: 像素坐标Y:param tileX: 瓦片坐标X:param tileY: 瓦片坐表Y:return:'''''''''lng = self._pixelXTolng(pixelX, tileX)lat = self._pixelYToLat(pixelY, tileY)return lng, latdef _lngToPixelX(self, longitude):'''经纬度转像素坐标:param longitude: 经度,纬度见下一个接口:return:'''x = (longitude + 180) / 360pixelX = math.floor(x * self._getMapSize() * 256 % 256)return pixelXdef _latToPixelY(self, latitude):sinLatitude = math.sin(latitude * math.pi / 180)y = 0.5 - math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * math.pi)pixelY = math.floor(y * self._getMapSize() * 256 % 256)return pixelYdef lnglatToPixel(self, longitude, latitude):'''从经纬度获取点在某一级别瓦片中的像素坐标:param longitude: 经度:param latitude: 纬度:return:'''pixelX = self._lngToPixelX(longitude)pixelY = self._latToPixelY(latitude)return pixelX, pixelYdef get_new_point_google(gllt, lng_lat_one, w_delta, h_delta):'''根据像素点坐标,计算经纬度坐标:param gllt: 谷歌计算偏移类实例:param lng_lat_one: 图片中心经纬度点:param w1_delta: 新点的像素w偏移:param h1_delta: 新点的像素h偏移:return:'''# 1 中心经纬度点的像素坐标pixelX, pixelY = gllt.lnglatToPixel(lng_lat_one[0], lng_lat_one[1])# 2 中心经纬度点瓦片坐标编号tileX, tileY = gllt.lnglatToTile(lng_lat_one[0], lng_lat_one[1])# 3 新点的像素偏移pixelX_new = pixelX + w_deltapixelY_new = pixelY + h_delta# 4 从某一瓦片的某一像素点到经纬度lnglat_new = gllt.pixelToLnglat(pixelX_new, pixelY_new, tileX, tileY)return lnglat_new[0], lnglat_new[1]gllt = googleLngLatTrans(18)  # 谷歌经纬度坐标转换类
# 计算静态图上偏移点的经纬度 比如w距离中心点偏移200,h距离中心偏移-200
lng_1, lat_1 = get_new_point_google(gllt, [104.097612702, 30.365807667], 200, -200)
print(‘new point lng lat: ’, lng_1, lat_1)

天地图和谷歌地图静态图像素坐标和经纬度坐标互转相关推荐

  1. arcgis for Android 100.1 在线加载天地图和谷歌地图

    距离上一篇arcgis for Android 已经很久.其实年初的时候就测试了arcgis for Android 100.1版本.搜集网上各篇文章,最后自已测试代码.修改代码.这一篇来讲一下加载在 ...

  2. [小o地图-数据] - 地址文字转为经纬度坐标(地理编码)

    小O地图提供将地址转换为经纬度坐标的功能,例如:将 "北京市西城区金融街" 转换为 "116.359861, 39.917225" 经纬度坐标,并将地址分解为, ...

  3. Matlab快速将影像的二维坐标转换为经纬度坐标

    一般使用 [lat, lon] = pix2latlon(R,row,col) 逐个将影像的二维坐标转换为经纬度坐标,但这样用到双重循环,运行较慢,代码如下: [A, RA] = readgeoras ...

  4. 天地图、谷歌地图、OSM地图各层级比例尺和分辨率大放送

    编写WMTS服务核心工作是什么?瓦片图地址模板.比例尺与分辨率.WGS84与瓦片图坐标的换算算法.还在找谷歌地图的比例尺和分辨率吗?还在用在用数学公式一点一点计算坐标吗?不用啦,我在这里把我已经计算好 ...

  5. 天地图、谷歌地图、OSM地图

    编写WMTS服务核心工作是什么?瓦片图地址模板.比例尺与分辨率.WGS84与瓦片图坐标的换算算法.还在找谷歌地图的比例尺和分辨率吗?还在用在用数学公式一点一点计算坐标吗?不用啦,我在这里把我已经计算好 ...

  6. 天地图、谷歌地图服务URL

    一.谷歌地图服务 (URL中lyrs=后的值为图层类型:m-地图,s-影像,h-注记,t-地形,y-混合影像与注记) 1.谷歌地图 http://mt3.google.cn/vt/lyrs=m@762 ...

  7. php获取谷歌地图gps定位,谷歌地图 API 开发之获取当前坐标(经纬度)

    很多时候要定位到当前所在的位置,谷歌地图 API 没找到,然后网上搜的是通过原生js geolocation来实现的. 代码如下: var x=document.getElementById(&quo ...

  8. 【具体实现过程】百度地图POI区域的边界经纬度坐标数据采集

    最近有个项目需要拿到百度地图中XXX市中所有学校的边界坐标.经过一下午的努力,终于成功拿到了坐标,对坐标数据还原和验证.特此记录一下具体实现过程和爬取思路. 前言:什么是POI? Point of i ...

  9. 找谷歌地图上任意点的经纬度

    首先打开Google地图,在上面寻找一个地址,然后上下左右移动地图,让这个地址正好处于地图的正中心位置,当您想寻找坐标位置已经处于地图的中心位置的时候,拷贝并粘贴以下代码到你的浏览器地址栏: java ...

  10. 如何引入百度地图和获取精准获取经纬度坐标

    ​​​​​​引入百度地图 百度地图官网 开发手册 百度地图官网注册用户 -> 控制台 -> 认证用户 -> 创建项目 -> 获取ak密钥 -> 替换js中ak秘钥 < ...

最新文章

  1. 自己动手写一个JQuery插件(第二篇)(转)
  2. zeroc ice php,ZeroC ICE+PHP整合
  3. OpenCV 图像通道的拆分与合并
  4. maven+eclipse编译常见问题
  5. 阿里技术专家推荐的20本书,免费送!
  6. c语言程序设计i实验8答案,2020中国历史人文地理上尔雅答案
  7. java 云服务器 linux,云服务器Linux部署JavaWeb项目
  8. Deming质量管理14点
  9. mysql:Java通过驱动包(jar包)连接MySQL数据库---步骤总结及验证
  10. 标题组合-标题组合软件-免费标题生成组合软件
  11. cd linux 官网,cdlinux
  12. @永和:为自己编码 --- 开源中国众包平台上线
  13. 在网址前加神秘字母,让你打开新世界
  14. Google maps及51ditu的图片切割及存储方法
  15. python版佛祖保佑
  16. python---用单个葫芦丝音节合成完整的曲目
  17. 显示计算机名在桌面壁纸,Windows桌面壁纸自动显示计算机详细信息小工具–BgInfo...
  18. 网络舆情数据汇总统计的方法技巧
  19. 文章抓取显示盗链 php,web资源盗链与防盗链技术解析
  20. Kendo UI 刷新数据源信息

热门文章

  1. 智能RFID电动车防盗管理系统解决方案
  2. 电脑如何双开两个微信
  3. 合成孔径雷达影像(SAR图像)变化检测传统研究方法
  4. python指南针_Mircopython: 在BPIbit上制作指南针
  5. 机器人领域 期刊与会议
  6. 跨境电商机遇爆发,时下应该怎么“玩”?
  7. 【简答题】JavaWeb必问10道简答题
  8. clojure语言_Clojure编程语言
  9. Windows错误、问题汇总
  10. 如何制作一个商城小程序?