GIS暑期实习报告

上传人:油条 文档编号:115677547 上传时间:2019-11-14 格式:DOC 页数:20 大小:565KB
返回 下载 相关 举报
GIS暑期实习报告_第1页
第1页 / 共20页
GIS暑期实习报告_第2页
第2页 / 共20页
GIS暑期实习报告_第3页
第3页 / 共20页
GIS暑期实习报告_第4页
第4页 / 共20页
GIS暑期实习报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《GIS暑期实习报告》由会员分享,可在线阅读,更多相关《GIS暑期实习报告(20页珍藏版)》请在金锄头文库上搜索。

1、GIS 暑期暑期实习实习 报报告告 班班 号:号: 06408128 姓姓 名:名: 任任 远远 完成日期:完成日期: 2011-07-14 提交日期:提交日期: 2011-07-14 目目录录 第一部分第一部分1 程序程序设计设计思路:思路:.1 程序程序实现过实现过程:程:.1 1.定定义图义图形形类类: :1 2.读读取取Shape文件并存文件并存储储在在图图形形类类中中2 3.文件的文件的显显示示4 4.图图形的放大、形的放大、缩缩小和漫游小和漫游.6 5.缓缓冲区的冲区的创创建建7 6.视图视图的重的重绘绘11 程序运行程序运行结结果:果:.11 1.图图形的形的显显示:示:12 2

2、.缓缓冲区分析:冲区分析:12 第二部分第二部分12 程序程序实现过实现过程:程:.12 1.1.建立建立VB工程工程12 2.通通过过代代码码加加载载数据数据13 3.图层图层操作操作13 4.显显示示图层图层要素要素类类型型14 5.地地图图属性的属性的查询查询15 6.地地图图信息可信息可视视化化16 程序运行程序运行结结果:果:.17 1.加加载图层载图层17 2.图图形的放大、形的放大、缩缩小、漫游小、漫游.17 3.显显示示图层图层要素信息要素信息18 4.地地图图属性的属性的查询查询18 5.地地图图信息可信息可视视化化18 1 第一部分第一部分 程序设计思路:程序设计思路: 首

3、先定义图形类,在图形类的定义中编写图形绘制方法和缓冲区创建方法,将缩放倍数与 平移坐标作为这些方法的传入参数以适应后面所要实现的种各功能。然后编写函数将 shape 文件中的数据读入图形类中,采用图形类基类的指针的结点以链表方式存储。接下来在视图 类中通过调用图形绘制方法来显示图形,改变缩放倍数与平移坐标等传入参数可以实现图 形的放大缩小与漫游。当需要进行缓冲区分析时,则在视图类中调用缓冲区创建方法进行缓 冲区的创建。 程序实现过程:程序实现过程: 1.定定义图义图形形类类: : 首先定义图形类基类 CShape,然后定义派生图形类 CSPoint(点类)、CPolyLine(线类)、 CPo

4、lygon(多边形类): 1)定)定义图义图形形类类基基类类 CShape class CShape: public CObject public: CShape(); /构造函数 int ShapeType; /图形几何类型 virtual void Draw(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n); /图形绘制方法 virtual void CreateBuffer(CDC* pDC,double Xmin, double Ymin, double Ymax, doubl

5、e mX, double mY, double n,double BufferRadius, COLORREF Color); /创建缓冲区方法 CShape(); /析构函数 ; 2)定)定义义派生派生图图形形类类 CSPoint class CSPoint:virtual public CShape public: CSPoint(); public: double x; /点坐标 double y; virtual void Draw(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double

6、n); /点绘制方法 virtual void CreateBuffer(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n,double BufferRadius, COLORREF Color); /点缓冲区创建方法 CSPoint(); 2 ; 3)定)定义义派生派生图图形形类类 CPolyLine class CPolyLine:virtual public CShape public: CPolyLine(); public: double Box4; /坐标范围 int Num

7、Parts; /子线段个数 int NumPoints; /坐标点数 int* Parts; /子线段起始位置数组 double* PointsX; /线上各点 X 坐标数组 double* PointsY; /线上各点 Y 坐标数组 virtual void Draw(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n); /线绘制方法 virtual void CreateBuffer(CDC* pDC,double Xmin, double Ymin, double Ymax, do

8、uble mX, double mY, double n,double BufferRadius, COLORREF Color); /线缓冲区创建方法 CPolyLine(); ; 4)定)定义义派生派生图图形形类类 CPolygon class CPolygon:virtual public CPolyLine public: CPolygon(); virtual void Draw(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n); /多边形绘制方法 virtual void

9、CreateBuffer(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n,double BufferRadius, COLORREF Color); /多边形缓冲区创建方法 CPolygon(); ; 2.读读取取 Shape 文件并存文件并存储储在在图图形形类类中中 在 CGISDoc 中声明并定义链表和文件读取函数,用来将 Shape 文件读入图形类并存储 在链表中。这里在链表中保存图形类基类的指针,用图形类基类的指针来指向派生图形类 的对象。 在 CGISView 中响应菜单项【

10、打开】,在消息响应函数中首先调用文件读取函数将 shape 文件中的数据读入图形类并存储在链表中,然后遍历链表调用图形绘制方法显示图形。 1)菜)菜单项单项【 【打开打开】 】的消息响的消息响应应函数函数 void CGISView:OnFileOpen() / TODO: Add your command handler code here 3 CGISDoc* pDoc = GetDocument(); /获取文档类指针 CFileDialog dlg(TRUE,NULL,NULL,0,“(*.shp)|*.shp“); /创建文件打开对话框 dlg.m_ofn.lpstrTitle =

11、“打开文件 “; CString path; if( dlg.DoModal() != IDOK ) return; path = dlg.GetPathName(); /获得打开文件路径 FILE* fp=fopen(path,“rb“); /打开文件 if(!fp) return; pDoc-ReadShp(fp); /调用文档类中的文件读取函数 /从文档类中获得图幅范围 double Xmax=pDoc-Xmax; double Xmin=pDoc-Xmin; double Ymax=pDoc-Ymax; double Ymin=pDoc-Ymin; CClientDC dc(this)

12、; /获得客户区 CRect rectClient; GetClientRect(rectClient); CSize sizeClient=rectClient.Size(); /获得客户区大小 double nx=(Xmax-Xmin)/(double(sizeClient.cx)-100); double ny=(Ymax-Ymin)/(double(sizeClient.cy)-100); n=(nxny)?nx:ny; /计算图幅缩放比例 mX=(Xmax-Xmin)/n-sizeClient.cx)/2; mY=(Ymax-Ymin)/n-sizeClient.cy)/2; /计算

13、图形平移距离 CTypedPtrList /图形类链表 POSITION pos = shapeList.GetHeadPosition(); while (pos != NULL) CShape* m_shape = shapeList.GetNext(pos); m_shape-Draw( /调用图形绘制方法 2) )Shape 文件文件读读取函数取函数 (1)读取完整文件: 完整文件的读取包括头文件的读取与分类型的实体信息读取: void CGISDoc:ReadShp(FILE* m_ShpFile_fp) int type=OnReadShphead(m_ShpFile_fp); /

14、读取头文件并返回图形类型值 switch(type) /根据图形类型值确定实体信息读取方法 4 case 1: OnReadPointShp(m_ShpFile_fp); /读取点实体信息 break; case 3: OnReadLineShp(m_ShpFile_fp); /读取线实体信息 break; case 5: OnReadAreaShp(m_ShpFile_fp); /读取多边形实体信息 break; default: return; (2)头文件的读取 (3)分类型的实体信息读取 由于这里是使用示例代码读取文件,因此对于(2)、(3)部分的代码这里不再列出。 3.文件的文件的显

15、显示示 文件的显示是通过在视图类的消息响应函数以及重绘函数中调用图形类中的图形绘制方 法来实现的,而图形绘制方法则封装在各图形类中。 在图形绘制中,首先根据客户区的大小进行图形的缩放与平移,然后进行图形的绘制。 在图形绘制方法中,Xmin、Ymin、Xmax、Ymax 为图幅坐标范围,mX、mY 为平移坐标大 小,n 为缩放比例。 1)点)点类类的的图图形形绘绘制方法制方法 void CSPoint:Draw(CDC* pDC,double Xmin, double Ymin, double Ymax, double mX, double mY, double n) double X, Y;

16、/进行坐标转换 X=(x-Xmin)/n-mX; Y=(Ymax+Ymin)-y-Ymin)/n-mY; pDC-Ellipse(int(X)-3, int(Y)-3, int(X)+3, int(Y)+3); 2) )线类线类的的图图形形绘绘制方法制方法 void CPolyLine:Draw(CDC* pDC, double Xmin, double Ymin, double Ymax, double mX, double mY, double n) int i, j; int pointNum; for(i=0;iSelectObject(newBrush); pDC-Ellipse(int(X-m_nBuffer),int(Y

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号