使用地理工具功能预生成模块¶
警告
本教程中的屏幕截图尚未针对2.0.x用户界面进行更新。但大多数其余的信息都应该是有效的,用户界面大致相同,但使用起来要容易一些。
介绍¶
本教程演示如何在geoserver中使用geotools功能预生成模块。功能预生成模块用于提高性能、降低内存使用率和IO流量。
备注
矢量泛化为给定目的减少几何体的顶点数。在屏幕上绘制具有500000个顶点的多边形毫无意义。少量的顶点足以绘制多边形的拓扑正确图。
本模块需要具有通用几何图形的功能,根据需要选择最适合的几何图形。
完整的文档可在 GeoTools Pregeneralized Plugin 文档。
本教程将展示两种可能的场景,一步一步地解释如何在geoserver中使用此模块。
入门¶
首先,找到地理服务器数据目录的位置。启动geoserver时,此信息包含在日志文件中。::
----------------------------------
- GEOSERVER_DATA_DIR: /home/mcr/geoserver-1.7.x/1.7.x/data/release
----------------------------------
在这个目录中,我们必须放置形状文件。已经有一个子目录 data
将被使用。在此子目录中,创建一个目录 streams
.
内 {GEOSERVER_DATA_DIR}/data/streams
创建另一个子目录 0
. (0表示“无广义几何”)。
本教程基于Shape文件,您可以从此处下载 Streams
。将此文件解压缩到 GEOSERVER_DATA_DIR/data/streams/0
。
寻找 WEB-INF/lib/
地理服务器安装的目录。必须有一个名为 gt-feature-pregeneralized-{version}-jar
. 这个jar文件包含一个通用化形状文件的工具。打开命令行并执行以下操作:
cd <GEOSERVER_DATA_DIR>/data/streams/0
java -jar <GEOSERVER_INSTALLATION>/WEB-INF/lib/gt-feature-pregeneralized-{version}.jar generalize 0/streams.shp . 5,10,20,50
您应该看到以下输出:
Shape file 0/streams.shp
Target directory .
Distances 5,10,20,50
% |################################|
现在有四个附加目录 5.0
, 10.0
, 20.0
, 50.0
. 查看扩展名为 shp
在这些目录中,增大泛化距离会减小文件大小。
备注
广义几何图形可以存储在特征的附加属性中,也可以复制特征。混合变化也是可能的。因为我们使用的是形状文件,所以必须复制这些功能。
我们有两种可能部署我们的通用形状文件。
部署隐藏(对用户不可见)
将每个通用形状文件部署为单独的地理服务器功能
公共部署¶
首先,我们必须配置所有形状文件

这个 要素数据集ID 其他形状文件是
Streams_5
Streams_10
Streams_20
Streams_50

这个 URL 其他形状文件所需的
file:data/streams/5.0/streams.shp
file:data/streams/10.0/streams.shp
file:data/streams/20.0/streams.shp
file:data/streams/50.0/streams.shp

每个功能都需要 别名 ,给你 streams_0 . 对于其他形状文件使用
streams_5
streams_10
streams_20
streams_50
按检查结果 My GeoServer , Demo 和 Map Preview . 你应该看看你的附加层。
不,我们需要另一个XML配置文件
<?xml version="1.0" encoding="UTF-8"?>
<GeneralizationInfos version="1.0">
<GeneralizationInfo dataSourceNameSpace="topp" dataSourceName="Streams_0" featureName="GenStreams2" baseFeatureName="streams" geomPropertyName="the_geom">
<Generalization dataSourceNameSpace="topp" dataSourceName="Streams_5" distance="5" featureName="streams" geomPropertyName="the_geom"/>
<Generalization dataSourceNameSpace="topp" dataSourceName="Streams_10" distance="10" featureName="streams" geomPropertyName="the_geom"/>
<Generalization dataSourceNameSpace="topp" dataSourceName="Streams_20" distance="20" featureName="streams" geomPropertyName="the_geom"/>
<Generalization dataSourceNameSpace="topp" dataSourceName="Streams_50" distance="50" featureName="streams" geomPropertyName="the_geom"/>
</GeneralizationInfo>
</GeneralizationInfos>
将此文件另存为 geninfo_shapefile2.xml
进入之内 {GEOSERVER_DATA_DIR}/data/streams
.
创建预生成的数据存储

现在我们使用 CatalogRepository 类查找所需的数据存储

最后一步

在 Map Preview 你应该找到 TOP:发电流2 以及所有其他的概括。以我们在隐藏部署中讨论的相同方式进行测试,您应该在GeoServer日志中看到如下内容:
May 20, 2009 6:11:06 PM org.geotools.data.gen.PreGeneralizedFeatureSource logDistanceInfo
INFO: Using generalizsation: Streams_20 streams the_geom 20.0
May 20, 2009 6:11:08 PM org.geotools.data.gen.PreGeneralizedFeatureSource logDistanceInfo
INFO: Using generalizsation: Streams_10 streams the_geom 10.0
May 20, 2009 6:11:12 PM org.geotools.data.gen.PreGeneralizedFeatureSource logDistanceInfo
INFO: Using generalizsation: Streams_10 streams the_geom 10.0
结论¶
这只是一个使用形状文件的非常简单的示例。插件架构允许您从任何地方获取数据和概括。使用的数据集非常小,因此您不会感到响应时间有很大的差异。拥有大的几何体(在许多顶点的意义上)和用一些不同的层创建地图将显示出差异。