时间

警告

本教程中的屏幕截图尚未针对2.0.x用户界面进行更新。但大多数其余的信息都应该是有效的,用户界面大致相同,但使用起来要容易一些。

入门

在本教程中,我们将使用一个shapefile,其中包含一系列西欧国家的互联网用户数信息。

  1. 下载并解压缩 inet_weu.zip

  2. 配置geoserver以服务shapefile inet_weu.zip .(提供教程 发布形状文件

  3. 添加sld“:下载:inet-weu.sld”到geoserver。(教程可用于 造型

  4. 将步骤2中添加的要素类型的样式设置为步骤3中添加的样式

../../../../../_images/style2.png

风格

检查设置

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

../../../../../_images/gettingStarted.png

安装程序

创建模板

接下来,我们将创建一个模板,允许我们指定数据集的时间方面。数据集的模式如下:

INET_P100n

每100人的互联网用户数

NAME

国家名称

RPT_YEAR

几何图形

代表国家的多边形

时间属性是 RPT_YEAR 对我们很重要。好了,是时候创建模板了。

  1. 在您选择的文本编辑器中,创建一个名为 time.ftl .

  2. 添加以下文本:

${RPT_YEAR.value?date('yyyy')}
  1. 将文件保存到 <GEOSERVER_DATA_DIR>/workspaces/topp/inet_weu_shapefile/inet_weu 目录。在哪里? <GEOSERVER_DATA_DIR> 是地理服务器安装的“数据目录”的位置。通常指通过 GEOSERVER_DATA_DIR 环境变量。

有关指定日期格式的详细信息,请参阅参考:`references`部分。

尝试一下

好吧,该试试了。

  1. 导航到http://localhost:8080/geoserver/wms/kml?layers=inet_weu&legend=true。这应该会导致谷歌地球的开放。

../../../../../_images/try1.png

谷歌地球

  1. 在Google Earth中,调整时间条,使其捕获大约1年宽的时间间隔。

../../../../../_images/try2.png

谷歌地球时间条

  1. 随着时间向前滑动时间条,注意多边形颜色的变化。

../../../../../_images/try3.png

滑动时间条

工具书类

指定日期格式

为自己的数据集设置时间模板时,最重要的问题是时间数据的格式。它可能是或可能不是地理服务器可以直接读取的格式。您可以使用以下时间模板检查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:mmhh: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 .日期范围也可以是开放式的:

第一个日期指定开始是开放的日期范围。第二个指定结束是开放的日期范围。