地理坐标系与瓦片坐标系相互转换

复制代码
//将tile(瓦片)坐标系转换为lnglat(地理)坐标系
public static Lnglat toLnglat(Tile tile) {
        double n = Math.pow(2, tile.getZoom());
        double lng = tile.getX() / n * 360.0 - 180.0;
        double lat = Math.atan(Math.sinh(Math.PI * (1 - 2 * tile.getY() / n)));
        lat = lat * 180.0 / Math.PI;
        return new Lnglat(lng, lat);
 }
  
//将lnglat地理坐标系转换为tile瓦片坐标系
public static Tile toTile(int zoom, Lnglat lnglat) {
        double n = Math.pow(2, zoom);
        double tileX = ((lnglat.getLng() + 180) / 360) * n;
        double tileY = (1 - (Math.log(Math.tan(Math.toRadians(lnglat.getLat())) + (1 / Math.cos(Math.toRadians(lnglat.getLat())))) / Math.PI)) / 2 * n;
        return new Tile(new Double(tileX).intValue(), new Double(tileY).intValue(), zoom);
}
复制代码

 

posted @   Redchar  阅读(1925)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示