我来把你构造的这个 WMS GetFeatureInfo URL 逐个参数解释一下,方便你理解:
http://127.0.0.1:8090/geoserver/xxxx/wms?
SERVICE=WMS&
VERSION=1.1.1&
REQUEST=GetFeatureInfo&
QUERY_LAYERS=loess:yourLayer&
LAYERS=loess:yourLayer&
STYLES=&
FORMAT=image/png&
TRANSPARENT=TRUE&
INFO_FORMAT=application/json&
TILED=true&
SRS=EPSG:4326&
BBOX=west,south,east,north&
WIDTH=xxx&
HEIGHT=xxx&
X=xxx&
Y=xxx
📌 参数说明
-
SERVICE=WMS
- 指定服务类型是 Web Map Service。
-
VERSION=1.1.1
-
使用的 WMS 协议版本。
-
WMS 1.1.1 → 用
SRS
,经纬度顺序是lon,lat
。 -
WMS 1.3.0 → 用
CRS
,经纬度顺序是lat,lon
(EPSG:4326 时会反过来)。
-
-
REQUEST=GetFeatureInfo
-
请求类型,这里是查询地图某个像素点对应的要素信息。
-
其它常见请求:
GetMap
(取图像)、GetCapabilities
(获取服务元数据)。
-
-
QUERY_LAYERS=loess:yourLayer
-
指定要查询的图层(可以是一个或多个)。
-
必须与
LAYERS
里的一致。
-
-
LAYERS=loess:yourLayer
-
表示当前地图请求的显示图层。
-
注意:
LAYERS
是告诉服务端当前渲染哪些图层,而QUERY_LAYERS
是告诉服务端要在这些图层里查属性。
-
-
STYLES=
-
样式,这里为空,表示使用默认样式。
-
如果你在 GeoServer 里配置了 SLD,可以指定样式名称。
-
-
FORMAT=image/png
- 图像输出格式(虽然我们要的是属性信息,但
GetFeatureInfo
必须基于一个GetMap
请求,仍需指定图像格式)。
- 图像输出格式(虽然我们要的是属性信息,但
-
TRANSPARENT=TRUE
-
是否允许透明背景。
-
常用于叠加图层。
-
-
INFO_FORMAT=application/json
-
属性信息的输出格式。
-
常见可选值:
text/plain
、text/html
、application/json
、application/vnd.ogc.gml
。 -
推荐用
application/json
,方便前端解析。
-
-
TILED=true
-
表示请求的地图是切片(tile)方式。
-
有些客户端会加,有些可以不加。
-
-
SRS=EPSG:4326
-
指定空间参考坐标系。
-
EPSG:4326
→ WGS84 经纬度。 -
需要与你的 GeoServer 发布的图层坐标系一致。
-
-
BBOX=west,south,east,north
-
当前视图的地理范围(最小经度,最小纬度,最大经度,最大纬度)。
-
用来定义 "地图图像的空间范围"。
-
-
WIDTH=xxx
/HEIGHT=xxx
-
请求图像的宽度和高度(像素)。
-
X/Y
是基于这个宽高的像素位置。 -
一定要和前端算
X/Y
的时候用的宽高一致。
-
-
X=xxx
/Y=xxx
-
用户点击位置对应的图像像素坐标。
-
注意:这里不是屏幕坐标,而是相对于 BBOX 和 WIDTH/HEIGHT 计算出来的像素位置。
-
X=0
表示最左边,X=WIDTH
表示最右边;
Y=0
表示最上边,Y=HEIGHT
表示最下边。
-
📝 小结
-
地图范围 :
BBOX + SRS
-
地图图像大小 :
WIDTH + HEIGHT
-
点击位置 :
X + Y
(相对图像像素,而不是屏幕坐标) -
输出控制 :
INFO_FORMAT
(返回 JSON、HTML 或 GML) -
图层控制 :
LAYERS
(渲染),QUERY_LAYERS
(查询)
