- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
地图绘图输出使用Map控件提供的属性和方法,学习本节前请先熟悉Map控件,重点掌握它的绘图属性和方法。
2.8.1坐标系
1 Map控件窗口坐标系
Map控件窗口使用直角坐标系,以控件窗口的左上角为原点,向右是X轴,向下是Y轴。坐标系默认的度量单位是缇(twip),缇是固定长度单位,1缇等于1/1440英寸(inch)。Map 控件的鼠标事件函数使用这一坐标系。
在VB中,Form.ScaleMode属性设置窗体的坐标度量单位,在VB 6.0版中,可以设置7种度量单位。ScaleMode默认值指定窗体的度量单位是缇。窗体上的所有控件在默认情下使用Form.ScaleMode属性指定的度量单位,因此Map控件窗口的默认度量单位是缇。本书样例程序中使用的坐标长度单位是缇,本节中特别指定的程序例外。
Map控件窗口使用Form的坐标度量单位,因此可以用Form.ScaleMode设置Map控件窗口的坐标度量单位,然而设置的度量单位对Map控件本身的函数和方法不起作用,如果不使用Windows API函数,不应更改Form.ScaeMode的默认值,以免引起错误。
Map控件窗口坐标系由开发语言的编译器定义,同一种语言编译器若来自不同的厂家,窗口坐标系可能有差异。不同的语言定义的窗口坐标系也有差异。
2 Map控件窗口数据坐标系
Map.CoordinateSystem属性指定的坐标系,坐标系的定义方法与图层数据坐标系相同。
在程序中若没有用语句给Map.CoordinateSystem赋值,则它的值是Nothing。此时Map控件窗口数据坐标系使用图层数据坐标系。
3 图层数据坐标系
文件中的地图数据使用笛卡儿直角坐标系。坐标系及其坐标单位在投影元文件中描述。地图数据是点、线、面等图形要数的(X,Y)坐标值。
(1) 矢量地图数据的坐标单位
若地图已经投影,则地图数据坐标使用长度单位,我国最常用的长度单位是米,小比例尺地图常用用千米。
若地图未经投影,则地图数据坐标单位使用十进制度,X坐标表示经度,Y坐标表示纬度。坐标(123.5,43.2)表示经度是123.5度、纬度是43.2度的一点。地图不进行投影,用地理坐标记录地图数据是地理信息系统中数据最优表示方案。我国国家基本比例尺地形图数据库采用这一方案。
(2) 栅格地图数据的坐标单位
用栅格像元在地面对应矩形的长和宽表示坐标单位,像元所在的列号为X坐标,行号为Y坐标。栅格数据坐标系与设备坐标系一致。多数情况下栅格像元是正方形,也可以是矩形。
4 设备坐标系
输出设备具有自己的坐标系,用行、列表示坐标,用像素(pixel)作为坐标度量单位。像素是输出设备在介质上能描绘的最小图形,无论是图象、图形还是文字,任何输出都转换成像素在设备上输出。在打印机或绘图仪的说明书上常使用dot,就是指像素,用每英寸点数(dot per inch也称dpi )表示分辨率。设备上的点以像素(dot)尺寸为度量单位,以点所在的列为X坐标,以点所在的行为Y坐标。如此定义的坐标系称为设备坐标系,设备坐标系的原点在左上角,向右是X轴方向,向下是Y轴方向。不难看出,如果坐标长度单位用Pixel, Map控件坐标就是设备坐标系。因此设备坐标系是控件坐标系的一种特例。
多数设备的像素是正方形,也有是长方形的。
有些设备绘图的最小像素尺寸可以通过软件或硬件设置。打印机、绘图仪、显示器是常见的输出设备,可以根据说明书设置分辨率。有些设备的分辨率是固定的,不能进行设置。
设备坐标系在对设备直接编程控制时使用,在Windows操作系统下,可以调用设备驱动程序控制设备,设备驱动程序及Windows API函数使用设备坐标系。
VB的预定义对象实例Printer和Screen提供了TwipsPerPixelX与TwipsPerPixelY属性,可用于像素与坐标单位之间的转换。
5 绘图显示过程中的坐标变换
Map1窗口显示地图的坐标变换过程如下:
If Map1.CoordinateSystem = Nothing
将图层坐标数据变换成Map1窗口坐标系数据
用Map1窗口坐标系数据绘图
Else
将图层坐标数据变换成Map1控件数据坐标系数据
将Map1控件数据坐标系数据变换成Map1窗口坐标系数据
用Map1窗口坐标系数据绘图
End If
用Map1窗口坐标系数据绘图经过两步完成:
将窗口坐标系数据变换成设备坐标系数据
用设备坐标系数据调用Windows的API函数绘图
用打印机绘图的坐标变换过程也是如此。
6 Map.Extent属性及Map事件函数中使用的坐标系
Map1.Extent属性中的坐标数据使用地图数据坐标系。
Map1.Extent属性各分量名称 注释 Map1.Extent.Width Map1窗口的宽
原创力文档


文档评论(0)