使用Geoserver和Google Earth打造三维GIS展示系统
2010-03-03 15:34
302 查看
官网地址http://geoserver.org/display/GEOSDOC/Google+Earth
使用Geoserver和Google Earth打造三维GIS展示系统
给图层添加高度数据,需要根据实体几何类型分别处理。对于面,例如行政区界或建筑物,需要创建一个高度模板文件。
对于线(点),例如架空电缆,高程将直接从图形数据中读取。
GeoServer 1.7.1及以上版本支持输出三维面的KML(KMZ),1.7.6及以上版本支持输出三维线(点)的KML(KMZ)。
›发布三维面图层:
用Geoserver发布三维面的过程非常简单,测试中我们使用Geoserver自带的示例图层topp:states。
1、用记事本新建一个文本文件(高度模板文件),命名为height.ftl。
2、在文件中加入一行脚本,格式为${ATTRIBUTE.value},ATTRIBUTE是属性字段的名称。
例如states图层有属性字段PERSONS,记录每个州的人口,输入${PERSONS.value?number/100},把高度和人口数建立关系。
3、将height.ftl复制到Geoserver的/data/featureTypes/states/目录下。
4、进入Geoserver地图预览页面,找到topp:states,选择KML,打开Google Earth浏览效果。
效果图1
官方原文见:http://geoserver.org/display/GEOSDOC/04-Height+Templates
作为练习,可以根据官方文档 http://demo.opengeo.org:8080/display/GEOSDOC/05-Super+Overlays+and+Extrudes+with+Building+Data, 发布纽约曼哈顿的建筑物,浏览三维城市效果。
效果图2
›发布三维线图层:
三维线不使用height.ftl文件,因为一条线有两个以上的节点,每个节点可能有不同的高度值,高程直接存放在图形数据(Geometry)的Z坐标中。
Oracle Spatial、PostgreSQL(PostGIS)等数据库都支持存储三维坐标。
Geoserver可以直接发布三维线,测试中使用Oracle Spatial(10g)和PostgreSQL(8.3)作为数据源。
1、在Oracle Spatial(10g)或PostgreSQL(8.3)中存入包含Z坐标的三维线数据,作为测试,可用直接SQL语句插入数据。
2、在Geoserver中发布该图层。
3、进入Geoserver地图预览页面,找到刚才发布的图层,选择KML,打开Google Earth浏览效果。
需要注意的是,默认KML(KMZ)在Google Earth中的实际效果是三维面。
经过查阅KML文档,要实现三维线,需要在KML链接后加上可选参数format_options=extrude:0,例如将 http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL 改为 http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL&format_options=extrude:0
效果图3
Google KML Version 2.2已经获得OGC批准,成为国际标准的数据存储格式。ESRI、INTERGRAPH、MAPINFO在其最新版本软件中提供KML格式输出支持。
Google定义的KML不仅可以包含三维高程数据,还能加入四维时间数据。
本文只涉及三维数据的发布和展示,相关技术文档请参考Google KML和Geoserver KML页面。
Google KML页面:http://code.google.com/apis/kml/documentation/
Geoserver KML页面:http://geoserver.org/display/GEOSDOC/KML+KMZ+Output http://geoserver.org/display/GEOSDOC/Google+Earth+Features 本文涉及的软件环境为:Geoserver 1.7.7、Geoserver 2.0、Google Earth 5.1、Oracle 10.2.0.3、PostgreSQL 8.3.7
使用Geoserver和Google Earth打造三维GIS展示系统
给图层添加高度数据,需要根据实体几何类型分别处理。对于面,例如行政区界或建筑物,需要创建一个高度模板文件。
对于线(点),例如架空电缆,高程将直接从图形数据中读取。
GeoServer 1.7.1及以上版本支持输出三维面的KML(KMZ),1.7.6及以上版本支持输出三维线(点)的KML(KMZ)。
›发布三维面图层:
用Geoserver发布三维面的过程非常简单,测试中我们使用Geoserver自带的示例图层topp:states。
1、用记事本新建一个文本文件(高度模板文件),命名为height.ftl。
2、在文件中加入一行脚本,格式为${ATTRIBUTE.value},ATTRIBUTE是属性字段的名称。
例如states图层有属性字段PERSONS,记录每个州的人口,输入${PERSONS.value?number/100},把高度和人口数建立关系。
3、将height.ftl复制到Geoserver的/data/featureTypes/states/目录下。
4、进入Geoserver地图预览页面,找到topp:states,选择KML,打开Google Earth浏览效果。
效果图1
官方原文见:http://geoserver.org/display/GEOSDOC/04-Height+Templates
作为练习,可以根据官方文档 http://demo.opengeo.org:8080/display/GEOSDOC/05-Super+Overlays+and+Extrudes+with+Building+Data, 发布纽约曼哈顿的建筑物,浏览三维城市效果。
效果图2
›发布三维线图层:
三维线不使用height.ftl文件,因为一条线有两个以上的节点,每个节点可能有不同的高度值,高程直接存放在图形数据(Geometry)的Z坐标中。
Oracle Spatial、PostgreSQL(PostGIS)等数据库都支持存储三维坐标。
Geoserver可以直接发布三维线,测试中使用Oracle Spatial(10g)和PostgreSQL(8.3)作为数据源。
1、在Oracle Spatial(10g)或PostgreSQL(8.3)中存入包含Z坐标的三维线数据,作为测试,可用直接SQL语句插入数据。
2、在Geoserver中发布该图层。
3、进入Geoserver地图预览页面,找到刚才发布的图层,选择KML,打开Google Earth浏览效果。
需要注意的是,默认KML(KMZ)在Google Earth中的实际效果是三维面。
经过查阅KML文档,要实现三维线,需要在KML链接后加上可选参数format_options=extrude:0,例如将 http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL 改为 http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL&format_options=extrude:0
效果图3
Google KML Version 2.2已经获得OGC批准,成为国际标准的数据存储格式。ESRI、INTERGRAPH、MAPINFO在其最新版本软件中提供KML格式输出支持。
Google定义的KML不仅可以包含三维高程数据,还能加入四维时间数据。
本文只涉及三维数据的发布和展示,相关技术文档请参考Google KML和Geoserver KML页面。
Google KML页面:http://code.google.com/apis/kml/documentation/
Geoserver KML页面:http://geoserver.org/display/GEOSDOC/KML+KMZ+Output http://geoserver.org/display/GEOSDOC/Google+Earth+Features 本文涉及的软件环境为:Geoserver 1.7.7、Geoserver 2.0、Google Earth 5.1、Oracle 10.2.0.3、PostgreSQL 8.3.7
相关文章推荐
- 使用Geoserver和Google Earth打造三维GIS展示系统
- 使用Geoserver和Google Earth打造三维GIS展示系统
- WIndows下使用Grafana+InfluxDB打造监控系统
- 使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统
- 路演使用 VHD Native Boot 打造多系统应用环境
- 使用viewpage和动画来打造类是电影海报画廊展示效果
- 使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(一)
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统
- 【监控】使用 Grafana、collectd 和 InfluxDB 打造现代监控系统
- 使用SeasLog打造高性能日志系统
- 使用.NET从零开始打造短信应用系统之一
- 使用.NET从零开始打造短信应用系统之二
- 使用.NET从零开始打造短信应用系统之一
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
- 使用Mcafee打造安全网站以及系统(上)
- AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
- 使用 Grafana、collectd 和 InfluxDB 打造现代监控系统
- 使用麦咖啡打造安全系统
- 图:航天科技集团公司六院“纪念改革开放30周年”演讲比赛使用了专业的比赛评分展示系统[评委计分系统-双屏专业版],渤锐软件提供了相关技术支持