Google地图 经度 纬度 到 像素索引值 的转换公式
来源:互联网 发布:jquery.cookie.js 使用 编辑:程序博客网 时间:2024/04/30 05:00
简单说明一下:
google的地图采用将地球圆表面投影成平面的方式进行贴图
假设zoom=15;
横坐标从左至右像素为0-256*2的15次幂,也就是每增加一级,地图大小横纵坐标加倍,256为一个标准图片的大小
显示-180度到+180的范围,经度越大x越大
纵坐标从上到下像素为0-256*2的15次幂,显示+85到-85度的范围,纬度越小y越大
我们先看一下经度的转换
经度的转换,我就不多说了,均匀分布,大家简单的看一下下面的公式就明白了
经度到像素X值
public static double lngToPixel(double lng, int zoom) {
return (lng + 180) * (256L << zoom) / 360;
}
像素X到经度
public static double pixelToLng(double pixelX, int zoom) {
return pixelX * 360 / (256L << zoom) - 180;
}
纬度到像素Y
public static double latToPixel(double lat, int zoom) {
double siny = Math.sin(lat * Math.PI / 180);
double y = Math.log((1 + siny) / (1 - siny));
return (128 << zoom) * (1 - y / (2 * Math.PI));
}
像素Y到纬度
public static double pixelToLat(double pixelY, int zoom) {
double y = 2 * Math.PI * (1 - pixelY / (128 << zoom));
double z = Math.pow(Math.E, y);
double siny = (z - 1) / (z + 1);
return Math.asin(siny) * 180 / Math.PI;
}
维度的这个转换,单纯去理解不是很好理解,我也没有太深入的了解,从公式来看,采用了一种非线性变化,也就是靠近赤道的地方单位像素表现的纬度间距 大,越靠近两极越小,可能是因为 经度在靠近两极的方向均匀变化,导致纬度也要进行拉伸,否则 ?靠近两极的地方,地理形状就该发生变化了,总之上面的转换公式大家还是可以研究一下的,google维度的表示范围是-85到+85,这个可以求出来!
上面得到的像素XY是像素的坐标,并非是google地图取地图的那个XY那个XY是把像素所标除以256得到的商,也就是每张图片的大小
---------------chen------------------
matlab里
经纬度到网格,6是级别
x=112.5
(x+180)/360*(256*(2^6))/256
y=31.95216224
y=36.59788913
(0.5-log( (1+sin(y*pi/180))/(1-sin(y*pi/180)) )/(4*pi) ) *(256*(2^6))/256
google的地图采用将地球圆表面投影成平面的方式进行贴图
假设zoom=15;
横坐标从左至右像素为0-256*2的15次幂,也就是每增加一级,地图大小横纵坐标加倍,256为一个标准图片的大小
显示-180度到+180的范围,经度越大x越大
纵坐标从上到下像素为0-256*2的15次幂,显示+85到-85度的范围,纬度越小y越大
我们先看一下经度的转换
经度的转换,我就不多说了,均匀分布,大家简单的看一下下面的公式就明白了
经度到像素X值
public static double lngToPixel(double lng, int zoom) {
return (lng + 180) * (256L << zoom) / 360;
}
像素X到经度
public static double pixelToLng(double pixelX, int zoom) {
return pixelX * 360 / (256L << zoom) - 180;
}
纬度到像素Y
public static double latToPixel(double lat, int zoom) {
double siny = Math.sin(lat * Math.PI / 180);
double y = Math.log((1 + siny) / (1 - siny));
return (128 << zoom) * (1 - y / (2 * Math.PI));
}
像素Y到纬度
public static double pixelToLat(double pixelY, int zoom) {
double y = 2 * Math.PI * (1 - pixelY / (128 << zoom));
double z = Math.pow(Math.E, y);
double siny = (z - 1) / (z + 1);
return Math.asin(siny) * 180 / Math.PI;
}
维度的这个转换,单纯去理解不是很好理解,我也没有太深入的了解,从公式来看,采用了一种非线性变化,也就是靠近赤道的地方单位像素表现的纬度间距 大,越靠近两极越小,可能是因为 经度在靠近两极的方向均匀变化,导致纬度也要进行拉伸,否则 ?靠近两极的地方,地理形状就该发生变化了,总之上面的转换公式大家还是可以研究一下的,google维度的表示范围是-85到+85,这个可以求出来!
上面得到的像素XY是像素的坐标,并非是google地图取地图的那个XY那个XY是把像素所标除以256得到的商,也就是每张图片的大小
---------------chen------------------
matlab里
经纬度到网格,6是级别
x=112.5
(x+180)/360*(256*(2^6))/256
y=31.95216224
y=36.59788913
(0.5-log( (1+sin(y*pi/180))/(1-sin(y*pi/180)) )/(4*pi) ) *(256*(2^6))/256
- Google地图 经度 纬度 到 像素索引值 的转换公式
- Google地图 经度 纬度 到 像素索引值 的转换公式
- google地图获取经度、纬度
- google地图获取经度、纬度
- 在Google地图上找到经度和纬度的方法
- 经度,纬度转换
- 经度,纬度转换
- 如何在Google地图上找到经度和纬度
- 如何在Google地图上找到经度和纬度
- 如何在Google地图上找到经度和纬度
- 如何在Google地图上找到经度和纬度
- 如何在Google地图上找到经度和纬度
- 鼠标点击获取百度地图的经度与纬度(可直接嵌入到项目中)
- 地图开发常识--经度纬度
- 腾讯地图获取地址的经度和纬度
- GPS 经度纬度 坐标转换的以色列横轴墨卡托投影(ITM)
- Android百度地图——在地图上标注已知GPS纬度经度值的一个或一组覆盖物
- Android百度地图 - 在地图上标注已知GPS纬度经度值的一个或一组覆盖物
- Access数据库的简单特性(入门了解)
- OCP-1Z0-053-V12.02-406题
- linux java 开发环境 搭建记录 (ubuntu)
- 用 Hadoop 进行分布式数据处理,第 3 部分: 应用程序开发
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
- Google地图 经度 纬度 到 像素索引值 的转换公式
- 实现DIV层内的文字垂直居中
- java 工厂模式
- 两个小时学习STL
- cookie和session的区别
- skyeye1.3.5在ubuntu12.04上的安装
- SEH in ASM 研究
- 一行字符串,寻找其中出现相同且长度最长的子串
- 应用程序基础之03Manifest文件(一)