我来把你构造的这个 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
(查询)