Cesium数据根据经纬度下载我们需要知道哪些参数:左上角经纬度、右下角经纬度和层级
我们假如说左上角的经度纬度分别为_dLon1、_dLat1,右下角的经度纬度分别为_dLon2、_dLat2,层级为_nLev;
Question 1:为什么是左上角和右下角呢?
因为bingmap是以左上角为行列号起点,google也是以左上角为行列号起点的,而readymap是以左下角为起点的。影像数据也是以左上角为下载标识。
Question 2:为什么还需要层级号呢?
如果没有层级号,我们不知道对方需要下载的影像分辨率,从而导致下载数据不明确,有了层级号,我们可以下载对应层级的影像数据。
根据层级号,我们可以计算出经度差和纬度差。
经度差double lon_dlt = 360.0/pow(2.0,_nLev);
纬度差 double lat_dlt = 180.0/pow(2.0,lev);
根据经纬度差,我们可以计算出左上角和右下角的行列号
row_lon1 = (lon1+180.0)/lon_dlt;
row_lon2 = (lon2+180.0)/lon_dlt;
col_lat1 = pow(2.0,lev) - (lat1+90.0)/lat_dlt; // lat1大 -> 编号小(这个地方需要注意),因为Cesium的行列号起点在左上角,经纬度原点在中间,所以在计算纬度列号时需要将最大列号减去(lat1+90.0)/lat_dlt。
col_lat2 = pow(2.0,lev) - (lat2+90.0)/lat_dlt;
得到指定区域的行列号,我们就可以很方便的去下载了。