时间:2023-12-08
天博开发一个软件用到的技术很多,不同的系统软件对软件工程技术的要求也不一样,在开发系统的时候,要考虑到当时人们的需求是什么,所以说系统开发是很复杂的。系统软件的各个模块的耦合度要很高才行,一个模块发生变化时,会带来很多的后果。系统开发的过程应该是一个规范、科学和系统的漫长过程。
以前在进行软件开发之前,要进行一个很重要的工作,那就是系统建模,然后再根据先前的系统需求做出分析,还要对当时的社会需求进行彻底的调查。经过调查发现,市面上的软件有很多已经不能满足应用程序的更新换代,这主要是由于系统开发的时间太长以及程序的复杂度太高导致的。所以,软件工程技术在系统软件开发时要注意下面这两点。
要开发一个好的软件,就要注重科学性,在开发软件前要进行市场调查,做好需求分析。还要拿市场上已经有的同类或相关软件进行比较和借鉴,这样我们就可以选择相适用的软件工程技术来使用。软件工程技术在软件系统开发中发挥的作用越大,系统开发就会越轻松,软件开发的工期就会越短。
在开发软件的时候,一定要注重软件的实用性,根据系统开发的实际情况,选择更好的软件工程技术。软件工程技术是系统开发过程中的一个很重要的辅助,这个辅助也决定了系统是否可以顺利地运行。
系统软件的开发既需要注意它的科学性,也需要注意它的实用性,但是现代的系统软件中只注意这些是不够的,我们还要掌握一些方法。第一是优化构建软件的开发模型,软件开发模型的构建也是十分重要的,在这个模型下,可以使系统软件的开发更加的高效,思路更加的清晰,如果出现问题,可以进行有效的解决,不耽误系统的下一步开发。第二个方法的是,要积极开发软件程序应用,不但要知道软件的性能,还要知道软件的发展潜质,另外也要了解用户想要什么,方便后续的优化甚至减少优化。第三个方法是对软件工程的项目进行管理,这需要一些步骤:(1)项目准备,为项目做出一个合理的可行性分析。(2)启动项目,知道项目的可行性,准备工作已经做好了,就可以对软件工程的计划方案进行制定。(3)对项目组织进行计划。统计一下各个方面需要的人力,还有技术要求。(4)对项目进行跟踪评估,这个很重要。我们通过一个案例来更好地理解软件工程技术在系统软件开发中如何更好地应用。比如说,要建一个图书管理系统,可以使用Java语言,结合JSP技术,再结合前端的HTML5对系统表面进行美工,采用MVC框架,使用企业数据库。JSP的稳定性很强,很多大型的游戏设计师都是用这个技术,Java语言是一种脚本语言,可以适用于很多版本的电脑,HTML5可以实现三段适应,手机、电脑和平板可以同时登陆,而且页面都是一样的,没有变化。这些软件工程技术都是很实用的,价格也很实惠,开发起来也比较方便,由于该技术的耦合度要很高,维护起来也很方便。前期开发的思路也是很清晰的,采用的技术也很明白,下一步就是软件工程导论和UML建模,还有需求分析交给技术人员,让他们进行研究开发。如此便节省了不少的工期,减少了后期维护的次数和费用。一个好的软件工程技术所需要的系统维护的实际经费,要比前期系统的预算费用要少很多。
随着人们对软件需求的不断增加,软件的功能、可操作性、智能化程度也迅速发展,从而使软件变得更加复杂、更加庞大在,开发的难度也越来越大,开发的周期越来越长、参与开发人数越来越多。为了解决这种软件危机,减少重复劳动,降低被开发软件出错的概率,软件利用技术也就应运而生。
软件复用的思想最早是在1968年NATO的软件过程会议上提出的,在过去的几十年里,软件复用得到了越来越广泛的应用。软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似元素的过程。软件复用不同于软件移植和共享。软件移植是指对软件进行修改和扩充,使之在保留原有功能、适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在新系统中使用已有的软件成分。共享是在一个系统中多次使用一个相同的软件成分。
是指已经通过编译和测试的机器语言,不做任何修改,直接用于复用,是理想的利用方式。常见的形式有动态链接库和静态库的复用,这种复用也称为黑盒复用。
基于源代码的复用也称为白盒复用,它可根据用户需求对已有产品进行适应性修改。源代码的复用将受到开发语言和开发工具特性的一些限制。
系统设计复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计组件,并把这些组件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计组件。
系统设计复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计组件,并把这些组件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计组件。
一般情况下抽象级别越高,它的复用受实现环境的影响较少,从而使可复用组件被复用的机会更多,且所需的修改越少。
(1)通用组件:在程序设计语言之上提供通用程序设计支持。一般用于界面标准件、数据库的操作等功能。这些组件一般跨领域使用,一般最多占典型应用系统规模的20%左右。
(2)与具体领域有关的组件:完成软件产品的应用领域专用的功能。如应用领域是数据处理,这类组件可能包括排序软件包、文件管理软件包和杂凑函数等。这类组件一般在应用领域专用的,最多占典型应用系统规模的65%。
(3)与具体应用系统有关的代码:此类代码是应用系统专用的代码。一般来说,应用系统专用代码不能用于其他应用系统,一般最多占典型应用系统规模的15%。
软件利用存在多方面的困难,无论是技术问题还是非技术问题,都影响着软件复用的广泛运用。下表给出了一些研究人员对软件复用障碍的归纳。
组件技术是90年代初出现的一种新技术,它是在结构化设计和面向对象技术的基础上发展起来的,是面向对象技术之后的软件开发的标准方法体系,是面向对象的开发技术的延伸。
组件的定义多种多样,例如:组件是经过封装、有定义完备接口的可软件包[CBSE 1999]。软件组件是具有接口义务的合成单元,并且明确规定了所有背景的依赖关系。软件组件是由第三方进行合成的主体,可以独立部署[Szyperski和Pfister 1997]。组件是软件实现的一种内聚包[DSouza和Wills 1998]。从上面的定义可以看出,组件的定义中未给出任何的具体实现技术。组件的性质:组件具有独立性,能够独立的开发分发。具有接口性,所提供的服务被 明确,完备的定义,同时也明确、完备的定义了期望从外部得到服务的接口。具有合成性,能够与其它组件合成,可定制部分属性而不用修改组件本身。下图给出了一种明确定义和其它组件及组件所执行交互的组件高层模型。
在组件规范化的过程串,许多公司做了很多的努力并取得了一定的成功。下面介绍一下常见的组件模型。
(1)CORBA:CORBA是由OMG(对象管理集团)开发的工业版本,是用来解决以下的问题:系统独立于操作系统,系统基于网络且功能分布开各机器之间,组件开发独立于语言。
(2)COM(组件对象模型):COM是由微软公司提出并实践的组件模型。COM是用于“便利系统能够通过独立开发的二进制组件,动态、有效地合成系统的组件重用”[BOX 1998]。COM组件是二进制层次上的组件复用,是基于接口的编程,模块间的耦合度低,易于部署和软件的升级。
(3)EJB组件:EJB是用于开发安全、可扩展、事务型和多用户组件的一种分布式组件模型。EJB可以部署在分布式多层体系结构环境中的服务器端的软件组件,它允许把应用程序逻辑与系统级服务分开,使系统开发人员集中精力编写具体的业务处理问题,而不必关心系统的编程。每个EJB可由一个或多个Java对象组成,每个EJB是按照相同的规范开发的,Bean之间可以相互调用,实现任务的分解和进行业务处理,具有非常高的扩展性。
.NET就是借鉴Java,采用XML,并远远超出Java的新的体系。.NET允许添加类似关键字的描述性声明来批注编程元素的元数据,可以实现被封装的对象类、类树、功能模块、软件框架、软件构架(或体系结构)、文档、分析件、设计模式等。
CBSD开发过程是不遵循传统的分析需求并找出组件的软件开发过程,这种过程一般会造成组件失败。因为这种过程没有考虑现有的可复用的组件,并且试图满足分析师新确定的组件要求。如果存在成熟的组件市场,同开发过程应该考虑采办组件,而不是开发组件。
CBSD完成各种活动的方式严重依赖于组件的性质和类型。当使用不同的组件构造系统时,可能系统的各种特性完全不同。
(1)查找:此过程是从文档定义完备的组件库中发掘出具有可能要使用的组件集合;
(3)适配:定制所选的特定的组件,以满足用户使用组件新条件的需求的过程;
(4)创建:如果组件经过适配也不能满足需求时,产品集成人员必须针对这种特定的应用系统开发和创建新组件;
(6)替代:替代过程用于产品的维护。系统随着时间的进化和用户对新功能的需求,需要改正组件中的错误,并增加新的功能。老版本的组件被撤出,换上经过修改的版本;
(7)更新组件库:当新的组件被创建或老组件被修改,为了保持组件库的正确和大适用范围,可以将新组件或更新的组件加入组件库中。在修改组件库时,要编写或修改相应的文档及不同组件版本的管理。
[摘要]本文从计算机软件开发技术的意义出发,解析了当下计算机软件开发的主要状况,并给出了计算机软件开发未来发展方向和途径。
计算机软件可以分为两种软件,一种是用来管理计算机整体的系统软件,包括如维护系统的软件,检测和修复系统的软件等等;另外一种是要应用在某一具体的功能上所需要的软件,称为应用软件,包括如办公软件,看视频的软件等等。系统软件和应用软件相辅相成,都是为了方便客户的使用,其中应用软件更是主要针对客户的需求来进行设计,非常具有人性化。总之,计算机软件在开发其技术时,都必须考虑到应用的客户群,以客户的需求为方向,以实现客户的要求为目的,来发展计算机软件新技术,使用户在使用计算机时能方便舒适。我国在施行改革开放的政策之后,科学技术高速发展,引入的人才与高科技都与日俱增,因而在这样的环境下,计算机软件的发展也越发顺利,目前已经具有一定的基础。我国计算机软件的技术可以说主要经历了三个重要的阶段,首先是简单的程序的设计,再而到了软件的开发使用,使程序的运用更为简便,最后则是更为复杂的软件的开发使用,集中了诸多科学人才的智慧,为广大用户提供了便利性和可能性,现在软件已经成为了日常生活中人们进行工作或者玩乐都必不可少的一部分。
随着我国经济的飞速发展,科学技术的进一步发达,计算机软件开发技术也越来越优异,目前我国计算机软件开发技术已经具备一定的开发能力和技术基础。并且,现在也是我国计算机软件开发技术发展的机遇时期,因为在国际随时可能发生金融危机的影响下,整个国际的经济局势不明,动荡的经济促进了新技术的发展。而且我国正在尝试转变产业的结构形式,加上我国经济的增长速率呈下降的趋势,整个形势都推进了我国计算机软件行业的发展,吸引了大批优秀的高技术软件开发人才,甚至是许多国外的高技术的软件开发公司,这些国外的优秀的公司将目标瞄准国内,扩大他们的公司发展以应对国际金融风暴,在此情际下,中国的软件行业如雨后春笋,实力一步步上升。因此,就目前现状来说,我国的计算机软件行业正处于蓬勃发展的阶段,软件新技术的开发对高技术人才的需要也越来越多。
计算机软件技术的开发具有重要的意义,因为我国属于发展中国家,对于计算机行业的发展以及信息化的发展都处于极力推动的时期,而软件技术的开发对于信息化以及计算机行业至关重要。在整个计算机网络的概念中,软件开发是其最为关键的部分,甚至软件开发的水平能代表计算机开发的水平。软件的开发能促进网络的应用,而网络的存在是软件使用的基础,因此两者相辅相成,相互推进。并且两者的研发过程还能相互交流刺激,在刺激的过程中甚至能获得更为优异的新技术,为计算机网络行业以及软件行业技术的发展都起了有益的作用。不管是计算机网络还是软件开发,都有着相同的目的,都是为了满足客户的要求而进行的设计和研发。总之计算机软件技术的开发不仅可以促进计算机行业的发展,还能为计算机用户提供便利,方便其进行工作以及日常生活娱乐。
以何种方式对计算机软件进行开发,对于我国计算机行业发展来说,具有重要的指导和决策作用。依目前的形式来看,我国计算机软件开发主要有以下三种技术。第一种叫做结构化系统开发,它的意思是将整个软件研发阶段分成几个阶段逐步研发,这样减少了一次性研发的难度,只要在第一步做好基础,便能依次完成下一步的研发,做到各个突破最终完成目标。但是也存在不好的地方,即花费时间较长,做不到高效率;第二种叫做原型化开发方式,它的意思是从全局出发,依照用户的意见进行开发,再进行细节方面的调整。这种方式相比较来说更适用于软件的开发,节约时间;第三种叫做自动研发技术,意思是在设计软件系统时就有设计自动编码的模式,在研发时利用这种专门设计的软件依照该设计的特点,将需要的目的输入到该软件中,则最后次软件会自动按照要求进行编码,得到想要的功能。
在当前形势下,计算机网络越来越膨大,计算机的人才越来越多越来越高水平,软件开发也越来越显得重要,因此也有越来越多的人加入到软件开发的团体中来,整个软件行业越来越具有竞争力。因此,不能只依靠原有的技术来进行软件开发,而应该跟随时代的脚步,引进新技术关注新动静,把握好方向,来保证软件开发能在充满竞争的时代中继续发展。我国计算机软件开发主要可以朝以下三个方向发展。第一个是指网络化的方向,进入网络化的时代,通过网络来开发市场引进人才提高技术;第二个方向指智能化的方向天博,既然我国科学技术越来越进步,人们对于计算机的要求也越来越细致以及智能化,如构建具有人工智能的软件一直是许多软件开发者的梦想;第三个方向是服务大众的方向,软件的开发归根结底是为了方便大众,为大众服务,因此用户的满意度决定了软件开发的市场,软件开发应该要以用户需求为基础。
综上所述,随着互联网+的快速发展,计算机软件作为重要的支撑后盾需要明确计算机软件开发技术的发展方向,以逐步逐阶段的形式稳步向前发展。
[1]刘芳.新时期计算机软件开发技术的应用及发展趋向[J].中国新通信,2015,13:89.
在现代的计算机技术发展中,对于计算机软件的应用作用和计算机本身相关软件来说,其中就分为了维护、操作、管理以及监控自检程序等。为了帮助用户能够更快的完成对计算机软件的开发应用,并通过管理的相关软件与应用的学习基础,促进对用户在服务理念上的有效使用,结合相应的计算机正常工作使用作用,即可更好的保障计算机在应用过程中的重要性作用分析。下面对现在计算机中的开发应用技术的应用现状进行简要分析。
从上世纪计算机的出现就极大的提高了人类的工作办公能力。但是,由于计算机的体积过大,导致无法更好的满足用户的基础需要。而随着现代经济技术的快速发展和科学技术的逐渐成熟,极大的提升了计算机的运行能力,在这个过程中,其基本的使用作用,就依赖于原有的计算机软件系统。为了更好的开发运行计算机的正常使用,并保持计算机软件技术在开发过程中的扩大使用,其工程的快速发展,就需要结合相应的应用基础来促进对计算机开发软件上的主要表现应用,并以此促进对基础产业在迅速崛起过程中的应用作用促进。
随着改革开放以来我国引进国际先进科技之后,国内相关产业的大力发展在很大程度上都进一步的促进了我国在软件开发服务行业上的迅速崛起。而在相关软件产业的迅速发展过程中,软件人才的需求也在不断的增大,我国在相关人才的培养上,在近年来也有了新的改变,其实力正在不断壮大。但是在我国现阶段的计算机软件开发中,就面临着几个严重问题。
(1)信用值计算问题,首先在软件开发过程中,软件的可信度是保证社会稳定性的关键所在,其计算方法的差异性,就会导致其社会影响力的区别问题出现。
(2)数据安全性问题,计算机软件的运行,主要在于数据包的运行作用,其结算和判断等都属于完整且机密性的,其数据的传输需要保持完整,但是在进行数据传输过程中,若出现信息损失以及丢失现象,那么,其机密性就会受到威胁。
(3)在进行软件开发过程中,版权问题是影响整体信息传播的关键所在,创造具有个性化创新性的软件虽然具有挑战性但是同时也会面临大量的侵权问题,可能会严重影响到自身的创建发展。
现代计算机软件开发技术的发展,计算机软件开发应用,需要结合现在的计算机网络系统来实现对系统平台用户的控制,并通过独立的运行结构点,促进对现代计算机平台在信息应用数据化处理理念上的独立使用,并在不同的用户和结合的独立性来说,软件平台的作用应用理念,对基础信息设备的处理作用来说,可结合计算机的软件应用技术,保证用户操作的简化使用。在数据处理系统中,如计算机软件的开发利用数据来说,不同的计算机单独安装作用,对应用计算机的操作和应用结构来说,就需要电脑自身对不同系统的兼容性,而这样就需要计算机自身安装相应的兼容软件。对于基础信息的操作和和用户增加量问题等,结合安装计算装置的实际使用操作,和软件开发应用技术在应用服务理念上的调节促进,就可以结合用户自身的使用便利性,实现对服务体系上的应用效果分析。
现代计算机开发的智能化、服务化、网络化以及开放化的逐步成熟,在很大程度上保证了开发技术的智能化指导发展方向,其作用机制,对整体的感官思维逻辑以及完美的模拟作用,可结合实际的学习和推理逻辑判断能力等,促进对计算C软件开发服务理念上的应用促进,并通过逻辑判断和推理的应用关系,促进对现代服务化系统指定策略上的应用创建,以此完善对用户在所需需求的开发应用。在进行计算机网路计算服务的问题上,可结合网络计算机的发展和应用产物,促进对商业化系统应用理念上的作用结构建设,并促进对银行系统在证实应用网络化体系下的软件进行交流合作,促进对现代软件的开发应用建设,并促进对现代软件在自动化、机械化、电气化等方面的应用建设。
相对于过去的社会发展结构来说,不同的应用状态作用,对基础的软件开发利用基础等,都需要结合实际的开发技术,和应用的服务用户基础,促进对用户在便利作用结构下的实施应用,并以现代化的社会建设需求,完成计算机应用软件的现代化设计。
计算机是实现现代信息社会不可缺少的一部分,而计算机软件的快速发展,在很大程度上促进了计算机软件开发技术在应用过程中的系统重要性发展。其中的计算机软件开发技术,对不同应用作用的服务用户,都需要进行调查分析,并探究更加统一的智能化、服务化、开放化以及融合化的软件开发设计。随着现代社会的发展在进行现代化信息社会的发展建设中,为满足基本的发展需求,软件开发任务任重而道远,是促进现代社会的重要组成部分。
[1]吕斌.当代计算机软件开发技术的应用及发展[J].通讯世界,2016(03):241-241.
[2]史昂.关于计算机应用软件开发技术[J].企业文化(下旬刊),2016(04):247-247.
[3]王妍,黄山.计算机软件开发技术的现状及应用探析[J].建筑工程技术与设计,2014(31):1220-1220.
[4]裴衣非.计算机软件开发技术的现状及应用研究[J].中小企业管理与科技,2015(31):248-249.
[5]东晓岩.新时期计算机软件开发技术的应用及发展趋势研究[J].信息与电脑,2016(14):125-126.
关键词:矢量数据;栅格数据;分类显示;叠加匹配;GIS组件;MapObjects
MapObjects是ESRI开发的提供制图与空间分析功能的组件,它的核心是一个被称为Map控件的ActiveX控件,包括35个可编程的ActiveX 对象,这些对象为应用开发人员提供了有力的制图与GIS功能支持[1]。MapObjects可以应用于Visual C++、Visual Basic、Delphi、Microsoft Access等程序设计环境。在应用MapObjects进行专题图件编辑软件开发的过程中,主要有三项关键的技术:栅格数据和矢量数据的匹配、矢量数据物理-逻辑结构的转换、信息的分类显示。
栅格数据和适量数据的匹配技术主要是为了实现在底图上叠加失量图层,以实现对底图的装饰、信息说明等。底图可以是栅格数据,也可以是矢量数据。图像数据物理-逻辑结构的转换是指矢量数据读取/存储过程中,数据的物理结构与逻辑结构之间的相互转换,进而以编程实现适量数据读取/存储的技术。信息的分类显示是指同一图像层中相同类型的数据以不同的形式进行显示。该技术主要是为了实现数据可视化的过程中,同一文件中的同类型数据以不同形式显示,便于曾强图像说明信息的效果。
矢量数据是在直角坐标系中,用x、y坐标表示地图图形或地理实体的位置和形状的数据。对于矢量结构:点实体是在在二维空间中,用一对坐标x,y来表示;线实体可以认为是由连续的直线,…,xn,yn)表示;面实体通常通过记录面状地物的边界来表现栅格数据是按网格单元的行与列排列、具有不同灰度或颜色的阵列数据。每一个单元(象素)的位置由它的行列号定义,所表示的实置隐含在栅格行列位置中,数据组织中的每个数据表示地物或现象的非几何属性或指向其属性的指针。对于栅格结构:点实体由一个栅格像元来表示;线实体由一定方向上连接成串的相邻栅格像元表示;面实体(区域)由具有相同属性的相邻栅格像元的块集合来表示。
矢量数据与栅格数据的匹配是为了将两种数据在坐标上重合,以达到栅格图像与矢量图像的叠加显示。影像匹配首先要给出影像数据和矢量数据之间的配准信息,通常配准信息记录在一个专门的文件中,并且作为附加文件和影像数据保存在同一路径下。在加载图像数据时,同时读取配准信息文件,将栅格数据的每个像元行列与二维空间中的 、 坐标对应。MapObjects采用world文件来配准影像数据,其配准公式为:
X表示像元在地图上的X方向坐标值[2];Y表示像元在地图上的Y方向坐标值[2];x表示像元在影像文件中的列数[2];y表示像元在影像文件中的行数[2];A表示影像数据与矢量数据在X方向的比例关系[2];E表示影像数据与矢量数据在Y方向的比例关系,但它为负值,这是由于空间坐标系与影像数据的存储坐标系在Y方向上相反,要匹配,必须将E设为负值[2];C、F表示影像数据的左上角点的像元对应的空间坐标的X、Y坐标[2];B、D表示影像数据的旋转参数,但是在MapObjects中不支持影像数据的旋转,因此这两个参数的值是被忽略的,缺省记录为0[2]。
word文件是一个文本文件,记录的内容包括上述A、B、C、D、E、F六个参数,它们是按顺序连续记录的。这六个参数的获取可以通过两种不同的方法:1)应用专业软件ENVI、PCI等。2)通过在矢量图和位图文件中选适当控制点,然后用最小二乘法拟合求得六个参数。
不同格式影像数据对应的world文件的扩展名不同,表1列出了各种格式影像数据对应的world文件的扩展名。
本节以插图形式展示栅格数据与适量数据的匹配效果。其中栅格数据为中国遥感影像图,矢量数据为全国水系矢量图和全国主干公路矢量图。
Shape文件格式是ESRI 公司开发的一种GIS数据格式[3],Shapefile是最常用的空间数据格式之一[4],在应用MapObjects组件进行二次开发时较为常用。一个Shape文件由一组文件构成,其中必要的基本文件包括坐标文件(.shp)、索引文件(.shx)和属性文件(.dbf)[5]。其中坐标文件记录矢量数据的空间坐标信息;索引文件主要包含坐标文件的索引信息,文件中每个记录包含对应的坐标文件,记录距离坐标文件的头文件的偏移量;属性文件用于记录矢量数据的属性信息,如注记、颜色等。
Shapefile以点、线、面作为基本的要素,来对地理实体进行建模[6]。从矢量文件实体信息的角度讲,矢量文件分为三种类型:点状矢量文件、线状矢量文件、面状矢量文件。在编辑矢量文件前首先要创建空的矢量文件,此时就要确定矢量文件的文件类型,矢量文件的类型只能为点、线、面三者之一,一个矢量文件不能同时存储两种或两种以上类型的矢量。对于不同类型的矢量文件而言,坐标文件(.shp)的内容是不同的,而属性文件(.dbf)和索引文件(.shx)基本相同。下面简要叙述坐标文件存储的内容。
点状矢量文件存储点状目标(Point)。点状目标由一对X、Y坐标构成,坐标值为双精度(double)数。通俗地说,一个矢量文件为点状矢量文件时,其存储的坐标信息为X方向的坐标和Y方向的坐标两个值。
线状矢量文件存储线状目标(PolyLine)。线状目标是由一系列点坐标串构成的,一个线状目标可能包括多个子线段,子线段之间可以是相离的,也可以是相交的。PolyLine的数据结构如下:
Box记录了当前线状目标的坐标范围,它是一个double型的数据,按照Xmin、Ymin、Xmax、Ymax的顺序记录了坐标范围;
Parts记录了每个子线段的第一个坐标点在坐标数组Points中的位置,以便读取数据;
面状矢量文件存储面状目标(Polygon)。面状目标由多个子环构成,环是由4个或更多无相交的点按顺序连接而成的闭合曲线]。面状矢量文件中的多边形需要满足三个条件:1)构成多边形的每个子环都必须是闭合的,即每个子环的第一个顶点和最后一个顶点是同一个点;2)每个子环在Points数组中的排列顺序并不重要,但每个子环的顶点必须按照一定的顺序连续排列;3)存储的多边形不能有自相交现象,对于一个不含岛的多边形或者是含岛的多边形的外环,它们的顶点排列顺序必须是顺时针方向;而对于内环,它们必须是逆时针方向。
从应用的角度讲,在对Shape文件操作时,更像是对一个文件操作而非对三个文件进行操作,但是实际的编辑过程却涉及到三个文件内容的变动。下面将从应用的角度解释Shape文件的结构。
从应用的角度,将Shape文件的三个文件视为一个文件进行操作,也就是逻辑上的Shape文件。该文件所记录的每一个内容块都具有相同的数据结构,这个数据结构涉及到两个方面的内容:1)矢量数据的坐标信息,该内容记录的是矢量数据在地图上的坐标位置;2)矢量数据的属性信息,该内容记录矢量数据的一些属性,如颜色、大小、注记、名称、级别等。逻辑上的Shape文件结构分层为:1)数据块包含坐标信息和属性信息(Recordset);2)属性信息由属性表(TableDesc)组成;3)属性表由属性字段(Field)组成。如图5(图中Tableset的字段数设置为2)。
读取Shapefiles数据的过程是将Shapefiles的数据由物理结构向逻辑结构转换的过程。由于程序对于文件数据操作时倾向于对一个整体文件进行操作,而非对三个文件进行操作,因此读取Shapefiles数据时,是将物理上的三个文件作为逻辑上的一个文件进行读取的。逻辑上的一个文件结构在2.2中已详细叙述。在逻辑结构中各个字段的字节数因实际情况的不同而不同。如果是自己创建的Shapefiles,那么其中各个字段的字节数是已知的,如果是采用他人的Shapefiles,想要知道文件的字段信息,就要阅读矢量文件说明。读取Shapefiles数据就是将三个文件中的相关数据信息读取为图5的一个整体结构,然后对相关数据进行操作。
存储矢量数据为Shapefiles文件时,是将矢量数据由逻辑结构向Shapefiles的物理结构转换的过程,具体操作是将如图5的一个结构的整体矢量数据写为相应的三个文件。在进行矢量数据的存储时,首先要创建空的Shapefiles空文件,同时指定属性字段,包括字段长度、字段名称等。
在读取/存储矢量数据时,首先要明确矢量文件的类型,也就是说矢量文件存储的是哪类实体信息。在利用MapObjects进行二次开发时,对Shapefiles文件的操作是有限制的,一个Shapefiles只能存储一类实体信息。因此,在读取/存储矢量数据时,需要明确矢量文件存储的实体信息类型,然后根据不同的实体信息类型,应用不同的对象进行数据读取/存储操作。
专题图件编辑的过程中,信息量较大,包括不同矿物、岩石,甚至断层、行政信息等。信息分类显示技术针对解决专题图件编辑的过程中多信息不同显示同文件存储的问题。
信息分类技术是图像分级技术的扩展。图像分级显示是将不同级别的地物用不同的符号显示。但是,我们常常希望将地物用不同的符号显示而并非因为它们是不同级别,因此,将此技术作以扩展,就是将同一图像文件中的图像信息按照自身需求显示,就形成了本节所述的信息分类显示技术。在专题图件编辑软件开发的过程中,一般是对矢量图像文件进行分类显示。分类显示的目标不仅仅局限于矢量数据坐标形状特征,也可以是矢量数据的其他信息。
Shapefile文件通过标注属性字段来实现文件显示[8],因此,信息分类显示的依据是矢量数据的相关属性字段。本文在2.3中针对于矢量数据的读取/存储操作给出了矢量文件――Shapefiles的逻辑结构。在此,将从信息分类显示的角度解释矢量数据的逻辑结构。在对读入的矢量数据进行操作时,有两点内容需要关注:1) 矢量坐标信息;2) 矢量属性信息。这两类信息对应于矢量文件中的坐标文件(.shp)和属性文件(.dbf)。数据读入程序后,按照处理需要,将矢量数据的结构解释如图6。
图6中将矢量数据的逻辑结构简化为两个字段,实际上,其中的名称字段只是属性字段中的一个,表示的是该矢量数据的名称。一个矢量数据只有一个坐标字段,但是会有多个属性字段。这些属性字段记录的是一个矢量数据的相关属性信息,如名称、显示要素。
第一步,设定分类显示的对象字段。也就是要将矢量数据的哪项信息分类显示。该字段一般为矢量坐标字段或者矢量注记字段。
第二步,设定分类显示的依据字段。分类依据字段是分类判断的标准,存储分类显示对象字段的类别。实际是依据矢量数据的哪个字段的信息将显示信息分类。在分类显示时,自己设定一个标准,当分类显示的依据字段内容符合这个标准时,该字段所对应的矢量数据就会以不同的符号显示。
第三步,设定分类显示的符号。符号内容包括:大小、颜色,如果显示信息为文字,则符号内容还可包括字体。符号的内容一般作为矢量数据的属性信息存在于矢量文件中。
由于分类显示技术中,分类判断是必需的步骤,因此,在信息分类显示技术中,还会应用到“假分类”技术。分类显示所需要的“类别”在需要分类显示的矢量文件中并不是很明显,也就是说矢量数据之间没有很特殊的区别,此时可以“假分类”。意思是将依据字段设定为名称字段,然后判断标准为名称字段的内容等于矢量数据的名称(这是个永远成立的条件,对于应用者并没有真正分类,但是对于程序而言已经执行了分类的步骤)。“假分类”并非一定要用名称字段,只要是利用判断结果永真的字段进行分类均可称为“假分类”。经实验,虽然判断条件永真,但如果没有这样的判断,分类显示就会失败。
图7为一个矢量文件分类显示的实例。该矢量文件为点状矢量文件,分类显示的对象字段为名称字段,依据字段也为名称字段。应用“假分类”对该矢量文件进行分类显示。将三个点的名称以不同符号(本例选取颜色和大小)进行显示。如果不进行分类显示,只是将三个点对应的名称进行显示,则三个点的名称以同一符号(颜色、大小、字体等)显示,如图8。
组件式GIS开发是一种灵活的、GIS功能较为完整的开发方法。在专题图件编辑软件开发中应用较为广泛。本文叙述了MapObjects组件在专题图件编辑软件开发过程中的三项关键技术――栅格数据和矢量数据的匹配、矢量数据物理-逻辑结构的转换、信息的分类显示。
栅格数据和矢量数据的匹配技术解决不同坐标格式图像数据的精确叠加问题。对于专题图件编辑软件来讲,底图的相关信息需要通过叠加相关矢量数据进行显示说明。因此,将矢量数据精确的表示在栅格底图的某一位置就需要通过栅格数据和矢量数据的匹配技术来实现。矢量数据物理-逻辑结构的转换技术主要解决矢量数据的读取/存储问题。要对矢量数据进行操作,首先要对其外在物理结构和内部处理时的逻辑结构有所了解,进而实现两者之间的相互转换。这样才能准确的处理好矢量数据的读取/存储操作。信息的分分类显示技术是丰富图像显示信息的重要手段之一。应用该技术可以减少不必要的矢量文件。将相似相关但需不同显示的数据存储于一个文件,利用分类显示技术将数据按其本身显示需求进行显示。这样既实现了各矢量数据的显示需求,还减少了不必要的文件开销。
利用MapObjects组件开发时,还会因具体问题应用到其他的相关技术手段。本文叙述的三个技术手段是开发过程中相对基础、常用的技术。为应用MapObjects组件进行开发提供一定的参考。