我试图从这一点获取坐标,但它只给我 x 和 y 坐标以及缩放数据。尽管我试图弄清楚如何将 x 和 y 转换为纬度和经度。这张地图上出现的数据让我太困惑了。这张地图给了我:
http://gis.nyc.gov/doitt/nycitymap/
高度:(静态值) 宽度:(静态值) 最小X 最大X
分钟Y 最大Y
缩放
这些是这张地图为我提供的 1 个特定建筑物或地点的数据,我不知道如何将其转换为纬度和经度。有人可以帮我解决这个问题吗?
非常感谢您阅读这篇文章。
这也许有帮助
public double xCoordinateToLongitude(int x, int z) {
return x / Math.pow(2.0, z) * 360.0 - 180;
}
public double yCoordinateToLatitude(int y, int z) {
double n = Math.PI - (2.0 * Math.PI * y) / Math.pow(2.0, z);
return (Math.toDegrees(Math.atan(Math.sinh(n))) * -1) * 1000000 / 1000000;
}
(* 1000000 / 1000000 ) 用于十进制方法
加斯顿的回答几乎是正确的。 他的第二个函数返回上半球的负数。 因此,只需从最后一行中删除
* -1
:
public double xCoordinateToLongitude(int x, int z) {
return x / Math.pow(2.0, z) * 360.0 - 180;
}
public double yCoordinateToLatitude(int y, int z) {
double n = Math.PI - (2.0 * Math.PI * y) / Math.pow(2.0, z);
return Math.toDegrees(Math.atan(Math.sinh(n))) * 1000000 / 1000000;
}