资源描述:
《GIS暑期实习报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、GIS暑期实习报告班号:064081—28姓名:任远完成日期:2011-07-14提交日期:2011-07-14目录第一部分1程序设计思路:1程序实现过程:11.定义图形类:12.读取Shape文件并存储在图形类中23.文件的显示44.图形的放大、缩小和漫游65.缓冲区的创建76.视图的重绘11程序运行结果:111.图形的显示:122.缓冲区分析:12第二部分12程序实现过程:121.建立VB工程122.通过代码加载数据133.图层操作134.显示图层要素类型145.地图属性的查询156.地图信息可视化16程序运行结果:171.
2、加载图层172.图形的放大、缩小、漫游173.显示图层要素信息184.地图属性的查询185.地图信息可视化18第一部分程序设计思路:首先定义图形类,在图形类的定义中编写图形绘制方法和缓冲区创建方法,将缩放倍数与平移坐标作为这些方法的传入参数以适应后面所要实现的种各功能。然后编写函数将shape文件中的数据读入图形类中,采用图形类基类的指针的结点以链表方式存储。接下来在视图类中通过调用图形绘制方法来显示图形,改变缩放倍数与平移坐标等传入参数可以实现图形的放大缩小与漫游。当需要进行缓冲区分析时,则在视图类中调用缓冲区创建方法进行缓冲
3、区的创建。程序实现过程:1.定义图形类:首先定义图形类基类CShape,然后定义派生图形类CSPoint(点类)、CPolyLine(线类)、CPolygon(多边形类):1)定义图形类基类CShapeclassCShape:publicCObject{public:CShape(){};//构造函数intShapeType;//图形几何类型virtualvoidDraw(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen);//图形绘制方法vir
4、tualvoidCreateBuffer(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen,doubleBufferRadius,COLORREFColor);//创建缓冲区方法~CShape(){};//析构函数};2)定义派生图形类CSPointclassCSPoint:virtualpublicCShape{public:CSPoint(){};public:doublex;//点坐标doubley;virtualvoidDraw(CDC*
5、pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen);//点绘制方法virtualvoidCreateBuffer(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen,doubleBufferRadius,COLORREFColor);//点缓冲区创建方法~CSPoint(){};};183)定义派生图形类CPolyLineclassCPolyLine:virtualpubl
6、icCShape{public:CPolyLine(){};public:doubleBox[4];//坐标范围intNumParts;//子线段个数intNumPoints;//坐标点数int*Parts;//子线段起始位置数组double*PointsX;//线上各点X坐标数组double*PointsY;//线上各点Y坐标数组virtualvoidDraw(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen);//线绘制方法virtualvo
7、idCreateBuffer(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doublen,doubleBufferRadius,COLORREFColor);//线缓冲区创建方法~CPolyLine(){};};4)定义派生图形类CPolygonclassCPolygon:virtualpublicCPolyLine{public:CPolygon(){};virtualvoidDraw(CDC*pDC,doubleXmin,doubleYmin,doub
8、leYmax,doublemX,doublemY,doublen);//多边形绘制方法virtualvoidCreateBuffer(CDC*pDC,doubleXmin,doubleYmin,doubleYmax,doublemX,doublemY,doubl