设置cache的依据是控制算法都是使用什么实现的

内容提示:面向虚拟机环境的CACHE 动態划分算法设计与实现

文档格式:PDF| 浏览次数:3| 上传日期: 02:54:18| 文档星级:?????

}

未经博主允许不得转载


其实还昰有个古老的办法,有简单的办法做cache但是大家还是习惯去硬编码。
其实不好应该考虑用统一的方式,非硬编码的方式去做cache
在加入设置cache的依据是时候方便,在去掉的时候也方便



然后针对多表关联数据,就没有办法了useCache=“false” 禁用 cache就行了。
这样在redis 这样的集中式缓存中可以蔀署多个 tomcat 实例不影响缓存更新了
主要是使用 hset 实现的。同时增加了超时时间针对整个大key。

}

题目: 开源GIS平台空间数据管理与發布技术研究

    本文系统地分析了网络地理信息系统(Web GIS)工作原理阐述了使用免费、开源的GIS平台的开发模式。介绍了在PostGIS中管理矢量数据的方法在Quantum GIS中调整地图样式并生成Map File文件的方法,介绍了使用MapServer根据Map File文件显示地图的方法在开源Web

    本文详细论述了Web GIS开发过程中重要的课题,Map File文件嘚语法和配置问题、数据缓存问题、通讯效率问题、最短路径问题和网络定位问题并且给出了相应的解决策略。

    最后本课题采用B/S结构使用HTML + CSS + JavaScript + PHP以及Ajax技术,在开源的IDE环境Eclipse中搭建了一个地图管理发布系统并通过Apache服务器发布供用户访问。该系统能够实现了地图基本操控、量测、編辑、旅行、地点搜索、移动定位等功能对使用开源GIS平台做网络端开发的工作者具有一定的指导意义。

  1.     不管您是在地图上标记度假照片还是想向客户展示所采样的样例站点,地图都是一种很有趣的显示数据的方式目前互联网上各大网站使用地图的现象也日益常见,并苴大众更喜欢使用免费的服务比如Microsoft Virtual Earth、Google Maps和百度地图等 (Michaelis, 2011)。您可以很快的适应并使用这些主流服务提供商提供的工具处理您的事务不过它们畢竟是大众产品,除了添加一些标记或者定位查找功能外不能单独免费地定制个性服务,对于安全性极高需要网络隔离的单位来说更昰无计可施。

        传统的开发经验是购买著名的商用软件进行数据采集管理发布可以考虑使用国外豪华套装ArcGIS + Oracle,或者使用国内优秀软件平台MapGIS / SuperMap泹是其复杂的功能让非专业人士无从下手,并且由于高额的软件购买服务费用很多中小型公司望而却步。

        随着地理信息产业的不断进步开源软件项目也取得了长足的进步。比如服务器中间件MapServer 作为一款开源的图像渲染软件在过去的几年里,发展开源社区和吸纳政府资助并且官方联合商业软件,成立了软件基金会逐渐被大部分组织机构以及个人广泛的采用。MapServer在软件性能上丝毫不逊色于商业产品University of North Carolina at Charlotte的Tobin Bradley对MapServer囷商用软件ArcIMS进行了对比试验,结果发现前者的运行效率要明显高于后者30%今日的开源软件MapServer无论是在网络制图领域,还是在整个地理空间信息产业软件中都竖起了一面旗帜带领着众多开源软件一道发展 (赵博, 2006)。

        通过使用开源软件平台一些中小型企事业单位可以有能力建立自巳的空间信息系统,发布共享空间数据另外,开源软件的发展对地理信息事业的发展起到了推动作用并且在一定程度上消除了商业垄斷技术的壁垒。

  2.     从1998年美国副总统戈尔提出著名的"数字地球"概念到现在十多年为止世界各国的专家学者以及众多的高新技术企业正在积极嘚研究Web GIS。目前Web GIS已经深入到社会各方各面。无论是在交通、旅游、导游等民用用途还是在经济、环保、自然灾害等政府决策中Web GIS的作用巨夶。

    IS、武汉中地数码公司的MapGIS IGServer以及国家遥感应用工程研究中心网络与运行工程部自主研发的GeoBeans虽然国内有自己的产品,但总体来看无论是軟件性能还是功能上与国外的Web GIS都有一定差距。

        开源的平台因为缺失可视化的用户管理界面和复杂的开发工作并未受到国内软件开发者的廣泛重视。本文基于开源软件意在研究一种零成本、高效的空间数据管理发布系统的开发模式。

  3.     本文选择的开源GIS软件平台有: PostgreSQL数据库、Quantum GIS桌面系统(简称QGIS)、MapServer空间服务器中间件、OpenLayers地图框架以及其他开源GIS库对空间数据管理发布及开发方式做出了研究,对如何应用开源软件动態构建交互式的网络地图应用平台进行探讨

    开源软件平台体系结构和开发方式

    分析Web GIS体系架构及原理机制,提出并解决了系统研发的关键問题在此基础上设计了系统的结构框架。

    基于QGIS的数据组织和制图表达

    研究QGIS加载Shape File文件处理地图颜色、比例尺、可视范围等信息,并导出Map File攵件利用Map File文件控制地图的显示样式。

    研究可储存TB量级大数据的PostgreSQL数据库使用该数据库的空间数据支持插件PostGIS导入Shape File文件,同时本课题也使用該数据库管理用户登录注册信息

    基于Mapserver的地图渲染可视化

    研究MapServer渲染矢量栅格数据原理,分析MapServer通过Map File配置文件访问矢量数据的方式和效率利鼡Map File制图表达实现地图各要素类的显示。

    基于交互式设计原则利用OpenLayers框架设计并实现了Web电子地图服务端架构。实现了地图基本操控(缩放、漫游、复位)并在此基础上实现其他公共服务模块(编辑、旅游、工具、位置等)。

  1. 地理信息系统平台主要由三部分组成:数据源服務器和客户端。

    以上示意图是以本文选择的开源软件作为具体实例进行绘制并在以下部分进行详细讲解。

  2.       数据层包括网络服务器公共数據和本地数据数据层中的数据一般采用空间数据库进行组织管理。空间数据库是在传统数据库基础上增加了空间信息将属性数据和空間数据联合管理,可以存储大量空间数据能表示复杂的数据模型。

          本文主要采用本地数据其中栅格数据是全球高清影像作为地图背景放置在文件系统中。矢量数据利用通过PostGIS导入PostgreSQL数据库进行存储管理

Spatial等,并利用GDAL支撑库访问栅格影像利用OGR支撑库访问矢量数据,并且将各種地理要素组织成具有层次关系的对象系统

  1.       客户层是基于桌面,也可以基于浏览器网页的形式展现本文论述的客户端是在浏览器中运荇的客户端。

          MapServer内置支持客户端框架当MapServer动态生成图片嵌入在Map File的Web标签中指定的网页模板,生成HTML文档并在浏览器中显示不过,这种开发方式茬进行用户交互设计时是极其复杂的因为需要在HTML Template文件中大量设置替换变量和CGI变量。使用功能强大的开源客户端地图显示框架OpenLayers将大大简化開发工作OpenLayers具有良好的用户体验交互界面。

    GIS前端开发软件被国内很多知名公司采用。OpenLayers可构建符合WMS、WFS、WCS等规范的地图显示页面能轻松的實现地图缩放、平滑拖动、鼠标滚轮控制、比例尺、鹰眼等基本控制操作功能。OpenLayers与MapServer搭配加之jQuery-ui库对客户端界面的渲染,能为用户提供丰富哆彩的地图服务

      PostgreSQL是由美国加州大学伯克利分校计算机系开发的对象关系型数据库管理系统。它在BSD许可证下发行目前由全球各大公司、編程爱好者及黑客共同开发,对多进程并发支持很好理论上能运行TB量级的数据,这已经达到了32bit计算机的极限值故号称是目前世界上功能最强大、最先进的跨平台开源数据库系统。

  1. PostgreSQL安装:在PostgreSQL官网上下载最新版的已编译的二进制安装包选择自定义安装根目录,设置管理员密码进行安装安装完毕后,可以跳过引导安装程序
  2. PostGIS + pgRouting安装:在pgRouting官网上下载已编译的安装包,安装过程输入与PostgreSQL链接的密码将插件附加到數据库中。
  3. 在提供公共数据的官网上下载Shape File文件在QGIS中进行投影变换,具体步骤请参阅相关文档不在本文研究范围内。
  4. 打开图形化界面pgAdmin III鈳以使用鼠标操作、PSQL Console也可以用SQL创建系统数据库。本文使用SQL语句进行阐述

至此,数据库空间数据部署完成可以供MapFile连接使用。

  • 1.0-1去掉因其與GDAL冲突)。安装结束后软件向导会自动安装和与MapServer配合的Apache服务器。通过Windows系统的任务管理器将Apache服务由开机自动启动设置为手动启动来减少开機占用时间可以通过修改Apache下的配置文件httpd.conf修改虚拟主机、域名、端口号和服务根目录等。

    GIS提供服务器服务bin目录下是apache执行服务的二进制运荇文件httpd.exe所在目录;cgi-bin目录没有任何执行文件,在apache的httpd.conf将/OSGeo4W/bin路径指定为/cgi-bin/(如图2-2所示)故其是bin目录的代称目录;conf目录是前文所讲述的httpd.conf所在目录,该攵件设置了Apache所有参数如访问名称(ServerName)、文档根目录(DocumentRoot)支撑库及访问权限等; htdocs是apache默认的服务所在的文档根目录,考虑到安全及管理方便問题一般不将应用文档放置在此目录下;logs目录下的access.log记述访问apache服务信息,error.log记述apache错误信息httpd.pid包含apache进程号;php目录,apache内置集成php通过该apache服务器可執行php文件。

    :该目录下包含了一系列Apache应用服务的配置文件每个建立的应用程序都需要在该目录下建立相应的配置文件,这样应用程序之間不会相互干扰并且方便管理这些文件的命名方式要求是"http_.conf",本课题在此的配置文件命名为http_OpenWebMap.conf具体配置信息如图2-3所示。这样在浏览器中输叺 直接能连接程序界面

  • 本节内容将讲述在OSGeo4W中集成的软件与本课题相关的其他软件,有QGIS和MapServer

    1. QGIS是基于Qt C++开发的用户界面友好的跨平台的开源桌媔地理信息系统。源码采用GNU General Public License协议对外发布

    本课题将采用QGIS 2.2版本导入Shape File文件,对地图进行符号、颜色、可见比例尺进行设置如图2-4所示。

    下图昰本课题配置的地图所有样式(图2-5)

    图2-7 本课题在QGIS配置的地图

    Exporter生成MapFile是一种快速方便的方式。但该插件生成的MapFile文件中图层顺序与MapServer解析图层顺序相反并且其他未设置的参数以[template]代替,MapServer不能解读故需修改。

    1. Lime所说的:"MapServer不是一套全能的GIS系统它擅长于在网络上发布空间数据,构建空間网络应用的开发环境"以下将介绍MapServer主要特性:

  •       MapServer是利用C语言编写的CGI脚本在服务器实时将处理的空间数据发送给服务器。同时MapServer支持FastCGI该技术昰可伸缩架构的CGI开放扩展,其主要作用是使内存驻留CGI进程避免反复加载而获得高性能 (高进,

    1. 地图服务遵循OGC标准规范

    除了MapServer核心的功能模块外,大部分功能是通过基于其他开源库实现的其中与栅格影像相关的有JPEG library、PNG library、Zlib、GDAL/OGR,与矢量影像有关的是GD library还有支持TrueType字体库,地图投影库PROJ.4支持┅千多种投影的实时转化这些支撑库使得MapServer功能更强大。

  • MapWorldWind,MapServer等多种数据源对地图快速实现图层控制、鼠标缩放控制、触摸屏多点触控、概览图、图面注记等并在多种主流的浏览器中运行。

    鼠标位置(位于地图的经纬度)

    同时OpenLayers是一个独立的库,不要求特定的web服务器或服務器端组件它有一组组织很好的类构成,以实际的地图对象OpenLayers.Map开始将各层类(如Layers.Google,Layers.MapServer或Layers.ArcIMS)实例化后添加到地图然后通过Control.Navigation等代替地图控件嘚类的作用与地图交互。最后采用用于样式化、数据格式化、坐标存储的各种实用工具类。下图为OpenLayers示例采用的是OpenStreetMap地图,该示例已具备基本地图基本控制功能

    ready函数来设置地图。该函数晚于onLoad事件触发因为并不是所有的图像和DOM元素都可以在onLoad事件触发时加载和准备好,但可鉯保证在触发该函数时一切都准备好创建一个地图并将其分配到一个变量。在此构造函数的第二个参数允许传递选项比如地图的控件、投影以及看查看的最大程度。maxExtents参数限制了用户所能平移的最大程度并且指定它来避免异常操作。

  • 10 }),// 鼠标滚轮缩放拖动等 15 // 平移缩放工具條

          OpenLayers内的一个地图包含了基础层和叠加层,基础层只能有一个激活一般用作底图,叠加层通常是用户绘制的矢量层或其他来源的图层一佽可以激活多个叠加层。

    本课题中选用MapServer提供的图层作为底图

    1. 网络后台语言PHP和Ajax技术

      下面将本课题中的登录界面作为PHP语言示例做简要介绍其ΦPHP与PostgreSQL数据库连接的代码段:

      pg_connect是PHP对PostgreSQL封装的连接函数,需要传递PostgreSQL的url地址数据库名称,用户名连接密码。该函数默认端口号为5432与PostgreSQL默认端口號一致,若PostgreSQL为其他端口号需要在参数中加入字段"port=【自定义端口号】",后面的die()函数用来处理异常情况

      通过GET方式获得HTML中的input消息的代码是:

      標注:涉及到密码等隐私部分应该以POST方式传递最为安全。

      查询数据库并比对与用户传递来的参数是否一致若一致则输出succeed字符串:

      } // 用户不存在的情况 } // 密码输入错误情况

            pg_query( )函数用来查询注册用户表,该函数返回一长串字符串pg_fetch_array( )函数将该长字符串转换成数据存储。strcmp( )为字符串比对函數匹配成功返回0。PHP返回的字符串是一种信号通过Ajax技术传递到Javascript函数处理,从而实现登录将在下面介绍。

      在数据库中进行查询操作后需偠关闭数据库虽然该话题一直存在争议,认为一个用户登录该数据库后还会进行其他操作关闭和打开数据库的代价都是相当可观的,這样可能会影响用户体验但是,即便一位用户登录数据库后中途进行其他操作该连接也是一直存在的,毕竟服务器的资源有限对于夶量用户访问的情况,服务器的资源会大量占用甚至崩溃故本课题更倾向于后者,用户操作完成后数据库需要关闭

    2. GIS开发的基本流程。丅一章节中将分析本课题几个重要的问题这也是本课题的核心所在,理解下一章节后将可以顺利的开发具有商业用途的Web GIS应用程序

    3.       Map File是服務器中间件组织地图的核心,了解Map File的语法是制图表达和本课题研究重点之一本课题首先介绍Map File文件层级结构,然后探讨符合标准的地图符號设置最后介绍使用QGIS插件生成Map File。

      1. 图像大小对系统性能的表现有很大影响使用RGB模式生成图像比使用256色模式生成的图像大,加载慢;
      2. 根据數据种类的不同应该考虑不同图像的位深。如使用卫星或航拍影像则应该使用RGB三通道模式生成影像并且使用PNG24生成的图像比JPEG生成的图像仳要大;
      3. 使用JPEG格式时,设置图像质量QUALITY可减小图像大小;
      4. 选择使用GD或AGG图像库渲染

      MapServer 5.0以后版本中内置支持AGG(一个使用C++开发的高质量的二维图像渲染库。具有抗锯齿和sub-pixel分辨率)如下图3-2是本课题Outputformat参数设置。

      MapServer绘制影像时将自上至下的读取Layer对象定义的图层信息,故Layer中第一个图层作为底图Layer中的Name指定图层名称,可显示在Legent图例中STATUS指定图层状态:默认打开状态DEFAULT、打开状态ON和关闭状态OFF。需要注意的是TYPE的三种状态定义其中Point鼡于描述地图数据的兴趣点(本系统中主要是省会、县城等),Line是将一系列顺序相关的点绘制成特定大小颜色的线(本系统中主要是河流、铁路、公路及国界省界等)Polygon是面积需要用特定颜色的像素点填充(本系统中主要包括背景图、周边国家、省管辖区、县管辖区等)。

      "gb2312"并在FONTSET包含的字体文件中指定中文字体所在的路径。

      图3-4 地图显示初步效果

            MapFile是服务器中间件MapServer的核心文件是数据组织和数据显示的样式文件,对于商业需要快速准确生成、快速部署来说手动编写MapFile文件效率低下且易出错,往往不能满足要求在开源软件QGIS中可以进行MapFile的图形化配置,在视图窗口中等到满意的效果后再导出MapFile文件

    4.       用户浏览系统地图时,MapServer实时根据MapFile文件解析绘制并切割生成影像返回客户端显示在小规模的本地数据量时响应时间可以接受,但是当本地数据量很大并且有大量用户访问时其响应时间将难以忍受。本课题将利用开源的tilecache技术實现地图瓦片的缓存利用缓存机制提高系统响应效率。

            地图瓦片思想来自层次细节模型可以将整幅影像切分成大量分辨率相同的小幅影像。用户查看影像时一般一次仅对少量瓦片进行操作,服务器放送相应的瓦片即可满足用户需求这样,在减少网络数据量减轻带宽嘚同时再利用Ajax技术使瓦片自行在服务器异步下载,可大大减少系统响应时间改善用户体验。

            地图瓦片采用金字塔结构(四叉树)按比唎进行分组组织和存储每提高一个浏览级别,就是用四张较高分辨率的影像代替较低分辨率的1张影像

            金字塔模型中每个瓦片被赋予唯┅的ID号,利用编号索引结合用户操作地图所需要的分辨率,能够确定需要哪一编号的瓦片

      2009),配合OpenLayers使地图显示更快Tilecache支持多种OGC服务标准囷多种服务器,并且支持多种请求格式和方式

    5.       Ajax是时序异步的Javascript和XML的接合体,是一种创建动态网页的技术与传统的网页更新需要重新加载整个页面相比,Ajax通过在后台与服务器进行少量的数据交换使网页实现异步更新 (田建华, 2011) (李玉龙, 2012),即不重新加载整个网页与服务器交换数据並更新部分网页Ajax不是新的编程语言,而是一种使用现有标准的新方法

            在2005年,Google公司通过搜索栏中的Google Suggest使Ajax技术流行起来该项技术能够创造絀动态性极强的Web界面。当使用者在Google的搜索框中输入关键字时Javascript会把该字符发送到网络端服务器,然后服务器会产生搜索建议的列表 (李双武, 2013)

            现在可以将参数以url地址方式传递给open函数。为避免反复请求获得的是缓冲区中的数据可以在url字符串中添加随机数。

            若实现异步Javascript和XML要求open( )方法的async参数必须设置成true。对于Web程序来说发送异步请求是一项具有革命意义的技术,Ajax技术出现之后Javascript脚本不再需要等待服务器的响应,而昰在等待期间执行其他脚本等到响应就绪后再处理 (李玉龙, 2012)。

      当readyState等于4或者200时表明响应已经就绪:

      3 // 加入消息响应结束后应该执行的代码

            本系统大部分功能与数据库紧密相连,这样用户进行操作时会大量打开关闭数据库虽然通过Ajax技术实现异步操作在一定程度上减轻了系统压仂,但在大量用户访问时却难以应付本系统将常用数据以xml文件的方式缓存。下对比图为使用该思想的效率提升

      图3-9. 访问数据库获得信息時间829ms

    使用pgr_dijkstra()函数求得两点之间的最短路径。

    edge_table"其中id是用来标明边号;source是指明起始点的编号;target是指明终止点的编号cost指行走该边的代价;reverse_cost是可选項,指反向行走该边的代价前提是该道路网是有向图,并且has_rcost字段设置为true

    边ID(-1代表最后一行)

    从id1走id2路径的代价

    图3-11 查询从节点6到节点12最短路徑的SQL语句

    标注:用复杂的SQL语句(如JOINs等)查询的结果顺序可能是错的这时候需要用ORDER BY seq排序结果;cost属性代表选择该路径的代价,本示例是以length作為代价单位为"kilometers",cost属性也可以用消耗时间、距离或者其他代替

          A-Star是另一个著名的最短路径算法,该算法为每条连接网络起始点和终止点加叺了地理信息这使得查询的结果比较接近于最短路径。

    准备工作:在道路网中添加经纬度属性列(x1 y1 和 x2, y2)并计算他们的值

    A-Star最短路径算法跟Dijkstra算法很相似,但是该算法更接近现实中的最短路径搜索比Dijkstra更准确。这种启发式搜索是预定义的如果修改这种启发式的搜索方法嘚话需要重新编译pgRouting。

    edge_table其中,id指定边号;source指定起始点编号;target指定终止点编号;cost指定选择该边代价;x1、y1、x2、y2指定起始点和终止点横纵坐标;reverse_cost昰可选项指反向行走该边的代价,前提是该道路网是有向图并且has_rcost字段设置为true

    图3-13 从节点6到节点12的最短路径(A-Star算法)

    备注:随着图的数据量越来越大,A-Star的执行效率高于Dijkstra但这些在pgRouting中比对这两者的算法时差别不是很大。

    如果主要目的是计算总体的代价比如说计算一段复杂的噵路网,函数pgr_kdijkstraCost( )能返回合适的结果;若路程的距离是最重要的则函数pgr_kdijkstra( )返回的结果与A-Star和Dijkstra到每一个目的地的算法是一致的。

    这两个函数的参数基本上与Dijkstra函数参数一致不再赘述。值得注意的是targets是指一系列终点的数组

    起始点编号(在队列中该列总是起始点编号)

    从id1到id2的代价。若無通路则该值为-1

    选择id2边代价,若不连通该值为-1

  •       地理位置API()允许Javascript程序向浏览器询问用户当前具体的地理位置识别了地理位置对于显示哋图、导航和以他一些用户信息具有重要意义。考虑到用户隐私问题支持地理位置API的浏览器在Javascript获取用户位置信息前总是询问用户是否同意

          在包含GPS的硬件设备上,通过GPS可以获得精确的位置信息但是大部分情况是根据Web获得。当浏览器提交IP地址给一个Web服务时服务器能够基于網络提供商(IPS)记录知道IP属于哪个城市。浏览器还可以请求操作系统获取无线网络列表中和信号量强度获得更精确的位置信息 (Flanagan, 2012-01)

          这些地理位置相关的技术都包含在网络的数据交换或者和多颗卫星之间的通信。因此地理位置的API是异步的:getCurrentPosition( )方法和watchPosition( )方法需要一个回调函数作为参数在判断用书的位置信息改变时,浏览器会回调该函数 (Flanagan, 2012)如下展示了一个获取地理位置的例子.

    //除了获得经纬度外,还可以获得以米为单位嘚地理位置精度值若使用者的设备传感器支撑强大,系统能够求得用户所在的海拨高度、移动速度等更加详细信息 // 设置为true 的话可以提高定位精度,但在移动设备上非常耗电 // 设置检查更新当前位置的时间 // 设置当前位置的有效时间 // 检测浏览器是否支持定位 // 1: 用户不允许分享个囚地理位置信息 // 2:浏览器无法确定位置 // 获取位置成功时会调用此函数 // 若设备还返回海拔信息,添加进列表 // 若设备还返回了速度和航向信息添加到列表
  • 本章节重点介绍了在Web系统开发时应该解决的重要问题,MapFile文件是服务器中间件MapServer的核心配置文件该文件配置正确与否直接影響地图显示;数据缓存问题关系系统响应效率问题,该问题若不能解决则在大量用户访问系统时会影响用户体验甚至导致服务器崩溃;朂短路径问题在地图导航应用中非常普遍,缺失该功能则对其他功能模块产生影响;网络定位问题是客户最为关心的问题大部分用户使鼡Web系统原因之一便是查找自己的位置以及周边的环境。

  •       Kernel模块主要功能是管理地图对象、地图投影、当前经纬度信息、缩放级别和地图控制等其提供的全局变量可用于其他各个模块,是系统的内核部分

          Layers模块主要功能是加载其他矢量地图(如不同区域内的地图)、标注图层囷图片图层等,为系统提供除了基本底图以外的其他叠加图层的功能该模块是由图层堆栈统一管理,堆栈中记录着每个图层的名称、对潒、类型的信息的结构体

          Module模块提供了系统菜单栏中各个模块的功能,如地图基本控制、地图量测、地图编辑、生活服务、小工具、移动萣位等

    Resource模块提供了系统菜单栏资源管理的功能,Module模块中会提供的释放自身申请的系统资源的内置函数这些函数由Resource模块统一管理,不同模块切换时会释放以前功能所占用的资源这样才能使系统有条不紊的工作,菜单栏中各个模块由Resource联系起来组成了完整的系统资源操作鈈当会使系统各个功能分崩离析。

          Frame模块提供了系统框架样式函数如菜单栏的"鱼眼"显示特效、按钮特效、进度条、LOGO拖拽特效;同时该模块還负责处理系统错误与异常,并提供基本函数功能Frame模块中有两种初始化系统的状态:document ready状态和initialize kernel状态,前者响应时间晚于后者是在浏览器加载DOM完毕后运行,对于系统框架样式可以使用此状态;后者随浏览器运行时便开始响应为地图绘制赢得时间。

          User模块提供了用户权限功能该模块中有负责访问数据库验证用户信息的功能,有注册新用户功能系统通过验证该模块得知当前操作系统用户所具有的权限从而开放不同的功能。

          Message模块提供了系统通信机制的功能提供了系统访问常用数据的优化机制和与数据库交互的功能,该部分已经在第三章通讯效率问题中做了详细论述

    各个模块各司其职,协调合作是系统有机组成部分。

          如下图所示是系统在Google Chrome浏览器的界面本系统使用OpenLayers开源框架调用MapServer响应的地图,并以地图最为整个浏览器的背景本系统实现了用户注册登录功能,注册用户信息表位于PostgreSQL数据库中系统权限主要分為普通用户、注册用户和管理员,不同用户享有不同的权限

  • 如下图所示为地图控制工具条。第一个图标为放大功能可以对地图拉框放夶、双击放大和鼠标滚轮放大;第二个图标为缩小图标,可以对地图拉框缩小鼠标滚动缩小;第三个图标为移动功能,点击后鼠标可以拖动地图;第四个图标可以将地图缩放到最小缩放率;第五个图标为复位功能,点击系统将返回初始的经纬度和缩放级别同时,鼠标迻动到图标时鼠标指针发生相应的变化,并且在图标下方显示相应的帮助信息

    图4-3 地图控制工具条

          如下图所示为菜单栏,该工具条采用Magic Dock特效鼠标移动到图标时,响应图标放大并带动其他图标放大,并且图标缩放时其透明度也会发生相应变化特效优美。点击相应图标系统会显示相应模块的工具条信息。

          鉴于系统访问文件系统中的文件比访问数据库系统中的表速度快系统会自动生成XML文件,当用户再佽访问时直接读取该文件该部分详细内容详见3.3章节。

    注册用户可以添加自己的照片经管理员审核可发布最终形成类似谷歌地球图片图層的功能。

  •       用户可以使用量测工具来测量地图上的距离和面积需要注意的是需要在Map File中指定的单位一定要与OpenLayers中设置的单位一致,否则会产苼错误结果第三个图标是统计世界各个国家的面积饼状图,鉴于方便展示起见本系统仅展示国土面积在500万平方公里的国家。

    图4-8 距离量測效果

    图4-9 国土面积饼状图

  •       用户可以使用编辑模块工具条创建点、线、面图层并可以拖动图层中的实体。并且可以通过图层数据库删除已經创建的图层

    图4-10 分析模块工具条

    图4-11添加图层对话框

  •       该模块提供了最短路径查询功能、地名检索功能和区域地图查看功能。最短路径功能昰用户设置起始点和终止点后系统会提供两点之间的最短路径。地名检索功能是用户输入地名首字母或第一个汉字搜索界面会动态的提供按钮样式的联想关键字,用户点击关键字点击Search按钮可查询地名详细地理信息,点击GO按钮系统会平移到相应位置

    图4-13 旅行工具条

  •       该模塊通过日历记事功能和放大镜功能,用户可以使用日历功能记录生活信息并且可以在地图上标注。

  •       用户可以使用该模块确定当前位置具体实现详见3.4章节。在联网情况下系统显示本机所在地点为中国地质大学西区,定位精度为60米用户可以在对话框中选择精确定位,但這样在移动设备上会增加耗电同时用户可以设置当前位置失效时间以及追踪用户位置。

    图4-16 位置工具条

          用户可以在高级模块中设定自己的絀行计划系统将绘制线路。鼠标点击地图时系统会自动获取点击位置的经纬度并记录

  •       本章主要介绍了基于开源GIS平台开发的地图服务系統。系统中的大部分功能偏重在学术研究方面离生活应用服务还有一定的距离。这需要在未来的业务中丰富拓展本系统

  • GIS地图服务系统。一方面可以增强对网络地理信息系统理论和技术多样性的研究另一方面为中小型企事业单位提供了可选方案,促进了GIS推广

  •       本文首先汾析了Web GIS原理,在数据层方面使用PostGIS存储矢量数据,建立道路网拓扑关系在QGIS中调整空间数据显示样式,并生成Map File文件在服务层中阐述了系統配置问题,如何利用MapServer根据Map File文件显示基本地图信息

          在第三章节中论述了Web GIS开发中的关键问题。Map File文件是地图显示的关键该文件的组织结构、语法知识对于系统配置来说至关重要。数据缓存问题关系到系统响应效率系统若用作商业用途并供大量用户访问,必须解决数据缓存問题最短路径算法和网络定位问题是系统生活化的常见应用。

          在第四章节里描述了本课题根据以上章节的研究使用了开源软件搭建地图垺务平台首先阐述了系统的基本架构,包括各个模块的作用然后介绍了系统实现的功能,如地图基本控制、量测、编辑、生活应用、迻动定位等

  •       经过对本课题的研究,发现开源GIS开发无论是在学术研究上还是在商业用途上都具有长远利益同时在开发本课题系统时也发現了诸多问题亟待解决。QGIS官方的Export MapFile插件存在图层顺序不一致问题PostgreSQL数据库的图形化界面pgAdmin III中的SQL模块出现莫名其妙的错误重启服务又能使用的问題,著名的属性数据列名大小写混杂出错问题利用Ajax技术交换信息时信息的加密问题。本课题只是进行了初步的试探今后的主要工作需偠从以下几方面展开:

    1. 根据实际的商业用途拓展

          开源GIS平台并不比商业功能少,大部分功能很少被注意但是在业务中具有重要的价值需要繼续开发。其次本课题开发的系统大部分功能偏重在学术方面,距离商用还有一定的距离今后可以根据具体的系统需求说明书开发出具有商用价值的系统。

    1. 阅读并修改开源GIS平台源代码

          若能深入的理解应用开源GIS软件必须要阅读代码,根据具体的应用定量裁剪并且修正系统的Bug和优化代码执行效率。

  •       本文论述的开发模式是B/S模式系统需要应用于服务器。目前服务器安装的操作系统大部分是CentOS本系统具备移植条件,只需少许改动Apache配置文件

          需要对系统的通讯机制进行加密,否则骇客通过反编译手段破解数据库密码进而篡改数据库数据。

    [3] 开源空间信息软件.

          时光如白驹过隙转眼四年间,大学时光即将结束在这四年的求学时光里,我向给予我帮助的导师以及师长、同学们表示诚挚的谢意。

          大学的最后一年里我得到了尊敬的导师刘教授的悉心指导刘老师是本校资深的老师,他治学态度严谨、宽以待人、谦遜随和在学术上以及做人方面都对我产生了深刻的影响,这为我以后的工作打好了坚实的基础在本课题的研究期间,刘老师给了我很哆指导性的意见和建议在此致以深深的敬意并表示由衷的感谢。

          在这里我还要感谢徐老师和张学长徐老师在编程技术研究方法方面给峩启到了引领作用,张学长让我知道知识是次要的学习的能力才是最重要的。

          此外还要特意感谢杨老师,杨老师为人谦逊有很多创噺想法。在我大二时杨老师对我指导很多教给我很多解决问题的思路,并逐渐使我热爱编程

          同时还需要感谢OpenLayers、MapServer、PHP、PostgreSQL官网以及开发人员。每当问题出现时我都详详细细的阅读开发者邮件列表,并从中找到解决方案同时还要感谢这些开源平台的相关群,是群里很多编程夶牛的帮助促成了本系统的顺利开发完成

          感谢好友李悦康,她详细阅读了本文提出了论述思路并且给出若干指导意见。

    开源GIS软件与开發语言图标

    [1] 杨乃李悦康,陈玉成. 室内地理信息系统的设计与实现方法. 测绘通报. 2014.7

}

我要回帖

更多关于 状态寄存器用来存放什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信