基于 geotools 实现 WebGIS 应用软件

基于 geotools 实现 WebGIS 应用软件


发布日期: 2016-10-27 更新日期: 2016-10-27 编辑:黄馨宁 浏览次数: 3867

标签:

摘要: 当今世界互联网的飞速发展和普及, 单机或局域网版 GIS软件已不能满足要求, 在浏览器上运行的 GIS 软件——WebGIS 软件应运而生, WebGIS客户端不用加装软件, 打开浏览器就可以使用 GIS各种功能, 使用方便。 地理空间数据的获取 地理信息系统...

当今世界互联网的飞速发展和普及, 单机或局域网版 GIS软件已不能满足要求, 在浏览器上运行的 GIS 软件——WebGIS 软件应运而生, WebGIS客户端不用加装软件, 打开浏览器就可以使用 GIS各种功能, 使用方便。

地理空间数据的获取

地理信息系统是以地理空间位置为基础, 空间位置在计算机中以地理空间数据来表示。一般来讲, 地理空间数据有地图栅格数据 (指 jpg,bmp 等地图文件)和图形元素(指表示实体的点, 线, 几何体)矢量数据,这些数据存放于互联网服务器, 以文件或数据库形式。在本文中介绍了怎样用 Geotools 来获取这些数据。

Geotools 介绍

Freesoft Foundation 开发了一套 Java 库 Geotools,面向 Java 的地图信息处理软件, 用于基于互联网的地图信息互动查询, 实现图层的显示, 放大, 缩小, 相应数据的查询处理, 包含 LEDataStream,dataentry,dbffile,geotools,geotools.classification,geotools.misc,geotools.projections,raster,shapefile,widgets 十个包,viewer ,theme,layer 等多个类。

ESRI shapefile 介绍

Geotools 本身没有地图数据文件, 它利用 ESRIshapefile 文件。shapefile 用一种简单非拓扑格式存储图形元素的位置数据, 属性数据, 包括一个主文件(.shp), 一个数据文件(.dbf), 一个索引文件(*.shx)。主文件记录地图元素的位置数据, 数据文件记录地图元素的属性数据, 索引文件记录位置数据的索引。

解决方案

Geotools 提供两个类 ImageLayer 和 ShapefileRead-er. ImageLayer 用于从 Web 服务器读地图栅格文件,如jpg,bmp 等, ShapefileReader 用于从 Web 服务器下载shapefile 文件, 这样巧妙地利用 Web 服务器传送文件,又解决了地理空间数据的获取问题,示意如下:Applet 和地理空间数据文件存放于 Web 服务器.在 Applet 构造二个类 ImageLayer 和 ShapefileReader,获取地理空间数据文件,程序如下: <pre class="brush:py"> 加载地图: URL imageURL = new URL(url,imageString); ImageLayer iLayer=new ImageLayer(imageURL,ex- tent); Theme currentTheme=new Theme(iLayer); view.addTheme(currentTheme); 加载 shapefile 文件: URL url = new URL(url,shapefile); ShapefileReader sfr = new ShapefileReader(url); Layer layer=sfr.getLayer(); Theme t = new Theme(layer) view.addTheme(t);

</pre> view 为 geotools 的 Viewer 类对象,Viewer 是地理空间数据在 applet 中显示的中间体,以 Theme 生成的地理空间数据加载到 Viewer 中显示。用户打开浏览器下载 applet,applet 下载地理空间数据文件并显示。属性数据存放于数据库, 通过 JDBC API 读取数据。JD-BC API 定义了 Java 中的类和接口, 表示数据库连接、SQL 指令、结果集合等。它允许 Java 程序员发送 SQL指令并处理结果。使用时需要下载面向底层数据库厂商的 JDBC Drivers。考虑到互联网数据库连接的耗时和效率, 还要使用数据库连接池。数据库连接池就是将数据库连接存放在管理器中, 基于数据库的 Web 应用只需建立一次初始连接, 不同页面请求共享同一连接。使用数据库连接池能获得显著的性能改善。用 JDBC 访问数据库首先从连接池获得与数据库之间的连接, 获得一个连接对象(Connection), 由连接对象提供执行 SQL 语句的方法。程序如下: <pre class="brush:py"> ConnectPool connectionPool =ConnectionPool.get- Pool(URL, user, password, JDBCDriver, maxConns, time- Out, initConn); Connection conn=connectionPool.getConnection() ; Statement stmt=conn.createStatement(); ResultSet rs = stmt.executeQuery(sql);

</pre>

应用公共软件 Geotools 直接从web 服务器(如 microsoft IIS)读取 WebGIS 软件所需的地理空间数据, 服务器端不需额外加装软件, 从而以一种结构简单, 成本低的方式开发 WebGIS 软件, 对比其他复杂且昂贵的软件来说,Geotools 不仅是免费软件,可以在网上下载,而且开发容易, 费用低,维护方便。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org