通过 geoserver 空间点查询

场景:鼠标一个点,然后通过该点查询到该点位置叠加的要素

方式一,wms 的getFeature

http://localhost:58080/gs/offices/wms?SERVICE=WMS&VERSION=1.1.1&

REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&

TRANSPARENT=true&QUERY_LAYERS=traffic%3Asz_xzqh_polygon&

LAYERS=traffic%3Asz_xzqh_polygon&exceptions=application%2json&

INFO_FORMAT=application/json&FEATURE_COUNT=50&X=50&Y=50&

SRS=EPSG%3A4326&STYLES=&WIDTH=101&HEIGHT=101&

BBOX=114.08031463623048%2C22.40009307861328%2C114.14966583251955%2C22.469444274902344

关键是:

INFO_FORMAT=application/json

将结果输出设置为json

输入点 x,y,例如 114.114990234375,22.468444,

则组装出 bbox,

即bbox = x-0.0027,y-0.0027,x+0.0027,y+0.0027
然后把bbox塞到url即可。

上面的 0.0027 这个值可以自定义,可以尽量小一点,查询更精确

更详细说明,https://docs.geoserver.org/latest/en/user/services/wms/reference.html

方式二: wfs cql_filter

http://localhost:58080/gs/wfs?service=wfs&version=1.1.0&
request=getfeature&
typename=traffic%3Asz_xzqh_polygon&
PROPERTYNAME=*&
CQL_FILTER=CONTAINS(geom,SRID=4326;POINT(113.98933%2022.59750))&
outputformat=application/json

关键参数:CQL_FILTER

这是一个查询条件,支持属性查询,例如 CQL_FILTER=name=‘南山’
查询 name 为 ‘南山’ 的要素。

CQL_FILTER 同时也支持空间查询,更详细查看官网https://docs.geoserver.org/stable/en/user/tutorials/cql/cql_tutorial.html

刚刚的URL,就是,当点击地图获取该点的经纬度,由该经纬度查询该点当前位置的要素。
其中:
CONTAINS(geom,SRID=4326;POINT(113.98933 22.59750))

CONTAINS是指空间查询函数,即 包含,例如一个点落在一个面上,则返回 true。如果知道postgis的空间查询函数,就更好理解些

CONTAINS的第一个参数是 geom,指向目标图层的几何图形,第二个参数则为我们需要输入的条件,注意格式为 wkt,并且SRID=4326这个不能少,否则可能出现查不出结果

另外,使用BBOX函数也可以,跟wms 一样,组装一个小框框出来。
BBOX(geom, x-0.0027,y-0.0027,x+0.0027,y+0.0027)
例如:
CQL_FILTER=BBOX(geom,114.09789741943361,22.464070223177117,114.09843741943361,22.464610223177118)

这时候bbox不一定起效果,需要再增加一个坐标系:
BBOX(geom, x-0.0027,y-0.0027,x+0.0027,y+0.0027, 'EPSG:4326' )
即最后增加 'EPSG:4326'

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值