利用GeoServer进行跨图层空间查询

news2024/12/28 2:42:33

Cross-layer filtering

跨层过滤提供了从层A中查找与层B中的特征具有特定关系的特征的能力。例如,这可以用于查找距离指定商店给定距离内的所有公交车站,或者查找指定城区内的所有咖啡店。

querylayer模块添加了实现跨层过滤的过滤功能。这些功能通过查询应用于主图层的过滤器中的辅助图层来工作。辅助层的名称和要从中提取的属性作为参数提供,同时提供ECQL过滤器表达式以确定感兴趣的功能。一个常见的用例是提取几何体值的属性,然后将空间谓词中的值用于主层中的几何体属性。
GeoServer广泛支持过滤器功能,因此跨层过滤可以在SLD规则、WMSWFS请求中使用,也可以在XMLCQL过滤器中使用。

安装querylayer模块

访问网站下载页面,找到版本,然后下载:geoserver-2.23.x-querylayer-plugin.zip

注意 扩展的版本必须与GeoServer实例的版本匹配。

  1. 将扩展归档的内容提取到GeoServer安装的WEB-INF/lib目录中。
  2. 要检查模块是否正确安装,请从GeoServer主页请求WFS 1.1功能。Filter_Cabilities部分应包含对名为queryCollection的函数的引用。
...
 <ogc:Filter_Capabilities>
  ...
  <ogc:ArithmeticOperators>
    ...
    <ogc:Functions>
      <ogc:FunctionNames>
        ...
        <ogc:FunctionName nArgs="-1">queryCollection</ogc:FunctionName>
        <ogc:FunctionName nArgs="-1">querySingle</ogc:FunctionName>
        ...
      </ogc:FunctionNames>
    </ogc:Functions>
  </ogc:ArithmeticOperators>
</ogc:Scalar_Capabilities>
...
 </ogc:Filter_Capabilities>
 ...

函数说明

该扩展提供了以下过滤器功能,以支持跨层过滤。

名称参数说明
querySinglelayer:String,
attribute:String,
filter:String
Queries the specified layer applying the specified ECQL filter and
returns the value of attribute from the first feature in the result set.
The layer name must be qualified (e.g. topp:states).
If no filtering is desired use the filter INCLUDE.
queryCollectionlayer:String,
attribute:String,
filter:String
Queries the specified layer applying the specified ECQL filter and
returns a list containing the value of attribute for every feature in the result set.
The layer name must be qualified (e.g. topp:states).
If no filtering is desired use the filter INCLUDE. An exception is thrown
if too many results are collected (see Memory Limits).
collectGeometriesgeometries: a list of Geometry objectsConverts a list of geometries into a single Geometry object.
The output of queryCollection must be converted by this function
in order to use it in spatial filter expressions (since geometry lists cannot be used directly).
An exception is thrown if too many coordinates are
collected (see Memory Limits).

性能优化

在GeoServer 2.1.x系列中,为了使跨层过滤器以最佳性能执行,启动JVM时需要指定以下系统变量:

-Dorg.geotools.filter.function.simplify=true

这样可以确保每个查询对函数求值一次,而不是对每个结果特性求值一次。GeoServer 2.2.x系列不需要此标志。(希望这种行为也能成为2.1.x中的默认行为。)

内存限制

queryCollection和collectGeometries函数不执行真正的数据库样式联接。相反,它们每次执行时都会对辅助层执行查询,并将整个结果加载到内存中。因此,如果查询结果集非常大,或者如果收集的几何图形非常大,则函数有使用过多服务器内存的风险。为了防止影响服务器稳定性,可以处理的数据量有内置限制:

  • queryCollection最多收集1000个功能
  • collectGeometry最多收集37000个坐标(相当于1MB的坐标对象)

可以通过为以下参数设置备用值来覆盖这些限制(这可以使用JVM系统变量、servlet上下文变量或环境变量来完成):

  • QUERY_LAYER_MAX_FEATURES控制queryCollection收集的最大特征数
  • GEOMETRY_COLLECT_MAX_COORDINATES控制collectGeometry收集的最大坐标数

WMS示例

以下示例使用标准GeoServer下载中提供的sf:bugsitessf:roadssf:restricted演示层。

  • 仅显示与类别为3的限制区域重叠的bug站点

错误站点层上的CQL跨层筛选器为:

INTERSECTS(the_geom, querySingle('restricted', 'the_geom','cat = 3'))

WMS 请求:

http://localhost:8080/geoserver/wms?LAYERS=sf%3Aroads%2Csf%3Arestricted%2Csf%3Abugsites&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A26713&CQL_FILTER=INCLUDE%3BINCLUDE%3BINTERSECTS(the_geom%2C%20querySingle(%27restricted%27%2C%20%27the_geom%27%2C%27cat%20%3D%203%27))&BBOX=589081.6705629,4914128.1213261,609174.02430924,4928177.0717971&WIDTH=512&HEIGHT=358

结果:

结果

显示任何道路200米范围内的所有错误站点

错误站点层上的CQL跨层筛选器为:

DWITHIN(the_geom, collectGeometries(queryCollection('sf:roads','the_geom','INCLUDE')), 200, meters).

WMS请求:

http://localhost:8080/geoserver/wms?LAYERS=sf%3Aroads%2Csf%3Arestricted%2Csf%3Abugsites&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A26713&CQL_FILTER=INCLUDE%3BINCLUDE%3BDWITHIN(the_geom%2C%20collectGeometries(queryCollection(%27sf%3Aroads%27%2C%27the_geom%27%2C%27INCLUDE%27))%2C%20200%2C%20meters)&BBOX=589042.42768447,4914010.3926913,609134.78143081,4928059.3431623&WIDTH=512&HEIGHT=358

结果为:

结果

WFS示例

以下示例使用标准GeoServer下载中提供的sf:bugsitessf:roadssf:restricted演示层。

  • 仅检索类别为3的与限制区域重叠的bug站点:
 <wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
              xmlns:sf="http://www.openplans.org/spearfish"
              xmlns:ogc="http://www.opengis.net/ogc"
              service="WFS" version="1.0.0">
<wfs:Query typeName="sf:bugsites">
  <ogc:Filter>
    <ogc:Intersects>
      <ogc:PropertyName>the_geom</ogc:PropertyName>
      <ogc:Function name="querySingle">
         <ogc:Literal>sf:restricted</ogc:Literal>
         <ogc:Literal>the_geom</ogc:Literal>
         <ogc:Literal>cat = 3</ogc:Literal>
      </ogc:Function>
    </ogc:Intersects>
  </ogc:Filter>
</wfs:Query>
 </wfs:GetFeature>
  • 检索任何道路200米范围内的所有故障点:
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
xmlns:sf="http://www.openplans.org/spearfish"
xmlns:ogc="http://www.opengis.net/ogc"
service="WFS" version="1.0.0">
<wfs:Query typeName="sf:bugsites">
  <ogc:Filter>
    <ogc:DWithin>
      <ogc:PropertyName>the_geom</ogc:PropertyName>
      <ogc:Function name="collectGeometries">
        <ogc:Function name="queryCollection">
          <ogc:Literal>sf:roads</ogc:Literal>
          <ogc:Literal>the_geom</ogc:Literal>
          <ogc:Literal>INCLUDE</ogc:Literal>
        </ogc:Function>
      </ogc:Function>
      <ogc:Distance units="meter">100</ogc:Distance>
    </ogc:DWithin>
  </ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/954022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十一、装饰器模式

一、什么是装饰器模式 装饰器&#xff08;Decorator&#xff09;模式的定义&#xff1a;指在不改变现有对象结构的情况下&#xff0c;动态地给该对象增加一些职责&#xff08;即增加其额外功能&#xff09;的模式&#xff0c;它属于对象结构型模式。 装饰器模式主要包含以下角色…

你的家乡清晰可见,全国卫星影像100%覆盖!

向上数三代&#xff0c;祖辈皆农民&#xff01; 无论是坐在高楼大厦里的白领&#xff0c;各种机构的公职人员&#xff0c;还是奔跑在大街小巷的外卖小哥&#xff0c;他们的根几乎皆在农村&#xff0c;当然应该也包括你和我&#xff01; 如何通过高清卫星影像看家乡的变化&…

企业如何充分借助大数据下精准营销?

技术的发展和智能终端的普及移动互联网用户的大规模增长使移动互联网快速发展&#xff0c;使中国移动互联网软件进入移动互联网时代越来越多地涉及到改变生活大家习惯。移动互联网时代的到来也意味着大数据时代的到来。精准营销数据方法&#xff0c;移动互联网和大数据的兴起不…

java八股文面试[多线程]——AQS 详细介绍

线程同步除了Synchronized Volatile ReentranLock 之外&#xff0c;还有其他一些用来进行同步的机制。 AQS 简单介绍 AQS 的全称为&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff0c;这个类在 java.util.concurrent.locks 包下面。 AQS 是一个用来构建锁和同步器…

git submodule 子模块的基本使用

背景 浏览开源库的时候经常会看到如下子模块的引用情况。 子模块通常是项目比较复杂&#xff0c;需要对项目进行拆分&#xff0c;而项目又有引用关系时会使用。通常拆分项目后&#xff0c;我只需要关注自己的项目更改&#xff0c;不需要关注引用的项目都做了哪些更改。 通常…

为什么删除Windows 11上的Bloatware可以帮助加快你的电脑速度

如果你感觉你的电脑迟钝&#xff0c;彻底清除软件会有所帮助&#xff0c;而且这个过程对Windows用户来说越来越容易。 微软正在使删除以前难以删除的其他预装Windows应用程序成为可能。专家表示&#xff0c;这项新功能可能会改变用户的游戏规则。 科技公司Infatica的主管Vlad…

23款奔驰GLS400升级柏林之声音响系统,体验不一样的感觉

Burmester 环绕立体声音响系统–为每位乘员打造令人印象深刻的音质13个高性能扬声器、总功率为590瓦的9声道数字信号处理器(DSP)放大器以及放大器/扬声器系统专为车辆配置&#xff0c;打造出一流的Burmester之音。必要时还可进一步提升令人印象深刻的听觉体验。声音环绕功能能够…

如何在Windows本地快速搭建SFTP文件服务器,并通过端口映射实现公网远程访问

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

对于uts namespace共享的测试

前言 单单以下列命令运行虽然是root&#xff0c;还不行&#xff0c;我们需要加--privileged&#xff0c;不然会报 hostname: you must be root to change the host name docker run -it --utshost ubuntu:latest /bin/bash 如果加上--privileged后 docker run -it --priv…

0727开发问题小结分享

Hi&#xff0c;我是阿昌&#xff0c;今天记录分析下关于0727开发问题小结分享的内容。 总结汇总了一些在开发问题&#xff0c;或者需要开发注意点&#xff1b; 一、内容概览 ● 问题驱动思维 ● 数据库 ● javaee & 框架 ● 服务治理 ● 三方服务 & 迁移操作 二、问…

北大C++课后记录:自增、自减运算符重载的小Demo

前言 自增、自减运算符有前置&#xff08;x&#xff09;和后置&#xff08;x&#xff09;之分&#xff0c;为了对其进行区分&#xff0c;C规定&#xff1a; 前置运算符作为一元运算符进行重载&#xff1a;&#xff08;注意T1对象和T2对象是有差异的&#xff09; 后置运算符作…

DT 变形学习

弯曲变形 扩张变形 正弦变形 挤压变形 扭曲变形 波浪变形 内外的影响 雕刻 抖动变形 混合变形 晶格变形 包裹变形 线条变形 重置 在测试一个

资本寒冬下,YOUMAGIC单极射频为何吸金过亿?

整个消费社会投融资周期的变化&#xff0c;已经从前几年的升温、火热&#xff0c;来到了如今降温、遇冷的阶段。IT桔子数据显示&#xff0c;今年上半年零售消费相关领域共发生297起融资&#xff0c;而去年同期为662起。不管是融资事件总数还是披露融资金额&#xff0c;都双双大…

在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答

您可以通过集简云数据流程&#xff0c;将语聚AI助手集成到抖音视频评论、抖音私信&#xff0c;实现自动回复用户视频评论、私信问答&#xff0c;大大提升账号互动与运营效率。 效果如下&#xff1a; 自动化流程&#xff1a; ● 抖音普通号评论对接语聚AI&#xff08;点击可一…

idea 常用插件和常用快捷键 - 记录

idea 常用插件 记得下载插件完成后&#xff0c;点击 Apply 和 OK Alibaba Java Coding Guidelines 作用&#xff1a;使用该插件可以&#xff0c;自动提示相关的语法格式问题&#xff0c;格式参考 阿里巴巴代码规范 详情链接&#xff1a; 代码规范之Alibaba Java Coding G…

广度优先搜索算法 BFS

广度优先搜索算法&#xff08;Breadth-First Search, BFS&#xff09; 算法思路 广度优先搜索&#xff08;BFS&#xff09;是一种用于图和树的遍历算法。该算法从一个给定的节点&#xff08;起始节点&#xff09;开始&#xff0c;探索所有该节点的邻居节点。然后对每个邻居节点…

大数据学习06-Spark分布式集群部署

Spark完全分布式部署 前期准备&#xff0c;每台服务器都需要配置安装Scala下载Scala安装包配置环境变量 安装spark解压配置环境修改配置 前期准备&#xff0c;每台服务器都需要配置 配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"Ethernet" PROX…

iSCSI存储服务器

目录 一、ISCSI是什么&#xff1f; 二、ISCSI产生背景 三、存储分类 四、ISCSI架构 五、ISCSI存储服务搭建案例 一、ISCSI是什么&#xff1f; ISCSI名为互联网小型计算机系统接口又称为IP-SAN&#xff0c;是一种新的远程存储技术&#xff0c;提供存储服务的目标服务器默认使用的…

开启EMQX的SSL模式及SSL证书生成流程

生成证书 首先&#xff1a;需要安装Openssl 以下是openssl命令 生成CA证书 1.openssl genrsa -out rootCA.key 2048 2.openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -subj "/CCN/STShandong/Ljinan/Oyunding/OUplatform/CNrootCA" -out ro…

一站式低代码开发平台iVX初探

在数字化时代的浪潮中&#xff0c;低代码已经逐渐成为一种趋势和潮流。作为国内首个图形化通用无代码编程平台&#xff0c;iVX提供了一款强大、高效、易学的零代码开发语言和全生命周期一站式云原生应用开发工具&#xff0c;无疑为低代码界带来了一场革命。 1、什么是低代码&a…