如何开发GIS软件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

GIS软件设计武汉大学资环学院蔡忠亮如何开发GIS软件?主讲:蔡忠亮GIS软件设计武汉大学资环学院蔡忠亮一、基础二、设计三、开发内容GIS软件设计武汉大学资环学院蔡忠亮应该选择什么语言?一、开发基础任务目的兴趣语言A=语言B不要将时间浪费在选择上!GIS软件设计武汉大学资环学院蔡忠亮应该如何学习语言?一、开发基础如同自然语言掌握语言精髓(看书)实践时间要虚心求教要参与到项目中去语言不是背出来的!面向过程面向对象GIS软件设计武汉大学资环学院蔡忠亮掌握语言环境一、开发基础环境!=语言如何建立适合的工程了解工程机制充分利用环境的工具我的程序应该放在哪里?应用程序文档类主窗口视类子窗口类数据输入输出管理等数据显示,事件控制等GIS软件设计武汉大学资环学院蔡忠亮相关知识的储备一、开发基础专业数据结构图形学计算机数据库软件工程会使用一些专业相关软件语言+环境!=软件GIS软件设计武汉大学资环学院蔡忠亮从软件工程的角度去设计二、设计制定GIS开发计划GIS需求分析GIS系统设计GIS程序编码GIS产品测试GIS运行与维护GIS定义阶段GIS开发阶段GIS维护阶段写程序!=软件开发GIS软件设计武汉大学资环学院蔡忠亮设计方法二、设计结构化设计方法原型化设计方法面向对象设计方法语义数据模型主要特征面向对象分析与设计外部模型概念模型内部模型数据的用户视图实体及其关系的内涵数据的物理模型类的定义(规格说明)类之间的应用级关系类的实现面向对象设计GIS软件设计武汉大学资环学院蔡忠亮UML是你的好帮手二、设计之所以为系统建模,是因为我们不可能全面的理解任何一个复杂的系统。随着系统复杂性的增加,先进的建模技术越来越重要。一个项目的成功有许多原因,严格的建模语言标准是其中一个重要的因素。ROSEVisioPowerDesigner……GIS软件设计武汉大学资环学院蔡忠亮设计什么?二、设计结构设计功能设计(基本+需求)界面设计GIS软件设计武汉大学资环学院蔡忠亮GIS软件如何设计?二、设计用OO思维GIS问题GIS=输入+分析+输出概念设计-》逻辑设计-》物理设计充分利用OO的特性!GIS软件设计武汉大学资环学院蔡忠亮如何逻辑设计?二、设计理解OpenGIS的规范突破“图”对GIS的思维限制理清层次结构关系几何目标、地理目标、制图目标输入分析查询输出GIS软件设计武汉大学资环学院蔡忠亮如何逻辑设计?二、设计CGeoLineCGeoPolyCGeoRegionCGeoRouteCGeoPointCGeoGroupCGeoMapCGeoObjectCGeoLayerCGeoAnnoCGeoProjectCGeomObjectThis?GIS软件设计武汉大学资环学院蔡忠亮几何目标逻辑设计二、设计GIS软件设计武汉大学资环学院蔡忠亮结合语言环境设计二、设计ViewDocMap……GIS软件设计武汉大学资环学院蔡忠亮二、设计想好了你再做!GIS软件设计武汉大学资环学院蔡忠亮三、开发怎样开始?看实例设计与开发简单的独立模快建立小型系统不要从写进入系统的密码程序开始!GIS软件设计武汉大学资环学院蔡忠亮三、开发文件操作(以VC为例)文件操作FILECFilefstreamGIS软件设计武汉大学资环学院蔡忠亮三、开发文件数据到对象建立获取图幅信息获取图层信息获取目标信息文件头信息图层1信息目标1信息目标2信息……图层2信息目标1信息目标2信息……循环循环建立图幅(NewMap)建立图层(NewLayer)建立目标(NewObject)GIS软件设计武汉大学资环学院蔡忠亮三、开发与图形显示相关的MFC类绘图类CDCCPaintDCCClientDC绘图设备类CFontCPenCBrushCRgnCPaletteCBitmap用户区非用户区GIS软件设计武汉大学资环学院蔡忠亮三、开发坐标映射类设备无关性Windows的映射方式设置方式:CDC::SetMapMode(MM_ISOTROPIC);逻辑坐标与物理坐标的转换方法CDC::LPtoDP()CDC::DPtoLP()窗口与视口窗口与视口概念操作函数CDC::SetViewportOrg()CDC::SetViewportExt()CDC::SetWindowOrg()CDC::SetWindowExt()与图形显示相关的MFC类GIS软件设计武汉大学资环学院蔡忠亮三、开发其他绘图类操作函数选用绘图设备对象SelectStockObject()SelectObject()绘图属性设置函数设置或获取背景颜色–SetBkColor()–GetBkColor()设置或获取背景模式–SetBkMode()–GetBkMode()设置或获取绘制模式–SetROP2()–GetROP2()与图形显示相关的MFC类GIS软件设计武汉大学资环学院蔡忠亮三、开发文档与视结构文档文档打开文档保存文档关闭数据的输入/输出视图图形显示图形打印鼠标菜单消息的处理构造函数OnInitialUpdate()文档打开OnPrepareDC()OnPaint()OnDraw()设置映射模式和坐标映函数CView::OnDraw(){CDocument*pDoc=GetDocument();pDoc-Draw(pDC);}CDocument::Draw(CDC*pDC){pMap-Draw(pDC);}GIS软件设计武汉大学资环学院蔡忠亮三、开发交互式图形绘制定义绘制菜单定义鼠标消息OnMouseMove()OnLButtonDown()OnLButtonUp()OnRButtonDown()OnRButtonUp()OnLButtonDblClk()OnRButtonDblClk()捕捉/释放鼠标焦点SetCapture()ReleaseCapture()拖动功能(橡皮条)绘制各种目标(图形、文字)GIS软件设计武汉大学资环学院蔡忠亮三、开发交互式图形绘制图形重绘Invalidate()InvalidateRect()视图操作ZoomIn()ZoomOut()Pan()ShowAll()FullScreen()ScaleZoom()GIS软件设计武汉大学资环学院蔡忠亮三、开发视图放大实现视图管理GIS软件设计武汉大学资环学院蔡忠亮三、开发编辑功能撤销重复GIS软件设计武汉大学资环学院蔡忠亮enum{MOUSE_DEFAULT,MOUSE_LB_DOWN,MOUSE_LB_UP,MOUSE_LRBUP_MOVE,MOUSE_LRBDOWN_MOVE,MOUSE_RB_DOWN,MOUSE_RB_DOUBLEDOWN,}m_MouseAction;三、开发编辑环境设置定义鼠标动作定义编辑操作View中增加鼠标消息View中增加菜单消息绘图参数设置enum{EDIT_DEFAULT,EDIT_FIND,EDIT_ADD,EDIT_DELETE,EDIT_MOVE,EDIT_STRETCH,EDIT_ROTATION,EDIT_NODE,EDIT_SELDEL,EDIT_AXISED,EDIT_ANALYSIS,EDIT_CLIPOBJECT,EDIT_CLIPMAP,EDIT_POLYXOR,EDIT_LINEDECOM,EDIT_POLYSNAP,EDIT_CODECOPY,EDIT_FIND_LOCATION,ZOOMIN,ZOOMOUT,PAN,REDRAW,FITSIZE,}m_CurAction;GIS软件设计武汉大学资环学院蔡忠亮voidCTeleAgentView::OnUpdateEditObjectAdd(CCmdUI*pCmdUI){CTeleAgentDoc*pDoc=GetDocument();if(pDoc-m_pMap-IsLoadMap())pCmdUI-Enable(TRUE);elsepCmdUI-Enable(FALSE);if(m_CurAction==EDIT_ADD)pCmdUI-SetCheck(1);elsepCmdUI-SetCheck(0);}voidCTeleAgentView::OnEditObjectAdd(){m_CurAction=EDIT_ADD;SetDefaultDC();//准备绘图环境m_ptArray.RemoveAll();}三、开发消息处理菜单消息处理鼠标消息处理m_MouseAction=MOUSE_LRBUP_MOVE;//厖switch(m_CurAction){caseZOOMIN:{ViewZoomIn(m_MouseAction,point);break;}caseWANDER:{WanderMoveMove(nFlags,point);break;}caseEDIT_FIND:{SearchObjMouseMsg(m_MouseAction,point,nFlags);break;}caseEDIT_NODE:{SearchNodeMouseMsg(m_MouseAction,point,nFlags);break;}caseEDIT_SELDEL:{SelectDeleteObjMouseMsg(m_MouseAction,point,nFlags);break;}caseEDIT_ADD:{AddObjectMouseMsg(m_MouseAction,point,nFlags);break;}}GIS软件设计武汉大学资环学院蔡忠亮三、开发编辑功能实现GIS软件设计武汉大学资环学院蔡忠亮三、开发开发数据库应用程序的基础关系数据库(Oracle,SQLServer)SQL数据库的访问方式ODBC(OpenDatabaseConnectivity)MFCODBCDAOOLEDBADORDBMS几何空间数据存储子系统GISIDGIS软件设计武汉大学资环学院蔡忠亮三、开发DB开发实例ODBC建立数据源打开数据库操作数据库关闭数据库voidConnectToOdbc(){SQLConfigDataSource(NULL,ODBC_ADD_DSN,MicrosoftVisualFoxProDriver,DSN=AtlasDatabase\0Description=AtlasDatabase\0//FileType=MicrosoftVisualFoxProDriver\0//\0//DataDirectory=c:\\whatlas\\dbf\0//MaxScanRows=20\0);HKEYhKey;DWORDdw=0;RegCreateKeyEx(HKEY_CURRENT_USER,Software\\ODBC\\ODBC.INI\\AtlasDatabase,0,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,(unsignedlong*)&dw);charSzval[10];lstrcpy(Szval,c:\\\0);RegSetValueEx(hKey,SourceDB,NULL,REG_SZ,(CONSTBYTE*)Szval,lstrlen(Szval));}CDadabasedb;if(db.OpenEx(_T(DSN=AtlasDatabase),CDatabase::noOdbcDialog)){//操作处理}CStringstrSQL;strSQL=_T(SELECT*FROM);strSQL+=m_sDatabaseName;m_rsRecordset=newCRecordset(&db);if(m_rsRecordset-Open(CRecordset::snapshot,strSQL)==TRUE){m_siFieldNum

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功