访问量: 130 次浏览
当今世界互联网的飞速发展和普及, 单机或局域网版 GIS软件已不能满足要求, 在浏览器上运行的 GIS 软件——WebGIS 软件应运而生, WebGIS客户端不用加装软件, 打开浏览器就可以使用 GIS各种功能, 使用方便。
地理信息系统是以地理空间位置为基础, 空间位置在计算机中以地理空间数据来表示。一般来讲, 地理空间数据有地图栅格数据 (指 jpg,bmp 等地图文件)和图形元素(指表示实体的点, 线, 几何体)矢量数据,这些数据存放于互联网服务器, 以文件或数据库形式。在本文中介绍了怎样用 Geotools 来获取这些数据。
Freesoft Foundation 开发了一套 Java 库 Geotools,面向 Java 的地图信息处理软件, 用于基于互联网的地图信息互动查询, 实现图层的显示, 放大, 缩小, 相应数据的查询处理, 包含 LEDataStream,dataentry,dbffile,geotools,geotools.classification,geotools.misc,geotools.projections,raster,shapefile,widgets 十个包,viewer ,theme,layer 等多个类。
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 不仅是免费软件,可以在网上下载,而且开发容易, 费用低,维护方便。