在墨卡托投影世界地图中根据经纬度转换平面坐标

2023-11-08

墨卡托投影

 

 

 

//度数转换为弧度
fun degreesToRadians(degrees: Float): Double {
    return (degrees * Math.PI) / 180
}

//x = R(longitude1-180)  y = R*log[tan(PI/4  + latitude/2)] longitude1是以弧度为单位
//将经纬度转换为2d地图以左上角为圆点的坐标,北纬为正南纬为负,东经为正,西经为负
fun latLonToOffsets(latitude: Float, longitude: Float, mapWidth: Int, mapHeight: Int): Point {
    var radius = mapWidth / (2 * Math.PI)
    var FE = 180 // false easting
    
    var lonRad = degreesToRadians(longitude + FE);
    var x = lonRad * radius
    
    var latRad = degreesToRadians(latitude)
    var verticalOffsetFromEquator =
            radius * Math.log(Math.tan(Math.PI / 4 + latRad / 2))
    var y = mapHeight / 2 - verticalOffsetFromEquator
    
    return Point(x.toInt(), y.toInt())
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在墨卡托投影世界地图中根据经纬度转换平面坐标 的相关文章

随机推荐