分享
 
 
 

WebGIS雏形探讨和实践

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

技术总结

WebGIS雏形探讨和实践

hugos-疯狂老鼠

概要: 本论文针对如何在Internet上实现GIS电子地图浏览进行了有益的探讨,提出了设计思路和方法,并且最终完成了一个简易的WebGIS的雏形框架。

关键字:WebGIS GIS 电子地图 Java Applet CGI

1. 概述

WebGIS是一门新兴的技术。它的主要目的就是面向Internet用户,在用户无需安装专用客户端软件的情况下,为用户提供地图的浏览、查询等常规GIS功能。国际互联网已经在全世界范围内获得了迅猛的发展。通过浏览器和HTTP服务器,我们可以获取各种各样的信息。但是迄今为止,尚无一种流行的浏览器(包括Internet Explorer和Netscape Navigator)能够直接支持地图的显示和查询功能。然而通过WebGIS就可以在现有的情况下,让我们利用浏览器实现网上的地图浏览和查询。

本论文采用地图服务组件、CGI(公共网关界面)和JavaApplet技术实现了一个WebGIS的雏形框架。

该框架的开发和运行环境是:

操作系统: Microsoft Windows2000 Server

HTTP服务器:Apache1.3.14 Win32版

CGI开发工具:Visual C++

地图服务组件开发工具:Visual C++

浏览器: Internet Explorer,Java2 Runtime Environment

Applet开发工具:JDK1.3.1

2. WebGIS工作原理

WebGIS的系统结构框图如下:

系统工作流程和原理如下:

Internet用户启动浏览器,打开HTTP服务器上的网页。该网页包含Java applet。 Applet为用户提供地图操作功能和地图显示功能。用户每操作一次地图(包括放大、缩小、拖动),applet将向服务器上的CGI提交一次请求。CGI在收到请求后,自动调用地图组件。地图组件根据该请求的参数,自动生成一个JPG图片文件。然后CGI把该图片文件的URL地址发送到用户端的Applet。 Applet则把新的地图在浏览器中显示出来。这样用户就可以看到相应的地图视图。

综上所述,本系统运行的三个核心部件是地图服务组件、CGI程序和Applet。下面的章节将对这三个关键部件做更详细的说明。

3. 地图服务组件设计

地图服务组件包括两个dll(动态连接库)文件:MapEngine.dll和PicEngine.dll。它们分别提供以下功能:

4. CGI设计

CGI(Common Gateway Inferface)程序的主要作用是在服务器端运行,收集用户端发来的数据,然后根据这些数据产生相应的html页面发送给用户端的浏览器。CGI是用来为网站实现动态页面的方法之一。

在本系统中,CGI主程序是MyCGI.cgi . 该程序的工作原理流程图如下:

5. Applet设计

本系统有两个applets小程序组成:JAppToolsBar.class和JAppMapArea.class.下面是它们的结构描述表格。限于篇幅,applets各个方法的实现细节这里就不介绍了。

JAppToolsBar

成员或者方法 描述

javax.swing.ButtonGroup RadioGroup1

javax.swing.JRadioButton jRadioDrag

javax.swing.JRadioButton jRadioZoomIn

javax.swing.JRadioButton jRadioZoomOut

javax.swing.JRadioButton jRadioViewAll 单选按钮用于用户选择不同的地图操作方式:放大、缩小、拖动和察看全图

Cursor cursorZoomIn

Cursor cursorZoomOut

Cursor cursorDrag 用于设置JAppMapArea的光标:放大光标,缩小光标,拖动光标

JApplet mapJApplet JAppMapArea的引用

Init 作必要的初始化工作,调入光标

InitComponent 设置布局layout,添加事件处理映射函数

jRadioViewAllMouseClicked 使JAppMapArea显示全图

jRadioZoomInStateChanged 设置地图的操作方式是“放大”

jRadioZoomOutStateChanged 设置地图的操作方式是“缩小”

jRadioDragStateChanged 设置地图的操作方式是“拖动”

JAppMapArea

成员或者方法 描述

double Factor, Amount, X, Y 视图参数

String strJPG 存储MyCGI.cgi传回的jpg文件的URL

Image imageMap 指向jpg文件

String strHTML 存储MyCGI.cgi输出的html文件

Int W, H 地图的尺寸

int SelectedTools 地图操作方式

JApplet toolsbarJApplet JAppToolsBar的引用

boolean MouseDown 标志鼠标是否按下

boolean MouseDrag 标志鼠标是否正在拖动

Point oldPoint 鼠标按下的第一点

Point oldPointDrag 鼠标拖动的第一点

Rectangle oldRect 鼠标拖动矩形

Init 作必要的初始化工作

InitComponent 设置布局layout,添加事件处理映射函数

paint 小程序绘制函数

formMouseDragged 鼠标拖动消息处理函数

formMouseReleased 鼠标按键释放消息处理函数

formMousePressed 鼠标按键按下消息处理函数

zoomFromRect 矩形放大和缩小

zoomFromPoint 单点放大缩小

zoomToViewAll 察看全图

DPtoLP_X

DPtoLP_Y 屏幕坐标转换到地图坐标

LPtoDP_X

LPtoDP_Y 地图坐标转换到屏幕坐标

connectToServer 连接到服务器,提交4视图参数, 请求传回HTML数据流

getServerOutput 从服务器传回的HTML数据流中解析JPG文件路径和名字,解析4个视图参数

6. 系统配置及运行效果

系统运行前需要做好如下工作:

1. 配置Apache 服务器,设置CGI目录,允许CGI程序在该目录下可以执行。在本系统中该目录是主页所在目录下的cgi-bin子目录。

2. 把MapEngine.dll 和PicEngine.dll以及MyCGI.cgi程序拷贝到cgi-bin子目录下。

3. 在主页目录下新建一目录map, 把所有地图工程文件拷贝到该目录。

4. 新建一html文件,把两个applets插入到该文件。用jdk1.3.1附带的HtmlConverter工具,转换一下。把该html文件拷贝到主页目录下。在本系统中该文件名字是JAppHtml.html.

5. 把JAppToolsBar和JAppMapArea这两个Applets拷贝到主页目录下。

6. 到现在为止,已经大功告成了。需要提的一点是:用户端需要安装JRE,如果没有安装的话用户无法正确的察看该网页。JRE可以从Sun公司的网站上下载。

本系统的运行效果图如下:

用户第一次看到的效果图

经过几次放大后看到的效果图

7. 总结

当然,WebGIS本身的概念,范畴和功能是相当复杂的。实际上本论文实现的系统用“Web下的简易电子地图显示系统”来称呼它非常合适。因为它是WebGIS最原始的雏形,仅具备最基本的功能。但是,本系统毕竟为开发功能强大的WebGIS提供了一个可行的设计思想和设计方法。只要掌握了这种思路,要实现其他的功能和需求,都应该是触类旁通的。

另外,需要特别声明的是本系统目前还存在很多缺陷,没有任何实用价值。我设计这套系统是出于学习和实践的目的。其实就是想搞明白诸如此类的问题:WebGIS到底是怎么实现的?它需要哪些方面的技术支持?它的整个运行流程是怎样的?如果有可能,能否把它的技术应用到工程项目中去?当然了,它的优点是不容置疑的,这我就不多讲了。

最后,我要指出本系统最严重的缺陷是什么。最严重的缺陷就在服务器端那个CGI程序。用户每提交一次请求,那个CGI程序都要执行一次调入地图工程和关闭地图工程操作。这是非常耗时的。由于时间有限,没来得及改善。不过,解决方法已经有了。那就是伟大的COM技术。设计一个基于Windows NT服务(Service)的进程外COM服务器可以彻底解决这个缺陷。希望我能抽时间尽快解决这个问题。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有