【ACCESS精品源码栏目提醒】:网学会员ACCESS精品源码为您提供【精品】用VB绘制自己的矢量地图 - 毕业设计参考,解决您在【精品】用VB绘制自己的矢量地图 - 毕业设计学习中工作中的难题,参考学习。
本人有vbAO AE MO MAPX SO vcao 工程源代码和资料 需要这些代码的朋友请加我qq527602799代码优惠转让并随盘有接近3个多G的gis系列资料. 在信息系统开发中偶尔需要用图示的方式将信息、数据等按地理分布显示出来如果为此而专门购买一个GIS系统成本太高了。
基于上述原因我们自行开发了一个矢量地图绘制程序。
本文介绍如何利用VB6.0制作自己的矢量地图实现矢量地图的绘制、缩放、漫游等功能。
1、地图数据的采集 采集地图的矢量数据可以使用数字化仪等工具也可以用人工的方法读取。
笔者使用人工的方法读取了广西边界的轮廓图方法是对于闭合的广西边界先任意地定一个起点如果是非闭合线如河流取一个端点为起点沿广西边界按顺时针方向大约每隔0.1个经距或纬距比较粗藻但是对于示意图来说就足够了读出边界上一个点的经度和纬度值作为矢量地图的坐标直到回到起点对于非闭合线则读到另外一个端点。
同样地我们也可以读出河流、地区边界、城市点等数据。
本文示例中所绘的广西地图边界就是通过这种方法读出来的共有311个点。
2、地图矢量数据的存储 我们采用
ACCESS数据库mapdata.mdb表mdata来存储采集到的地图边界数据。
表MDATA结构如下本文示例绘制地图的外边界只用到fxfyftype字段其余字段对于一个完整的矢量地图包含外边界、河流、城市点等是很有用的 字段名称 类型 说明 fx 单精度 经度横坐标 fy 单精度 纬度纵坐标 ftype 整型 当前记录坐标类型边界或是城市值为1表示外边界2表示内分界3表示河流4表城市 fgroup 整型 分组该字段值相同表示属于同一边界或同一区域的城市 用VB绘制自己的矢量地图 fdata 字符串型 数据点的说明 3、描绘地图 我们可以把地图描绘在支持line方法的对象上比如窗体或图片框。
本例中我们将地图描绘在一个名为picdrawmap的pictruebox图片框控件上。
我们利用图片框的line方法picdrawmap.linex1y1-x2y2把地图边界的点一个一个依次连接起来而构成一条地图边界线如图1。
1在窗体中加入图片框和命令按钮 图片框名为picdrawmap命令按钮“显示地图”名为cmdshowmap命令按钮“放大”名为cmdzoomout命令按钮“缩小”名为cmdzoomin。
然后调整好它们的大小、位置。
2picdrawmap图片框中输出线条外观、样式、粗细的设置 通过设置图片框的属性drawmode线条外观、drawstyle线条样式、drawwidth线条粗细等来设置在图片框上描绘线条的外观、样式和粗细。
本文示例中我们把picdrawmap的drawmode和drawstyle属性保持缺省值drawwidth属性设置为3。
3picdrawmap图片框的坐标系统的设定 通过设定Scaleleft左边界的水平坐标、scaletop上边界的垂直坐标、scalemode坐标的度量单位、scalewidth、scaleheight等属性值我们可以确定在picdrawmap图片框绘图的坐标系统。
本文示例中我们把scaleleft、scaletop、scalemode保持缺省值即scaleleft0scaletop0scalemode1—twip。
这时在picdrawmap图片框上绘图的坐标原点00定位在该图片框的左上顶点水平坐标x坐标从左向右增大垂直坐标y坐标从上往下增大如图2。
在这个坐标系统中picdrawmap可以显示的点的范围是 x0 and x0 and y