时间¶
警告
本教程中的屏幕截图尚未针对2.0.x用户界面进行更新。但大多数其余的信息都应该是有效的,用户界面大致相同,但使用起来要容易一些。
入门¶
在本教程中,我们将使用一个shapefile,其中包含一系列西欧国家的互联网用户数信息。
下载并解压缩
inet_weu.zip
配置geoserver以服务shapefile
inet_weu.zip
.(提供教程 发布形状文件 )添加sld“:下载:inet-weu.sld”到geoserver。(教程可用于 造型 )
将步骤2中添加的要素类型的样式设置为步骤3中添加的样式

风格¶
检查设置¶
如果所有配置都正确,您应该能够导航到http://localhost:8080/geoserver/wms/kml?layers=topp:inet_-weu&format=openlayers&bbox=-33.780,26.266,21.005,56.427,见下图:

安装程序¶
创建模板¶
接下来,我们将创建一个模板,允许我们指定数据集的时间方面。数据集的模式如下:
INET_P100n |
每100人的互联网用户数 |
NAME |
国家名称 |
RPT_YEAR |
年 |
几何图形 |
代表国家的多边形 |
时间属性是 RPT_YEAR
对我们很重要。好了,是时候创建模板了。
在您选择的文本编辑器中,创建一个名为
time.ftl
.添加以下文本:
${RPT_YEAR.value?date('yyyy')}
将文件保存到
<GEOSERVER_DATA_DIR>/workspaces/topp/inet_weu_shapefile/inet_weu
目录。在哪里?<GEOSERVER_DATA_DIR>
是地理服务器安装的“数据目录”的位置。通常指通过GEOSERVER_DATA_DIR
环境变量。
有关指定日期格式的详细信息,请参阅参考:`references`部分。
尝试一下¶
好吧,该试试了。
导航到http://localhost:8080/geoserver/wms/kml?layers=inet_weu&legend=true。这应该会导致谷歌地球的开放。

谷歌地球¶
在Google Earth中,调整时间条,使其捕获大约1年宽的时间间隔。

谷歌地球时间条¶
随着时间向前滑动时间条,注意多边形颜色的变化。

滑动时间条¶
工具书类¶
指定日期格式¶
为自己的数据集设置时间模板时,最重要的问题是时间数据的格式。它可能是或可能不是地理服务器可以直接读取的格式。您可以使用以下时间模板检查geoserver是否可以直接使用日期/时间格式。这是一个没有显式格式的时间模板文件(time.ftl)示例。
${DATETIME_ATTRIBUTE_NAME.value}
虽然geoserver将尽力解析数据,但在某些情况下,您的数据的格式是无法解析的。发生这种情况时,必须明确指定格式。幸运的是,FreeMarker为我们提供了这样做的功能。
考虑日期时间 12:30 on January 01, 2007
以以下格式指定: 01?01%2007&12$30!00
.在创建模板时,我们需要用date time函数显式地告诉freemaker日期时间的格式。这是一个具有显式格式的时间模板文件(time.ftl)示例:::
${DATETIME_ATTRIBUTE_NAME.value?datetime("M?d%y&H:m:s")}
这个过程对于日期(没有时间)是相似的。日期 01?01%2007
将在具有显式格式的模板中指定:
${DATETIME_ATTRIBUTE_NAME.value?date("M?d%y")}
那么,什么时候必须以这种方式指定日期格式呢?下表说明了 date geoserver可以理解的格式。请注意,“-”字符可以是以下任意字符之一:“/”(正斜杠)、“”(空格)、“”(句点)、“,”(逗号)
日期格式 |
Example |
每天 |
2007-06-20 |
年-月-日 |
2007年6月20日 |
年月日 |
2007年6月20日 |
年月日 |
2007年6月20日 |
年-月-日 |
2007年6月20日 |
年月日 |
2007年6月20日 |
一套 date time geoserver可以理解的格式是通过附加时间戳格式形成的。 hh:mm
和 hh:mm:ss
上表中的条目:
日期时间格式 |
Example |
年-月-日hh:mm |
2007年6月20日12:30 |
年-月-日-时:分 |
2007年6月20日12:30 |
年-月-日hh:mm:ss |
2007年6月20日12:30:00 |
年-月-日hh:mm:ss |
2007年6月20日12:30:00 |
警告
设置时区
注意kml输出 date time 格式将反映Java虚拟机的时区,可以在启动脚本中使用USER时区参数设置。例如,以下命令使用协调世界时(UTC)时区启动geoserver。
exec "$_RUNJAVA" -DGEOSERVER_DATA_DIR="$GEOSERVER_DATA_DIR"
-Djava.awt.headless=true -DSTOP.PORT=8079
-Duser.timezone=UTC
-DSTOP.KEY=geoserver -jar start.jar
如果没有设置时区,它将默认为操作系统的时区。
指定日期范围¶
在上面的示例中,为数据集输出一个时间戳。geoserver还支持通过模板指定日期范围。范围的语法是:
其中begin是范围中的第一个日期,end是范围中的最后一个日期,是两者之间的分隔符。例如:
日期范围是从吗 January 1, 2007
结束 June 1, 2007
.日期范围也可以是开放式的:
第一个日期指定开始是开放的日期范围。第二个指定结束是开放的日期范围。