1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > arcgis wmts 和天地图 服务叠加的偏移问题解决

arcgis wmts 和天地图 服务叠加的偏移问题解决

时间:2021-03-19 18:33:54

相关推荐

arcgis wmts 和天地图 服务叠加的偏移问题解决

首先直接说问题本质:

图层分辨率计算方式不一致,

arcgis 通常有两个分辨率矩阵:

天地图通常只有一个:

综合来看上面的两个服务arcgis 有一个96dpi和90.7dpi(25.4 / 0.28)的瓦片矩阵, 如果用90.7得当然不能和天地图96dpi得数据对得上, 有两种解决方法:

1: 不用arcgis 90.7dpi得矩阵, 用96的, 这种需要切片的时候设定

2: 使用90.7dpi的矩阵,但是显示的时候转成真实分辨率 也就是ScaleDenominstor 转分辨率, 即比例尺转分辨率

但是比例尺转分辨率跟椭球和dpi都相关

有以下转换函数:

//地球的半径double m_dblEarthRadius; //地球半径 天地图请用6378137, arcgis服务请用6371000.7900074287815054264449//PI圆周率double m_dblPI; //3.1415926....//DPI屏幕分辨率 像素/英寸 (Point/Inch)double m_dblDPI;//96 或者90//英寸/米double m_dblInchPerMeter; //0.02539999918//是否是经纬度单位bool m_bDegreeUnit; // web墨卡托用false, cscg2000用true//分辨率double m_dblResolution; // 输入参数//比例尺double m_dblScale; //输入参数//从分辨率计算出比例尺double Scale(){double dblRes = m_dblResolution;//如果是度,经纬度则换算成M单位。if(m_bDegreeUnit)dblRes = m_dblEarthRadius * m_dblResolution * m_dblPI / 180.0;//一个像素的M大小//double dblInch = m_dblInchPerMeter * (1.0 / dblDPI);double dblM = m_dblInchPerMeter / m_dblDPI;//计算比例尺分母m_dblScale = dblRes / dblM;return m_dblScale;}//从比例尺计算出分辨率double Resolution(){//一个像素的M大小//double dblInch = m_dblInchPerMeter * (1.0 / dblDPI);double dblM = m_dblInchPerMeter / m_dblDPI;//从屏幕分辨率计算实际长度。double dblRealLen = dblM * m_dblScale;//如果是度则需要转换。if(m_bDegreeUnit)dblRealLen = dblRealLen / (m_dblEarthRadius * m_dblPI / 180);m_dblResolution = dblRealLen;return m_dblResolution;}//计算arcgis分辨率m_dblEarthRadius= 6371000.7900074287815054264449;m_dblPI= 3.14159265358979323846;m_dblDPI=25.4 / 0.28;m_dblInchPerMeter= 0.02539999918m_bDegreeUnit = true; // web墨卡托用false, cscg2000用truem_dblScale = 944940.476190;m_dblResolution = Resolution();//计算天地图分辨率m_dblEarthRadius= 6378137m_dblPI= 3.14159265358979323846;m_dblDPI= 96;m_dblInchPerMeter= 0.02539999918m_bDegreeUnit = true;m_dblScale = 944940.476190;m_dblResolution = Resolution();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。