- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于多边形系统地籍测量软件研发设计
基于多边形系统的地籍测量软件设计
倪 尧
(南通市测绘院有限公司,江苏 南通226006)
摘要 本文介绍了面向实际生产应用的地籍测量软件设计思路,对具有地籍特色的拓扑多边形系统自动生成的算法做了详细阐述,对从事测量软件、GIS软件的开发研究有一定的参考价值。
关键词 地籍测量 软件设计 拓扑多边形系统 AutoCAD
1 引言
当前商业测绘成图软件大多已包含地籍测量功能,但由于软件设计、开发人员缺乏地籍测量生产实践经验,开发出的地籍测量软件存在难以满足地籍测量高效生产和地籍测量管理信息系统入库需要等问题。因此本文作者在总结南通市测绘院有限公司(以下称“本公司”)十多年地籍生产中积累的经验基础之上,采用Visual C++、ObjectARX开发,依托AutoCAD强大图形平台Visual C++开发的测量数据采集、通信类软件,包括常用多种型号全站仪内存数据与微机的通信、坐标计算、成果打印、数据格式向常用商业成图软件转换等功能)、“测算法”软件1(助手类测量工具软件,是本公司“测算法”软件PC E500袖珍机版面向PC平台的升级,采用Visual C++、AutoCAD ObjectARX开发工具包,包括边交会等18种常用解算坐标功能,具有与作业同步的测算图形演示帮助功能,可广泛应用于地籍测量、地形测量、工程放样等)。
2.1 功能设计
图1 软件运行界面
地籍测量成图软件(CadaSV)主要功能设计详细介绍如下:
配置:弹出配置对话框,输入区名、区号、街道名、街道号等测区基本信息,输入地籍分幅图比例尺、分幅规格等,输入作业单位、坐标系统、采用的地籍分类标准等其它信息。一个街道在作业前必须且仅需输入一次即可。
绘界址线:以街坊为作业单元,逐宗将已经测算好的界址点连接,相邻宗地界址线不必重复绘制。该功能设计为仿照AutoCAD的LINE命令,不同之处是界址线自动绘制在指定图层、并添加了扩展属性。
界址边长:点击界址边,输入野外实际丈量的界址线边长,检查界址点采集坐标是否测量正确,地籍调查规程要求:⊿S≤±10cm。
宗地信息:该功能设计成AutoCAD命令行方式,首先点击标注宗地号位置,根据提示依次输入宗地号、使用者姓名、土地分类号、是否为空宗等信息,最后根据“宗地权属调查表”捕捉宗地1号界址点的坐标,该点一般为宗地左上角的界址线端点。操作结束后,在AutoCAD特定图层中生成了一个宗地号的TEXT对象,宗地信息均存储在其扩展信息中。宗地号对后续自动形成以街坊为单位的宗地多边形系统充当了多边形的标识点角色。
修改宗地信息:以对话框方式中修改存储在宗地号扩展属性中的宗地信息。
宗地关系图:该功能是本地籍测量软件精华所在,在AutoCAD平台中开发的类似GIS软件中多边形系统自动生成的功能,在本文后续部分详细介绍算法。
宗地图:在宗地关系图形成后,即可输出宗地图。生成宗地图方式全部自动窗选自动人工设置操作贴近地籍测量生产实际,形成自动化生产流程,提高生产效率和质量。
采用Visual C++、ObjectARX、COM开发技术,依托AutoCAD(包括R2000、R2004)强大图形平台仅需APPLOAD加载一次,以后直接键入CMENU命令加载。采用实现宗地关系图、街坊关系图自动分层次拓扑方便转入地籍管理信息系统。
采用独特的图形裁剪算法,实现宗地图、分幅图的图形要素无损、无多余的自动干净裁剪输出。
实现各类文字最佳注记,文字大小、线条宽度自动按图形比例,编辑工作量大大减少。
生成宗地图、分幅图时自动添加图形分割线附近及其它必要的地籍要素注记,提高生产效率。
//界址点定义
typedef struct tagVERTEX
{
int No; //界址点号
BOOL bNode; //是否节点
int NodeNo; //节点编号
double x; //X坐标
double y; //Y坐标
}VERTEX;
//节点定义
typedef struct tagNODE
{
int PtNo; //界址点编号
int DirNo; //连接边数
int DirEdges[MAX_DIR];//连接边号数组
int DirStatus[MAX_DIR];//连接边方向标识:1出去、-1进来,0初始
double Angle[MAX_DIR];//连接边方位角
}NODE;
//界址边定义
typedef struct tagEDGE
{
int FromPt; //起点
int ToPt; //终点
double Length; //边长
}EDGE;
//界址边链定义
typedef struct tagSEC
{
int FromPt;
文档评论(0)