关于Google卫星影像下载的若干问题
2007-07-07 11:14
731 查看
经纬度怎么填?
纬度必须是-90°~90°之间的实数,北正南负。 实际上只有大约-85°~85°内的范围是有效的。
经度必须是-180°~180°之间的实数,东正西负。
例如
(40°0'0"N, 116°0'0"E)可以写成(纬度=40, 经度=116)
(36°15'0"N, 115°30'0"W)可以写成(纬度=36.25, 经度=-115.5)
墨卡托投影 (Mercator Projection)
Google Maps 使用的投影方法是墨卡托投影,右图就是整个地球的一个墨卡托投影。
经过墨卡托投影后的经线是均匀分布,在此主要介绍纬度的变换方法。
墨卡托投影把纬度为Φ (-90°<Φ<90°)的点投影到
y = ln(tan(45° + Φ/2))
这种投影算法使得赤道附近的纬线较密,极地附近的纬线较稀。极点被投影到无穷远,所以这种投影不适合在高纬度地区使用。Google Maps的选取的范围为 -π<y<π ,这样近似的有 -85°<Φ<85°
墨卡托投影详见
http://en.wikipedia.org/wiki/Mercator_projection
根据坐标计算url
这里引用river4season的一段话(略作了修改)。下文的 kh0.google.com 可被替换为 kh1.google.com 或 kh2.google.com 或 kh3.google.com
Google卫星地图是由256x256大小的jpeg图片拼接而成,每块图片的URL格式为“http://kh0.google.com/kh?n=404&v=7&t=trstrqqstsrqttsttq”样。主要是参数t起作用,它是“qrst”4个字符排列而成的字符串。为获取某经纬度的URL,就需要把经纬度转化为“qrst”字符串。
Google卫星地图在zoom=1时,全球就为一个256x256的图片,它的中心经纬度为(0,0),URL为“http://kh0.google.com/kh?n=404&v=7&t=t”。zoom=2时裂化为4块,每块的编号为:左上“t=tq”,右上“t=tr”,右下“t=ts”,左下“t=tt”。依此类推,每放大一倍,每一小块都裂分为四,从左上到右下顺时针按qrst编号,裂分后的编码为裂分前的编号上小块的编号。由以上分析可知,在知道了某地的经纬度之后,可以由最开始的全球地图不断细分,最后得到所需的URL。
坐标转换程序
int longitude2x(double longitude, int zoom) {
return (int)((longitude + 180) / 360 * (1 << zoom));
}
int latitude2y(double latitude, int zoom) {
return (int)((Math.log(Math.tan(Math.PI / 4 + latitude / 180 * Math.PI / 2)) / Math.PI + 1) / 2 * (1 << zoom));
}
根据转换后x,y的二进制表示就可以直接计算出url
注:程序中的zoom比上文说道的zoom少1。若要自己写程序,请注意y轴方向。
感谢“水木id: wcgbg”
纬度必须是-90°~90°之间的实数,北正南负。 实际上只有大约-85°~85°内的范围是有效的。
经度必须是-180°~180°之间的实数,东正西负。
例如
(40°0'0"N, 116°0'0"E)可以写成(纬度=40, 经度=116)
(36°15'0"N, 115°30'0"W)可以写成(纬度=36.25, 经度=-115.5)
墨卡托投影 (Mercator Projection)
Google Maps 使用的投影方法是墨卡托投影,右图就是整个地球的一个墨卡托投影。
经过墨卡托投影后的经线是均匀分布,在此主要介绍纬度的变换方法。
墨卡托投影把纬度为Φ (-90°<Φ<90°)的点投影到
y = ln(tan(45° + Φ/2))
这种投影算法使得赤道附近的纬线较密,极地附近的纬线较稀。极点被投影到无穷远,所以这种投影不适合在高纬度地区使用。Google Maps的选取的范围为 -π<y<π ,这样近似的有 -85°<Φ<85°
墨卡托投影详见
http://en.wikipedia.org/wiki/Mercator_projection
根据坐标计算url
这里引用river4season的一段话(略作了修改)。下文的 kh0.google.com 可被替换为 kh1.google.com 或 kh2.google.com 或 kh3.google.com
Google卫星地图是由256x256大小的jpeg图片拼接而成,每块图片的URL格式为“http://kh0.google.com/kh?n=404&v=7&t=trstrqqstsrqttsttq”样。主要是参数t起作用,它是“qrst”4个字符排列而成的字符串。为获取某经纬度的URL,就需要把经纬度转化为“qrst”字符串。
Google卫星地图在zoom=1时,全球就为一个256x256的图片,它的中心经纬度为(0,0),URL为“http://kh0.google.com/kh?n=404&v=7&t=t”。zoom=2时裂化为4块,每块的编号为:左上“t=tq”,右上“t=tr”,右下“t=ts”,左下“t=tt”。依此类推,每放大一倍,每一小块都裂分为四,从左上到右下顺时针按qrst编号,裂分后的编码为裂分前的编号上小块的编号。由以上分析可知,在知道了某地的经纬度之后,可以由最开始的全球地图不断细分,最后得到所需的URL。
坐标转换程序
int longitude2x(double longitude, int zoom) {
return (int)((longitude + 180) / 360 * (1 << zoom));
}
int latitude2y(double latitude, int zoom) {
return (int)((Math.log(Math.tan(Math.PI / 4 + latitude / 180 * Math.PI / 2)) / Math.PI + 1) / 2 * (1 << zoom));
}
根据转换后x,y的二进制表示就可以直接计算出url
注:程序中的zoom比上文说道的zoom少1。若要自己写程序,请注意y轴方向。
感谢“水木id: wcgbg”
相关文章推荐
- GeoServer+OpenLayers发布下载的Google卫星影像
- 关于python抓取google搜索结果的若干问题
- 关于python抓取google搜索结果的若干问题
- 几款Google、微软等卫星影像、电子地图下载软件
- 探讨一下关于在线播放阻止用户下载你的MP3的问题
- 关于某些网站不能使用Adobe PDF Reader下载PDF文件的问题解决方案
- 关于SDK更新遇到Failed to fetch URL http://dl-ssl.google.com/android refused问题的解决办法
- 关于可变参数函数的若干问题(转载)
- 最高人民法院关于审理劳动争议案件适用法律若干问题的解释
- 关于android分支无法下载的问题,revision froyo in manifests not found
- 关于自定义Calendar的若干问题
- 关于UBUNTU网络若干问题的解决办法
- Android关于后台下载前台通知更新进度条的问题
- 关于HTTP下载时页面重定向后用户名密码丢失的问题
- Android开发日志3——解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
- 1104 关于微信业务的开展遇到的若干问题
- 老五同志关于抽烟问题的若干解释
- 关于 WebClient类和HttpRequest的方式下载数据的问题
- 中共中央关于全面深化改革若干重大问题的决定 (zz)
- 关于线下《三国杀》流局问题的若干思考