MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx

上传人:b****2 文档编号:13577954 上传时间:2022-10-11 格式:DOCX 页数:7 大小:18.22KB
下载 相关 举报
MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx_第1页
第1页 / 共7页
MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx_第2页
第2页 / 共7页
MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx_第3页
第3页 / 共7页
MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx_第4页
第4页 / 共7页
MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx

《MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。

MapBasic在城市部件数据生产中的实践与应用Word格式文档下载.docx

Include“icons.def”

include“mapbasic.def”

DeclareSubMain

DeclareSubdraw_via_button

SubMain

CreateButtonPad“工具条”As

ToolButton

Callingdraw_via_button

ID149

Icon149File“ICO32.DLL”‘创建图标文件

HelpMsg“\n公交站亭”

ID151

Icon151File“ICO32.DLL”

HelpMsg“\n交通标志牌”

.…..

Width2

show

EndSub

Subdraw_via_button

dimsym_makepIfMapId&

gt;

0then

MapNm=LayerInfo(FtWin,MapId,LAYER_INFO_NAME)

Else

Note“请将图层设为可编辑!

ExitSub

EndIf

Tlid=CommandInfo(CMD_INFO_TOOLBTN)

DoCaseTlid

Case149

FtId=74

Case151

FtId=80

.......

EndCase

x1=CommandInfo(CMD_INFO_X)

y1=CommandInfo(CMD_INFO_Y)

sym_maker=MakeFontSymbol(FtId,BLACK,12,”bujian07”,0,0)

CreatePointintoVariableObjPt(x1,y1)Symbolsym_maker

Endsub

1.2合并图层

在城市部件生产过程中,数据需要分给不同的作业员进行处理,处理完的数据又需要重新合并。

如果碰到数据量比较大,需要合并的图层多时,很费时间。

这时,将图层合并进行批处理,会极大的提高工作效率。

下面的代码,说明了多层图层的合并,怎样进行批处理。

CreateMenu“批处理表”As

“合并图层”Callingbatch_packtable

AlterMenuBarAdd“批处理表”

Subbatch_packtable

&

amp;

acute;

循环控制变量

DimiAsinteger

DimTabNumAsinteger&

一次打开的表的数量

DimTabNameAsstring&

存取表名的变量

DimNameList

(1)Asstring

DimListNumAsinteger&

初始表名数组大小

RunMenuCommandM_File_Open

TabNum=NumTables()

ListNum=UBound(NameList)&

得到数组的大小

ReDimNameList(TabNum)

循环访问得到表的名字

Fori=1toTabNum&

TabName=TableInfo(i,TAB_INFO_NAME)

NameList(i)=TabName

Next

TabName=NameList(i)

OpenTable”D:

\合并图层.tab”as合并图层

InsertInto合并图层

select*fromTabName

ClosetableTabName

committable合并图层

CloseTable合并图层

1.3新增部件添加流水号

城市部件数据是一种不断变化的数据,每年都有新增、删除和变更。

对新增的城市部件数据需要按照地理数据建设标准加上流水号,城市部件流水号是唯一的,新增的城市部件流水号必须在往年的基础上增加,使用mapbasic的功能,找到往年流水号中的最大值,将新增部件的流水号在此基础上增加,就不会出现号码重复的情况,从而保证的标识码的唯一性。

下面用程序说明怎样给新增部件添加流水号。

include“MENU.def”

DeclareSubseparate_table

CreateMenu“部件批处理”As

“加标识码”Callingseparate_table

AlterMenuBarAdd“部件批处理”

Subseparate_table

Dimi,j,kAsinteger&

DimNameList

(1)Asstring&

记录新增的部件代码

DimCol_NumAsInteger&

查询结果记录数

DimTableNameAsString&

创建表名

DimFilespecnameasString&

部件存储路径

DimMaxIDasString&

记录某类部件最大流水号

OpenTable“D:

\部件批处理\合并.tab”As合并

\部件批处理\新增.tab”As新增

Select*From新增Where标识码=““

GroupBy部件代码IntoSelection

Col_Num=SelectionInfo(SEL_INFO_NROWS)

IfCol_Num=0Then&

如果没有找到标识码为空的记录

Note“标识pSelect*From合并Where部件代码=NameList(i)

OrderBy标识码Into标识码排序表

IfTableInfo(标识码排序表,TAB_INFO_NROWS)=0then

Print“部件代码为”+NameList(i)+”没有最大标识码!

FetchLastFrom标识码排序表

MaxID=标识码排序表.标识码&

获得该类中最大的标识码号

Select*From新增Where部件代码=NameList(i)And标识码=““IntoSelection&

找到该类中没有标识码的全部记录

k=SelectionInfo(SEL_INFO_NROWS)

Print“当前部件图层”+NameList(i)+”最大标识码为”+MaxID+”共有”+k+”为空的记录!

DimLeftStrAsString&

标识码由两部分组成,部件代码+流水号

DimRightStrAsString

DimIDStrAsString

LeftStr=Left$(MaxID,10)&

获得该类部件的部件代码

Forj=1Tok

RightStr=“000000”+Str$(Val(Right$(MaxID,6))+j)

IDStr=LeftStr+right$(Rightstr,6)

UpdateSelectionSet标识码=IDStr

WhereRowID=j

CommitTable新增

1.4修改表结构

在北京市东城区网格化城市管理信息系统建设中,城市部件数据结构经常变换,特别是原崇文区和原东城区合并成一个行政区划后,由于之前两个区城市部件数据的数据结构不同,需要按照新的标准统一在一起。

城市部件有96种,每种部件存放在一个表中,共96张表,每张表中有14个属性字段需要修改。

一个一个手动修改,需要大量时间并极容易出错,使用mapbasic中的修改字段的功能,对96张表进行批处理,就可以提高工作效率和准确度。

以原东城区为例,说明mapbasic怎样批量修改数据结构。

Include“mapbasic.def”

DeclareSubmain

DimMapCountasInteger

Dimi,j,n,kasInteger

DimMapNmasString

DimcolNumasAlias

i=FrontWindow()

IfWindowInfo(FrontWindow(),Win_INFO_TYPE)&

lt;

WIN_MAPPERThen

Note“请打开地图窗口!

MapCount=MapperInfo(i,MAPPER_INFO_LAYERS)

IfMapCount&

g

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1