用mapXtreme Java开发web gis应用 (上)

1.GIS的概念

1.1什么是gis

地理信息系统 (GIS, Geographic Information System) 是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。 GIS 技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。这种能力使 GIS与其他信息系统相区别,从而使其在广泛的公众和个人企事业单位中解释事件、预测结果、规划战略等中具有实用价值。 

GIS 由五个主要的元素所构成: 硬件、软件、数据、人员和方法。 

GIS就是用来存储有关世界的信息,这些信息是可以通过地 理关系连接在一起的所有主题层集合。这个简单却非常有力和通用的概念,对于解决许多真实世界的问题具有无价的作用,这些问题包括:跟 踪传输工具、记录计划的详细资料,模拟全球的大气循环等。

1.2什么是web gis

1.2.1概念

随着Internet技术的不断发展和人们对地理信息系统(GIS)的需求,利用Internet在Web上发布和出版空间数据,为用户提供空间数据浏览、查询和分析的功能,已经成为GIS发展的必然趋势。于是,基于Internet技术的地理信息系统--WebGIS就应运而生。 
WebGIS是Internet技术应用于GIS开发的产物。GIS通过WWW功能得以扩展,真正成为一种大众使用的工具。从WWW的任意一个节点,Internet用户可以浏览WebGIS站点中的空间数据、制作专题图,以及进行各种空间检索和空间分析,从而使GIS进入千家万户。

1.2.2WebGIS的特点: 
(1)全球化的客户/服务器应用 

全球范围内任意一个WWW节点的Internet用户都可以访问WebGIS服务器提供的各种GIS服务,甚至还可以进行全球范围内的GIS数据更新。 
(2)真正大众化的GIS 

由于Internet的爆炸性发展,Web服务正在进入千家万户,WebGIS给更多用户提供了使用GIS的机会。WebGIS可以使用通用浏览器进行浏览、查询,额外的插件(plug-in)、ActiveX控件和Java Applet通常都是免费的,降低了终端用户的经济和技术负担,很大程度上扩大了GIS的潜在用户范围。而以往的GIS由于成本高和技术难度大,往往成为少数专家拥有的专业工具,很难推广。 
(3)良好的可扩展性 

WebGIS很容易跟Web中的其他信息服务进行无缝集成,可以建立灵活多变的GIS应用。 
(4)跨平台特性

 在WebGIS以前,尽管一些厂商为不同的操作系统(如:Windows、UNIX、Macintosh)分别提供了相应的GIS软件版本,但是没有一个GIS软件真正具有跨平台的特性。而基于Java的WebGIS可以做到"一次编程,到处运行 (write once, run anywhere)" ,把跨平台的特点发挥得淋漓尽致。

2.开发控件的选择

目前影响较大的国外地理服务器有Mapinfo MapXtreme、MapObject、Autodesk Map Guide、ArcIMS、Argcgisserver以及国内的Super Map等。由于考虑到我们是采用Java语言开发基于Web方式的Gis应用,最终对比之后采用Mapinfo公司的MapXtreme Java作为开发控件进行地理应用的二次开发工具。 

MapXtreme Java 是目前用于 Internet 或企业 Intranet 唯一的 100% 纯 Java 的地图服务器。 MapInfo MapXtreme Java 与 J2EE 兼容,为开发人员开发应用提供了无与伦比的灵活性。 MapXtreme Java 向应用开发商提供了一个高度可视化的、直观的组件,方便他们将地图功能集成到任何 Web 应用中。

MapXtreme Java为 Internet 设计三种布署模式 

瘦客户端  所有的地图生成 / 渲染是由服务器端完成的。客户只接收小于 20k 的 GIF 。在服务器端, MapXtreme 作为一个 Servlet 与 Web 服务器相连接,或者集成了 Web 服务器和应用服务器的功能。 

中型客户端  Web 浏览器装载了一个 Java Applet ,但仍然从 MapXtreme 的 Servlet 中得到基于 GIF/JPEG 的地图图像。这种环境增加了灵活的用户交互,同时将从服务器下载的信息量降到最低。 

胖客户端  装载了 applet 后,地图以一系列矢量的形式传输到 applet 中。这样,除了可从任何远程数据库中获得的空间对象外,所有的地图功能都属于客户 applet 。这种环境最适于更高带宽的内部网,所有的数据都能传输到每个客户端。要使用这种模式, MapXtreme 必须以命名用户方式注册。 MapXtremeJava 以压缩了 10 倍的数据格式形成矢量流,便于网络传输,减少响应时间。 

考虑到IE对applet的支持,客户端用户对IE的设置的反感,我们决定采用瘦客户端的部署模式。所有的地图生成全部由服务器来完成,web gis应用中的客户端和普通web应用中的客户端一样。

3.MapXtreme Java的安装与使用

3.1安装MapXtreme Java

第一步:到网站http://www.mapinfo.com.cn下载开发控件MapXtreme Java Edition  4.8.0 。

        同时可以下载一些文档说明和sample地图供学习使用。

第二步:运行install.exe文件,跟普通的windows下安装软件一样安装。

        安装成功后,开始菜单中会出现如下所示下拉菜单选项:

查看更多精彩图片

3.2 MapXtreme Java工具的使用

3.2.1 MapXtreme Server

MapXtreme Server是用于生成地图的web服务器,也即是地图服务器。

通过菜单栏中的“Start MapXtreme Server”启动地图服务器。 

 查看更多精彩图片

然后,我们可以打开IE在地址栏中输入http://127.0.0.1:8080/进行访问。 

 查看更多精彩图片

我们可以看到左边的导航条中有很多有用的链接信息。主要包括对tomcat的管理、API文档的说明、地图应用的sample。可以根据自己的兴趣进行点击查看,进行学习。推荐先查看Examples中的Servlet部分,然后查看Documentation中的MapXtreme Java API以便有针对性的学习。 

通过点击菜单目录中的“Stop MapXtreme Server”来关闭地图服务器。

3.2.2 MapXtreme Java Manager

通过点击菜单栏中的“MapXtreme Java Manager-WebServer”启动MapXtreme Java Manager。注意:必须在地图服务器启动以后,MapXtreme Java Manager-WebServer才能正常启动。 

 查看更多精彩图片

MapXtreme Java Manager启动成功以后,会弹出如下的界面: 

 查看更多精彩图片

也可通过菜单目录的“MapXtreme Java Manager-StandAlone”在独立模式下启动MapXtreme Java Manager。后者的启动不依赖于地图服务器的启动与否。二者的区别在于后者启动方式下功能比前者少,不能与地图服务器进行交互。独立模式下启动界面如下图所示:

 查看更多精彩图片

我们可以通过MapXtreme Java Manager客户端对指定格式(*.mdf和*.gst)的地图文件进行查看及编辑,功能十分强大。此客户端还具有web应用程序定制、创建用于命名地图和图层的上下文、管理JDBC连接等高级功能。

 查看更多精彩图片

 

4.构建自己的web gis应用

4.1熟悉MapJ  API

MapJ对象管理地图的状态。该对象维护地图中心和缩放、坐标系、距离单位和共同构成地图的图层。MapJ位于MapXtreme客户机API的最顶端。

打开MapXtreme Java的API文档,选择com.mapinfo.mapj,对类 MapJ中的每个方法的使用我们都应该仔细阅读,因为在开发web gis的过程中我们将会用到。 

 查看更多精彩图片

其中,尤为关键的,我们需要了解如下几个方法:

MapJ对象初始化:MapJ()

加载地图:loadMapDefinition()

设置地图边界:setDeviceBounds()

设置地图中心:setCenter()

设置地图缩放比:setZoom()

4.2 熟悉Javascript中鼠标响应事件

我们在客户端浏览器中往往需要点击地图上的位置进行精确定位,或对地图进行放大、缩小、平移等操作,这时候就需要将客户端的请求提交到服务器端,与地图服务器进行交互。

为了实现客户端与服务器的交互,必须要能捕捉到用户的鼠标响应事件,获得鼠标指针的当前位置等信息。

其中,特别需要关注的鼠标响应事件有:

鼠标按下事件:onmousedown

鼠标松开事件:onmouseup

鼠标指针移动到元素上触发事件:OnMouseOver

此外,还可能需要用到onclick、oncontextmenu、onmousewheel等事件,根据自己开发的web gis应用的需要来选择使用。

4.3 开发一个完整的web gis应用

4.3.1 搭建开发环境

进行web gis开发的编程环境:

支持开发web应用的Java IDE(如MyEclipse、Jbuilder),支持servlet的web应用服务器(如tomcat、weblogic),支持javascript的浏览器(如IE 6.0),标准格式的地图图片(*.gst,*.mdf)。

 

将安装目录中MapXtreme- 4.8.0 /apache-tomcat-5.5/webapps/mapxtreme480复制到自己的应用服务器发布目录下,或者仍沿用安装时MapXtreme默认安装的tomcat来部署地图服务器。 

启动地图服务器,通过访问服务器地址http://127.0.0.1:80/mapxtreme480/servlet/mapxtreme来查看是否部署成功。若显示为一空白页面则表明已部署成功。

4.3.2 编写一个简单的servlet

首先编写一个简单的servlet,后面我们将重写其doGet方法来生成地图。

将安装目录中/MapXtreme- 4.8.0 /lib/common中的文件和/MapXtreme-4.8.0/lib/server中的文件复制到自己的web应用中的/WEB-INF/lib目录下。

,然后启动web服务器,通过浏览器访问servlet看是否运行正常。

org.geotools org.geotools.arcsde org.geotools.arcsde.data org.geotools.arcsde.data.versioning org.geotools.arcsde.data.view org.geotools.arcsde.filter org.geotools.arcsde.gce org.geotools.arcsde.gce.band org.geotools.arcsde.gce.imageio org.geotools.arcsde.gce.producer org.geotools.arcsde.pool org.geotools.axis org.geotools.brewer.color org.geotools.coverage org.geotools.coverage.grid org.geotools.coverage.grid.io org.geotools.coverage.grid.io.imageio org.geotools.coverage.io org.geotools.coverage.processing org.geotools.coverage.processing.operation org.geotools.data org.geotools.data.collection org.geotools.data.crs org.geotools.data.db2 org.geotools.data.db2.filter org.geotools.data.dir org.geotools.data.gml org.geotools.data.gpx org.geotools.data.gpx.temporal org.geotools.data.h2 org.geotools.data.jdbc org.geotools.data.jdbc.attributeio org.geotools.data.jdbc.datasource org.geotools.data.jdbc.fidmapper org.geotools.data.jdbc.referencing org.geotools.data.memory org.geotools.data.mif org.geotools.data.mysql org.geotools.data.oracle org.geotools.data.oracle.attributeio org.geotools.data.oracle.referencing org.geotools.data.oracle.sdo org.geotools.data.ows org.geotools.data.postgis org.geotools.data.postgis.attributeio org.geotools.data.postgis.collection org.geotools.data.postgis.fidmapper org.geotools.data.postgis.referencing org.geotools.data.property org.geotools.data.shapefile org.geotools.data.shapefile.dbf org.geotools.data.shapefile.indexed org.geotools.data.shapefile.indexed.attribute org.geotools.data.shapefile.prj org.geotools.data.shapefile.shp org.geotools.data.shapefile.shp.xml org.geotools.data.store org.geotools.data.tiger org.geotools.data.view org.geotools.data.vpf org.geotools.data.vpf.exc org.geotools.data.vpf.file org.geotools.data.vpf.ifc org.geotools.data.vpf.io org.geotools.data.vpf.readers org.geotools.data.vpf.util org.geotools.data.wfs org.geotools.data.wms org.geotools.data.wms.request org.geotools.data.wms.response org.geotools.data.wms.xml org.geotools.demo org.geotools.demo.data org.geotools.demo.example org.geotools.demo.features org.geotools.demo.geometry org.geotools.demo.introduction org.geotools.demo.jts org.geotools.demo.libraryJTS org.geotools.demo.main org.geotools.demo.mappane org.geotools.demo.metadata.example org.geotools.demo.postgis org.geotools.demo.swing org.geotools.demo.swing.process org.geotools.demo.widgets org.geotools.demo.xml org.geotools.display.canvas org.geotools.display.canvas.map org.geotools.display.event org.geotools.display.geom org.geotools.display.style org.geotools.factory org.geotools.feature org.geotools.feature.collection org.geotools.feature.simple org.geotools.feature.type org.geotools.feature.visitor org.geotools.filter org.geotools.filter.capability org.geotools.filter.expression org.geotools.filter.function org.geotools.filter.function.math org.geotools.filter.identity org.geotools.filter.parser org.geotools.filter.spatial org.geotools.filter.text.cql2 org.geotools.filter.text.txt org.geotools.filter.v1_0 org.geotools.filter.v1_0.capabilities org.geotools.filter.v1_1 org.geotools.filter.v1_1.capabilities org.geotools.filter.visitor org.geotools.gce.arcgrid org.geotools.gce.geotiff org.geotools.gce.geotiff.crs_adapters org.geotools.gce.geotiff.IIOMetadataAdpaters org.geotools.gce.geotiff.IIOMetadataAdpaters.utils org.geotools.gce.geotiff.IIOMetadataAdpaters.utils.codes org.geotools.gce.gtopo30 org.geotools.gce.image org.geotools.gce.imagemosaic org.geotools.gce.imagepyramid org.geotools.geometry org.geotools.geometry.array org.geotools.geometry.coordinatesequence org.geotools.geometry.iso org.geotools.geometry.iso.aggregate org.geotools.geometry.iso.complex org.geotools.geometry.iso.coordinate org.geotools.geometry.iso.index org.geotools.geometry.iso.index.quadtree org.geotools.geometry.iso.io org.geotools.geometry.iso.io.wkt org.geotools.geometry.iso.operation org.geotools.geometry.iso.operation.overlay org.geotools.geometry.iso.operation.relate org.geotools.geometry.iso.primitive org.geotools.geometry.iso.root org.geotools.geometry.iso.topograph2D org.geotools.geometry.iso.topograph2D.index org.geotools.geometry.iso.topograph2D.util org.geotools.geometry.iso.util org.geotools.geometry.iso.util.algorithm2D org.geotools.geometry.iso.util.algorithmND org.geotools.geometry.iso.util.elem2D org.geotools.geometry.iso.util.interpolation org.geotools.geometry.iso.util.topology org.geotools.geometry.jts org.geotools.geometry.jts.coordinatesequence org.geotools.geometry.jts.spatialschema org.geotools.geometry.jts.spatialschema.geometry org.geotools.geometry.jts.spatialschema.geometry.aggregate org.geotools.geometry.jts.spatialschema.geometry.complex org.geotools.geometry.jts.spatialschema.geometry.geometry org.geotools.geometry.jts.spatialschema.geometry.primitive org.geotools.geometry.text org.geotools.gml org.geotools.gml.producer org.geotools.gml2 org.geotools.gml2.bindings org.geotools.gml3 org.geotools.gml3.bindings org.geotools.gml3.bindings.smil org.geotools.gml3.smil org.geotools.gpx org.geotools.gpx.bean org.geotools.gpx.binding org.geotools.graph.build org.geotools.graph.build.basic org.geotools.graph.build.feature org.geotools.graph.build.line org.geotools.graph.build.opt org.geotools.graph.build.polygon org.geotools.graph.io org.geotools.graph.io.standard org.geotools.graph.path org.geotools.graph.structure org.geotools.graph.structure.basic org.geotools.graph.structure.line org.geotools.graph.structure.opt org.geotools.graph.traverse org.geotools.graph.traverse.basic org.geotools.graph.traverse.standard org.geotools.graph.util org.geotools.graph.util.delaunay org.geotools.graph.util.geom org.geotools.graph.util.graph org.geotools.gui.headless org.geotools.gui.swing org.geotools.gui.swing.contexttree org.geotools.gui.swing.contexttree.column org.geotools.gui.swing.contexttree.node org.geotools.gui.swing.contexttree.popup org.geotools.gui.swing.contexttree.renderer org.geotools.gui.swing.crschooser org.geotools.gui.swing.datachooser org.geotools.gui.swing.datachooser.model org.geotools.gui.swing.demo org.geotools.gui.swing.event org.geotools.gui.swing.filter org.geotools.gui.swing.icon org.geotools.gui.swing.image org.geotools.gui.swing.map.map2d org.geotools.gui.swing.map.map2d.control org.geotools.gui.swing.map.map2d.decoration org.geotools.gui.swing.map.map2d.event org.geotools.gui.swing.map.map2d.handler org.geotools.gui.swing.map.map2d.listener org.geotools.gui.swing.map.map2d.strategy org.geotools.gui.swing.misc org.geotools.gui.swing.misc.filter org.geotools.gui.swing.misc.Render org.geotools.gui.swing.process org.geotools.gui.swing.propertyedit org.geotools.gui.swing.propertyedit.filterproperty org.geotools.gui.swing.propertyedit.model org.geotools.gui.swing.propertyedit.styleproperty org.geotools.gui.swing.referencing org.geotools.gui.swing.style org.geotools.gui.swing.style.sld org.geotools.gui.swing.table org.geotools.gui.swing.tree org.geotools.image org.geotools.image.io org.geotools.image.io.metadata org.geotools.image.io.mosaic org.geotools.image.io.netcdf org.geotools.image.io.stream org.geotools.image.io.text org.geotools.image.jai org.geotools.image.palette org.geotools.index org.geotools.index.quadtree org.geotools.index.quadtree.fs org.geotools.index.rtree org.geotools.index.rtree.cachefs org.geotools.index.rtree.database org.geotools.index.rtree.database.mysql org.geotools.index.rtree.fs org.geotools.index.rtree.memory org.geotools.io org.geotools.jdbc org.geotools.kml org.geotools.kml.bindings org.geotools.legend org.geotools.map org.geotools.map.event org.geotools.math org.geotools.measure org.geotools.metadata org.geotools.metadata.iso org.geotools.metadata.iso.citation org.geotools.metadata.iso.constraint org.geotools.metadata.iso.content org.geotools.metadata.iso.distribution org.geotools.metadata.iso.extent org.geotools.metadata.iso.identification org.geotools.metadata.iso.lineage org.geotools.metadata.iso.maintenance org.geotools.metadata.iso.quality org.geotools.metadata.iso.spatial org.geotools.metadata.sql org.geotools.nature org.geotools.openoffice org.geotools.ows org.geotools.ows.bindings org.geotools.ows.v1_1 org.geotools.parameter org.geotools.process org.geotools.process.impl org.geotools.process.literal org.geotools.referencing org.geotools.referencing.crs org.geotools.referencing.cs org.geotools.referencing.datum org.geotools.referencing.example org.geotools.referencing.factory org.geotools.referencing.factory.epsg org.geotools.referencing.factory.wms org.geotools.referencing.operation org.geotools.referencing.operation.builder org.geotools.referencing.operation.matrix org.geotools.referencing.operation.projection org.geotools.referencing.operation.transform org.geotools.referencing.piecewise org.geotools.referencing.wkt org.geotools.renderer org.geotools.renderer.i18n org.geotools.renderer.lite org.geotools.renderer.lite.gridcoverage2d org.geotools.renderer.shape org.geotools.renderer.shape.shapehandler.jts org.geotools.renderer.shape.shapehandler.simple org.geotools.renderer.style org.geotools.repository org.geotools.repository.adaptable org.geotools.repository.defaults org.geotools.repository.postgis org.geotools.repository.property org.geotools.repository.shapefile org.geotools.repository.styling org.geotools.repository.wfs org.geotools.repository.wms org.geotools.sld org.geotools.sld.bindings org.geotools.styling org.geotools.styling.visitor org.geotools.svg org.geotools.test org.geotools.text org.geotools.text.filter org.geotools.util org.geotools.util.logging org.geotools.utils org.geotools.utils.coveragetiler org.geotools.utils.imagemosaic org.geotools.utils.imageoverviews org.geotools.utils.imagepyramid org.geotools.utils.progress org.geotools.validation org.geotools.validation.attributes org.geotools.validation.dto org.geotools.validation.network org.geotools.validation.relate org.geotools.validation.spatial org.geotools.validation.xml org.geotools.wfs org.geotools.wfs.bindings org.geotools.wfs.protocol org.geotools.wfs.v_1_0_0.data org.geotools.wfs.v_1_1_0.data org.geotools.xlink org.geotools.xml org.geotools.xml.filter org.geotools.xml.gml org.geotools.xml.handlers org.geotools.xml.handlers.xsi org.geotools.xml.impl org.geotools.xml.impl.jxpath org.geotools.xml.schema org.geotools.xml.schema.impl org.geotools.xml.styling org.geotools.xml.test org.geotools.xml.transform org.geotools.xml.wfs org.geotools.xml.xLink org.geotools.xml.xsi org.geotools.xs org.geotools.xs.bindings org.geotools.xs.facets
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值