3

我试图通过在geoserver中使用WFS GetFeature以GML格式获取一些按日期过滤的数据,但该操作忽略了时间参数,只返回一个包含所有数据的巨大GML文件。这是我正在使用的查询:

http://localhost:8082/geoserver/it.geosolutions/ows?service=WFS&version=1.2.0&request=GetFeature&typeName=it.geosolutions:tsige&time=2011-07-25T00:00:00.0Z/2011-07-25T23:59:59.999Z

据此 WFS GetFeature 操作中应该支持时间参数,所以不知道是什么问题。另外,我有什么替代方法可以按时间过滤 XML 或 JSON 格式的数据,或者其他一些易于解析的格式?

4

1 回答 1

6

并非所有供应商实现都支持所有参数,这是使用 OGC 服务的乐趣之一。另请注意,GeoServer 实现 WFS 1.0.0、1.1.0 和 2.0.0(不是上面示例中的 1.2.0)

您可以使用 OGC 过滤器对(相对冗长的)POST 请求执行您想要的操作,这可能适用于 GET,但我将把它作为练习留给读者...

<wfs:GetFeature 
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:gml="http://www.opengis.net/gml"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:ows="http://www.opengis.net/ows"
  xmlns:wfs="http://www.opengis.net/wfs"
  xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
service="WFS" version="1.1.0" outputFormat="JSON">
  <wfs:Query typeName="it.geosolutions:tsige" srsName="EPSG:4326">
    <ogc:Filter>
      <ogc:And>
        <ogc:PropertyIsGreaterThanOrEqualTo>
          <ogc:PropertyName>your-time-variabe-here</ogc:PropertyName>
          <ogc:Function name="dateParse">
            <ogc:Literal>yyyy-MM-dd</ogc:Literal>
            <ogc:Literal>2011-07-25</ogc:Literal>
          </ogc:Function>
        </ogc:PropertyIsGreaterThanOrEqualTo>
        <ogc:PropertyIsLessThan>
          <ogc:PropertyName>your-time-variable-here</ogc:PropertyName>
          <ogc:Function name="dateParse">
            <ogc:Literal>yyyy-MM-dd</ogc:Literal>
            <ogc:Literal>2011-07-26</ogc:Literal>
          </ogc:Function>
        </ogc:PropertyIsLessThan>
      </ogc:And>
    </ogc:Filter>
  </wfs:Query>
</wfs:GetFeature>

您可以使用 curl 将请求保存为wfs.xml

curl -d @wfs.xml -H "Content-Type: application/xml" "http://localhost:8082/geoserver/it.geosolutions/ows"
于 2014-08-29T05:14:25.103 回答