地图经纬分幅实现
- 格式:docx
- 大小:16.06 KB
- 文档页数:2
1、地图分幅及编号
1:5000和1:10000比例尺的地形图采用经纬分幅,投影采用高斯投影。
2、自动分幅原理
经纬分幅是通过鼠标单击图上某点,由该点的经纬度确定该点所在的图幅编号和图廓范围。
然后利用图廓范围构成的多边形对地图进行裁剪,实现地图分幅。
这里需要考虑三个问题,一是经纬分幅时,已知某点的地理坐标,计算该点所在图幅的图幅编号和图廓范围; 二是鼠标单击或拖拉鼠标时,获取的是鼠标点的屏幕坐标,如何将鼠标点的屏幕坐标转换为地图的投影坐标;三是地图使用的是投影坐标,而经纬分幅使用的是地理坐标,需要实现二者之间的转换。
3、经纬分幅法图幅编号和图廓范围的确定
3.1 图幅编号及图廓点坐标的计算
已知图幅内某点的经纬度,根据分幅比例尺,可以计算出该点所在图幅的编号;反之亦然。
详见《国家基本比例尺地图分幅及编号规定》。
3.2 图廓范围的确定
一般用图幅4个角点的坐标来绘制多边形构成图廓。
4、坐标转换
将鼠标点的屏幕坐标转换为地图的投影坐标,其实质是仿射变换。
5、功能设计及实现
(1)加载地图: 加载地图底图文件。
ArcEngine 提供的数据视图控件( MapControl) 和制图视图控件( PageLayoutControl) 均可实现此功能。
MapControl 控件封装了Map 对象,实现了如加载地图文件、显示地图数据、控制地图的空间参考等功能; PageLayoutControl,主要用于制图,可以方便的操作各种制图元素,封装了PageLayout 对象,实现了诸如加载地图、添加制图元素和移动旋转页面版式等功能。
(2)图层管理: 包括图层的添加及删除、显示与隐藏、属性显示等功能。
此处主要用到TocControl控件,与MapControl 或PageLayoutControl 联合使用可以实现图层管理功能。
(3)视图控制工具: 包括数据视图和制图视图的放大、缩小、漫游、全图显示等功能。
ToolbarControl控件用于实现此功能,需要与MapControl 或PageLayoutControl 控件“捆绑”在一起才能使用。
用于控制“捆绑”控件的视图状态。
(4)经纬分幅图幅号确定:鼠标单击电子底图上某点位,计算出该点所在图幅的图幅编号。
此处需要实现屏幕坐标到投影坐标的转换及将投影坐标转换为地理坐标。
可以利用ArcEngine 提供的以下接口完成坐标转换。
IDisplayTransformation:显示转换接口,该接口的ToMapPoint方法可以完成屏幕坐标系与屏幕加载的地图坐标系的转换。
IGeographicCoordinateSystem:地理坐标系统接口,此接口提供的属性和方法可以获取地理坐标系统信息,如坐标系名称、椭球体名称、中央子午线、坐标单位等信息。
IProjectedCoordinateSystem:投影坐标系系统接口,此接口可以获取投影坐标系相关
信息及投影坐标系和地理坐标系间的相互转换。
(5)经纬分幅图廓范围确定:根据功能(4)计算的图幅号或输入已知的图幅号,选择分幅比例尺,计算出图廓范围。
此处需要将图廓点的地理坐标转换为投影坐标,绘制图廓范围,主要用到Polygon对象。
Polygon对象实现了IGeometryCollection接口,提供了通过添加环来产生一个多边形对象。
(6)地图裁剪: 根据图廓线范围,对底图的要素进行裁剪。
此处主要用到Geoprocessor 类。
在Clip地理工具类初始化时输入三个参数,即需要裁剪的要素类、裁剪多边形、裁剪后输出的要素类,Geoprocessor 类运行Clip 工具类,即可完成地图裁剪这种较复杂的工作。
(7)地图整饰: 分幅后的地图中添加图名、图例、比例尺、指北针、经纬网等。
此处主要用到Element 对象,它主要实现图形元素( GraphicElement) 和框架元素
( FrameElement) 的操作。
6、自动分幅流程
加载地图底图→
鼠标在底图上点击,获取鼠标点击位置的屏幕坐标→
鼠标点击位置的屏幕坐标转换为底图投影坐标,投影坐标再转换为地理坐标→
选择分幅比例尺→
计算鼠标点击位置所在的图幅编号→
计算图廓角点地理坐标值→
图廓角点地理坐标转换成投影坐标→
确定图廓范围→
利用图廓范围和外扩距离,裁剪地图底图→
分幅地图输出。