地理信息系统设计
院 (系): 创 新 实 验 学 院 级 别: 院 系 级 指导老师: 金 博 成 员:何蔚华、景立超、张强
项目介绍
一、背景
地理信息系统处理、管理的对象是多种地理空间实体数据及其关系,包括空间定位数据、图形数据、遥感数据、属性数据等,用于分析和处理在一定地理区域内分布的各种现象和过程,解决复杂的规划、决策和管理问题。
CGIS是世界的第一个“系统”, 并且在“绘图”应用上进行了改进,它具有覆盖,测量,资料数字化/扫描的功能,支持一个跨越大陆的国家坐标系统,将线编码为具有真实的嵌入拓扑结构的“弧”,并且将属性和位置的信息分别存储在单独的文件中。它的开发者,地理学家Roger Tomlinson,被称为“GIS之父”。
我国地理信息系统的起步稍晚,但发展势头相当迅猛,大致可分为以下三个阶段:起步阶段、试验阶段和GIS全面发展阶段。
80年代末到90年代以来,我国的GIS随着社会主义市场经济的发展走上了全面发展阶段。国家测绘局正在全国范围内建立数字化测绘信息产业。1:100万地图数据库已公开发售,1:25万地图数据库也已完成建库,并开始了全国1:10万地图数据库生产与建库工作,各省测绘局正在抓紧建立省级1:1万基础地理信息系统。数字摄影测量和遥感应用从典型试验逐步走向运行系统,这样就可保证向GIS源源不断地提供地形和专题信息。进入90年代以来,沿海、沿江经济开发区的发展,土地的有偿使用和外资的引进,急需GIS为之服务,有力地促进了城市地理信息系统的发展。用于城市规划、土地管理、交通、电力及各种基础设施管理的城市信息系统在我国许多城市相继建立。
在基础研究和软件开发方面,科技部在“九五”科技攻关计划中,将“遥感、地理信息系统和全球定位系统的综合应用”列入国家“九五”重中之重科技攻关项目,在该项目中投入相当大的研究经费支持武汉测绘科技大学、北京大学、中国地质大学、中国林业科学研究院和中国科学院地理研究所等单位开发我国自主版权的地理信息系统基础软件。经过几年的努力,中国GIS基础软件与国外的差距迅速缩小,涌现出若干能参与市场竞争的地理信息系统软件,如GeoStar, MapGIS, OityStar, ViewGIS等。在遥感方面,在该项目的支持下,已建立全国基于IK4遥感影像土地分类结果的土地动态监测信息系统。国家这一重大项目的实施,有力地促进了中国遥感和地理信息系统的发展。
地理信息系统在最近发展得非常快,这是因为我们所处的环境都具有时空属性,我们的生产生活自然就离不开地理信息了。就大连市而言,GIS也是广泛应用于资源管理、资源配置、城市规划和管理、生态环境管理与模拟等自然领域。因此我们说做到大连市区域环境管理系统(以下简称系统),应大连市环境管理的需求开发了相应的功能,以满足环境管理所需的地理属性数据,从而为环境管理决策提供帮助和依据。
二、系统概述
系统是将地理图片加载到软件中,在相应的图片上添加所需的信息,从而提高人机交互的方便性。这里将客户信息定位在对应的区、街道,并在指定的点上显示地图与相应的信息。
系统的主要功能包括:1、实现地理区域信息的管理;2、实现地图信息的录入;3、实现地图信息的查询等功能。
项目完成时,我们将完成一个较完善的地理信息管理系统。用户通过对地图的管理,可以更清楚地知道目标所在地地理区域及详细信息,从而可以更加方便地进行地理环境的管理与分析或研究。
根据系统开发流程和功能需求分析的结果,把大连市环境相关地理信息系统设置为7个子系统,代码实现的过程中,将对各子系统的功能进行一一实现,具体包括: ( 1)地图控制子系统:具有地图索引、图层控制等; ( 2)地图显示子系统:具有地图放大、地图刷新、地图缩小、地图漫游、地图显示和地图缩略图等功能; (3)地图输出子系统:专题图的导出和打印功能(待实现); (4)地理要素查询子系统:具有地理要素索引、地物信息显示、点选择等功能; ( 5)地理名称查询子系统:具有关键词等查询功能; (6)综合查询子系统。
项目记录
一、09年-10年上半学年进展情况
我们说做到项目开始执行时间是零九年十月,上学期致力于熟悉Delphi7.0的使用,及Object Pascal语言的学习。
其中Delphi7.0的熟悉过程中,我们学会了如何定制工具栏、如何定制组件面板、如何定制代码编辑器、保存自定义开发环境桌面、安装ActiveX组件、安装不同类型的第三方组件等。这些当然是最基础的部分,大概花了一两周的时间。
关于Delphi7.0最关键的还是掌握其菜单项,各个组件都位于组件栏内,熟悉了菜单项能在很大程度上提高工作效率。
上学期的重点应该是在Object Pascal语言的学习上,包括对基础语言的学习、类,函数,重载的学习和参数与指针等的学习。
关于控件的操作以以下代码为例:
procedure TForm1.RadioButton1Click(Sender: TObject); begin
ClassKind:=Tedit; end;
procedure TForm1.RadioButton2Click(Sender: TObject); begin
ClassKind:=Tbutton; end;
procedure TForm1.FormCreate(Sender: TObject); begin
ClassKind:=TButton; end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var
NewCp:TControl; CPName:string; begin
NewCp:=ClassKind.Create(Self); NewCp.Visible:=False; NewCp.Parent:=(Self); NewCp.Left:=X; NewCp.Top:=Y; Inc(CPNum);
CPName:=ClassKind.ClassName+IntToStr(CPNum); Delete(CPName,1,1); NewCp.Name:=CPName; NewCp.Visible:=true; end;
此程序重点在与实现了动态生成组件,关键语句为NewCp:=ClassKind.Creat e(Self);在每次按下鼠标都有一个相应的组件生成。
关于简单程序算法实现有如下代码说明:
procedure TForm1.Button1Click(Sender: TObject); var
upper_limit,lower_limit,i,j,temp:integer; Card:array[0..51] of Integer; str:String; begin
randomize;
Edit1.Text:='';Edit2.Text:='';Edit3.Text:='';Edit4.Text:=''; for i:=0 to 51 do begin
lower_limit:=0; temp:=1;
while temp<>0 do
begin
temp:=0;
for j:=0 to i-1 do begin
if (Card[j]>lower_limit)And(Card[j]<=upper_limit) then begin
temp:=temp+1; end; end;
lower_limit:=upper_limit;
upper_limit:=upper_limit+temp; end; //检查完毕 Card[i]:=upper_limit; //完成一次发牌 end;
//对发牌结果进行检查 j:=0; repeat temp:=0;
for i:=0 to 50-j do begin
if Card[i]>Card[i+1] then begin
temp:=Card[i];
Card[i]:=Card[i+1]; Card[i+1]:=temp; temp:=1; end;
end; j:=j+1;
until (j>50) or (temp=0);
//检查代码段,正常运行需注释此段
for i:=1 to 52 do //将牌显示到Edit begin
case (Card[i-1] Mod 4) of 1:str:='黑'; 2:str:='红'; 3:str:='梅'; else str:='方'; end;
case ((Card[i-1]+3) Div 4) of 1:str:=str+'A'; 11:str:=str+'J'; 12:str:=str+'Q'; 13:str:=str+'K';
else str:=str+inttostr((Card[i-1]+3) Div 4); end;
case (i Mod 4) of
1: Edit1.Text:=Edit1.Text+str+' '; 2: Edit2.Text:=Edit2.Text+str+' '; 3: Edit3.Text:=Edit3.Text+str+' '; else Edit4.Text:=Edit4.Text+str+' ' end; end; end;
此程序简单的实现了随机发牌的功能,将52张牌随机的发给四个人,同时代码段内有检查程序错误的代码,正常运行需注释后编译。
二、本学期项目进展
本学期主要对系统进行完善。目前完成的部分主要包括: 编辑地图部分:
1、画直线、矩形、圆和文字命令可重复使用;
2、修复了按下文字输入按钮后再次按下画直线按钮的漏洞; 3、修改了输入文字命令时,字体颜色和大小的默认值;
4、当执行文字输入命令后,增加了memo组件自动获得焦点;
5、修复了退出编辑地图后,再次进入时仍然获得上次未完成功能。 专题图部分:修复了锅炉图层的漏洞。 以及部分代码的修改。
此部分代码过多,因此就不提供了。
因篇幅问题不能全部显示,请点此查看更多更全内容