教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

Mapinfo中精确输入点、线、面的方法

来源:网络收集 时间:2026-09-15
导读: Mapinfo中精确输入点、线、面的方法 Mapinfo中精确输入点、线、面的方法 2007-10-7 新闻来源:广西基础地理信息中心 浏览人数: 608发表评论查看评论 【摘 要】 本文旨在说明在Mapinfo能够实现精确输入点、线、面的方法。 【关键词】 MapBasic 对象 方法 1、

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字,全部文档内容请下载后查看。喜欢就下载吧 ……

Mapinfo中精确输入点、线、面的方法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/54140.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)