Mapinfo中精确输入点、线、面的方法
Mapinfo中精确输入点、线、面的方法
Mapinfo中精确输入点、线、面的方法
2007-10-7 新闻来源:广西基础地理信息中心 浏览人数: 608发表评论查看评论
【摘 要】 本文旨在说明在Mapinfo能够实现精确输入点、线、面的方法。
【关键词】 MapBasic 对象 方法
1、引言
目前,地理信息产品软件种类繁多,其中Mapinfo越来越受到国人的青睐,它不仅广泛应用于测绘、土地、水利、城建规划等部门,还广泛应用于商业部门。以其卓越的功能及较小的体积受广大用户使用。但美中之不足就是没有现成的精确输入图形对象的方法。有很多用户感到遗憾。我经过一段时间的摸索,找到了这种方法。现以Mapinfo编程工具MapBasic,简单制作了在Mapinfo中精确输入图形元素的方法,以供对Mapinfo感兴趣的读者。
2、建立界面准备
MapBasic语言中能够用坐标输入地理对象的种类和方法见下表一。
对象
方法
文本
Create Text, CreateText
点符号
CreatePoint, Create Point
直线
CreateLine, Create Line
圆
CreateCircle,
矩形
Create Rect
圆角矩形
Create RoundRect
弧
Create Arc
椭圆
Create Ellipse
多折线
Create Pline
面域
Create Region
表一
图一
椭圆和矩形的方法分别能生成圆和正方形,因为圆和正方形分别是椭圆和矩形的一个特例。
MapBasic编程工具,麻雀虽小却五脏具全。MapBasic能够生成很好的用户界面,一般常用的控件均有相应的语句生成,表二是能够生成的控件。
控件名称
用 途
Button/OKButton/CancelButton
按扭;确定按钮;取消按钮
CheckBox
复式选择
EditBox
编辑文本
GroupBox
分类框架
ListBox,MultiListBox
从列表框中单项选择或多项选择
PenPicker/BrushPicker/SymbolPicker/FontPicker
选择线;填充;点;文本风格
RodioGroup
单选按钮
StaticText
标签文本
PopupMenu
下拉式列表选择
表二
虽然MapBasic提供了诸多种控件生成语句,但生成的界面还是不够理想,不尽人意,创建比较麻烦、费时。要想获得更友好的界面,建议用其它可视化高级语言生成对话框界面作为.dll(动态连接库),在Mapbasic中调用。
3、建立程序过程
3.1 对话框的建立
用Dialog语句建立一个用户对话框,Contr
ol从句建立一个静态文本,一个文本编辑框,两个命令按钮。详细见程序清单及图一。
3.2 工作原理分析
当用户单击OK按钮时程序处理文本编辑框内用户所输入的数据。编辑框内的数据由于是字符串型,所以必须转换为表示坐标点的实数值。转换方法有两种:其一,用分解字符串法。因为编
Mapinfo中精确输入点、线、面的方法
辑框的内容是存入一个字符串变量中,所以分离出X,Y坐标是一个必要工序。其二,建立一个临时文件作为交换区,把EditBox中的内容写入磁盘,然后再读出。本例用此方法,此法比较简单,程序代码简小,通俗易懂。
程序流程图
3.3 数据格式和输入方法
数据格式要求,X坐标和Y坐标间用逗号分隔。直接输入法如需要换行时用Ctrl+Enter换行。如:
4568.598,5698.365
4575.657,5645.698
4598.247,5605.257
......
只要数据格式相同,数据源可以接受来自电子手簿或其他应用软件。最好用其他文字编辑器按格式输入坐标点后,拷贝到程序文本编辑框即可,避免直接输入失手。
3.4 本程序的优点
本程序代码简小,通俗易懂,不需要读者具有深厚的编程基础。程序界面友好,操作简单明了。输入坐标点数是动态确定的,地图元素生成速度快。能使Mapinfo象AutoCAD一样,实现了精确坐标输入对象的方法。比较适合于地图的局部修测与更新维护等。
3.5 本程序的缺点
本程序虽然较方便地实现了动态输入线对象。但还是存在不足。用户界面是用MapBasic语言生成,比较单调,不能跟其它可视化高级语言相比。能输入的坐标点数有限制性。以上曾提到过,用户是把坐标输入编辑框的,而编辑框数据是存入一个String型变量中,然而变量和EditBox控件容量是有限的。MapBasic中一个EditBox的最大容量为32767个字符,一个String变量最大长度等于32767个字节,假设一个坐标点最长字符串为24个字符算(XY坐标值字节数加一逗号加回车换行符),则32767 / 24约1300个坐标点。即用户一次输入点数不应大于1300个点,一般情况下已满足需要。如果你输入的坐标值位数比较短小,只要到千位数,那么你将可以输入远多于1300个坐标点。为了程序的简明,本例不加入属性的输入和线型及填充图案等代码,同时也不设置错误陷阱。
4、结束语
利用MapBasic编程工具编写精确输入面域对象也很容易,只要把本程序中Create pline into variable myobj 改为Create Region into variable myobj 重新编译即可。对于输入点、圆等其它对象都比较简单,这里不赘述,感兴趣的读者自行编写。
附:程序清单。
Include "MAPBASIC.DEF" '包含mapbasic标准定义
Declare sub main
Sub main
dim val as string
dim dir as string
dim x as float, y as float
dim myobj as object
'生成对话框界面
dialog
width 120 height 180 title "精确输入多折线"
control statictext '控件描述
position 16,6 width 90 height 8
ID 1
ti
Mapinfo中精确输入点、线、面的方法
tle "X , Y (Ctrl+Enter换行)"
control edittext
position 16,16 width 90 height 140
ID 2
value ""
into val
control okbutton
control cancelbutton
if commandinfo(CMD_INFO_DLG_OK) then '用户单击OK按钮
dir=TempFileName$( dir ) '返回一个临时文件
open file dir for output as #1 '以写入TEXT控件数据
print #1, val
close file
…… 此处隐藏:1630字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




