怎样让Geoserver的WMS请求返回json

geoserver的用户界面上,预览图层,有鼠标点击显示要素属性的功能,如图:

怎样让Geoserver的WMS请求返回json_第1张图片

左下角便是鼠标位置的要素信息,F12到“网络”标签,再次点击鼠标查看请求,发现它的链接是:

localhost:8080/geoserver/MyWorkspace/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=MyWorkspace:point_gbk&STYLES&LAYERS=MyWorkspace:point_gbk&INFO_FORMAT=text/html&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG:404000&WIDTH=101&HEIGHT=101&BBOX=121.78241729736328,30.566368103027344,121.85176849365234,30.635719299316406

响应的结果是:

<html>
  <head>
    <title>Geoserver GetFeatureInfo outputtitle>
  head>
  <style type="text/css">
    table.featureInfo, table.featureInfo td, table.featureInfo th {
        border:1px solid #ddd;
        border-collapse:collapse;
        margin:0;
        padding:0;
        font-size: 90%;
        padding:.2em .1em;
    }
    table.featureInfo th {
        padding:.2em .2em;
        font-weight:bold;
        background:#eee;
    }
    table.featureInfo td{
        background:#fff;
    }
    table.featureInfo tr.odd td{
        background:#eee;
    }
    table.featureInfo caption{
        text-align:left;
        font-size:100%;
        font-weight:bold;
        padding:.2em .2em;
    }
  style>
  <body>
  
<table class="featureInfo">
  <caption class="featureInfo">point_gbkcaption>
  <tr>
  <th>fidth>
    <th >nameth>
  tr>

    <tr>

  <td>point_gbk.73td>    
      <td>点73td>
  tr>
    <tr class="odd">

  <td>point_gbk.74td>    
      <td>点74td>
  tr>
    <tr>

  <td>point_gbk.75td>    
      <td>点75td>
  tr>
table>
<br/>

  body>
html>

我去,这么长?这是直接返回一个带CSS的html代码,前端不用处理就可以显示,但我们的需求往往是:

1.只需要数据,怎么显示自由发挥

2.返回数据量尽量小,以节省流量和传输时间

如果是这个html,还需要解析,十分不方便,我们希望它返回的是:

json

只需要将链接中的INFO_FORMAT从text/html改为application/json即可!

改了之后,返回的结果是这个样子(火狐浏览器看的):

怎样让Geoserver的WMS请求返回json_第2张图片

这下看起来清晰多了!

另外,连接中还有几个重要参数:

FEATURE_COUNT 表示返回要素个数的上限

BBOX 用两个经纬度表示一个矩形范围,链接将会返回这个范围内的要素信息

转载于:https://www.cnblogs.com/jcwn888/p/8601532.html

你可能感兴趣的:(怎样让Geoserver的WMS请求返回json)