• OpenLayers3中wfs的属性查询


            var vector = new ol.layer.Vector({
                source: new ol.source.Vector({
                  format: new ol.format.GeoJSON(),
                  url: 'http://localhost:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetFeature&typeNames=test:行政区R&outputFormat=application/json&srsname=EPSG:4326'
                }),
              style: function(feature, resolution) {
                return new ol.style.Style({
                  stroke: new ol.style.Stroke({
                    color: 'blue',
                     1
                  })
                });
              }
            });
             vector.setOpacity(0.3);//设置透明度
    
              map.on('click',mapClick);
              //点击地图查询
              function mapClick(evt)
              {
                  var coor=evt.coordinate;
                  var lowx = coor[0]-0.0075;
                  var lowy = coor[1]-0.0075;
                  var upperx = coor[0]+0.0075;
                  var uppery = coor[1]+0.0075;
              //    coor=coor.join(',');
                  //注意这里,如果是查询,点或者线图形,一定要将coor先设置一个容差,,再去与图层叠加分析。不设置容差几乎就找不到了
                  //图层的图形字段是geom,不同图层的图形字段都要自己先看下自己的,有的是the_geom,有的是shape等等,具体分析即可。
              //        var FILTER='<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>the_geom'+
               //      '</PropertyName><gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>'+[coor[0]-0.0075,coor[1]-0.0075]+'</gml:lowerCorner>'+
     
               //         '<gml:upperCorner>'+[coor[0]+0.0075,coor[1]+0.0075]+'</gml:upperCorner></gml:Envelope></Intersects></Filter>';
              var FILTER= '<Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>the_geom</PropertyName><gml:Envelope srsName="EPSG:4326">  <gml:lowerCorner>'+lowx+' '+lowy+'</gml:lowerCorner><gml:upperCorner>'+upperx+' '+uppery+'</gml:upperCorner></gml:Envelope></Intersects></Filter>';
                  getFeature1({
                      typename:'test:行政区R',//查询的服务图层名称
                      filter:FILTER,//查询条件
                      srid: 'epsg:4326'
                  });
                  //开始显示弹窗
                  $("#details").html("");
                  var hdms = ol.coordinate.toStringHDMS(evt.coordinate);
                  content.innerHTML = '<p>查询详情:</p><code>坐标:' + hdms +
                  '</code>';
                  overlay.setPosition(evt.coordinate);
                   
              }
               var geojsonFormat=new ol.format.GeoJSON({defaultDataProjection:"EPSG:4326"});
               
     
              //请求wfs数据
              function getFeature1(options)
              {
                  $.ajax({
                      url: 'http://localhost:8080/geoserver/wfs',
                      type: 'get',
                      data: {
                          service: 'WFS',
                          version: '1.1.0',
                          request: 'GetFeature',
                          typeNames: options.typename,
                          srsName: options.srid,
                          Filter:options.filter,
                          outputFormat: 'application/json'
                    
                      },
                      success:function(data){
                          console.log(data);
                          var features=geojsonFormat.readFeatures(data);
                          console.log(features);
                          if(features[0] == null || features[0] == undefined){
                              return;
                          }
                          var json = features[0].H;
                          for(var key in json){
                              if(key == 'geometry'){
                                    continue;
                                }
                                $("#details").append(
                                        "<tr><td style=' 110px'>"+key+": </td><td style=' 50%'>"+json[key]+"</td> </tr> "
                                );
                          }
                      },
                      error: function(){
                        alert("执行失败");  
                      }
                  });
     
              }
    
              // 为地图注册鼠标移动事件的监听
              map.on('pointermove', function(event){
                  //先移除样式
                  var total = vector.getSource().getFeatures();
                    for(var i in total){
                      total[i].setStyle(new ol.style.Style({
                          stroke: new ol.style.Stroke({
                                color: 'blue',
                                 1
                              })
                        }));
                    }
              //获得鼠标移动上的feature
                  map.forEachFeatureAtPixel(event.pixel, function(feature){
                                     //设置高亮显示填充颜色
                                  feature.setStyle(new ol.style.Style({
                                      stroke: new ol.style.Stroke({
                                            color: 'yellow',
                                             3,
                                          }),
                                      fill: new ol.style.Fill({
                                            color: 'yellow'
                                      })
                                       
                                  }));
                   });     
              })

    关于查询的方式:
    点查询Filter
    <Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
    <Intersects>
    <PropertyName>the_geom</PropertyName>
    <gml:Envelope srsName="EPSG:4326">     
    <gml:lowerCorner>xxx yyy</gml:lowerCorner>
    <gml:upperCorner>xxx yyy</gml:upperCorner>
    </gml:Envelope>
    </Intersects>
    </Filter>

    还有自定义多边形查询,

    还有就是多多学习自己写Filter,需要的参数学习可以看下http://www.gisvip.com/bbs/forum.php?mod=viewthread&tid=2723

    我的博客http://blog.wuwii.com
  • 相关阅读:
    (转)130道ASP.NET面试题
    (转)c#对象内存模型
    (转)探讨:ASP.NET技术的学习顺序问题
    (转)ASP.NET缓存概念及其应用浅析
    Response.Redirect在新窗口打开网页
    转载 C# 序列化与反序列化意义详解
    简单进制转化
    简单成绩管理系统(没有存盘)
    kali不能ifconfig等简单命令
    蓝桥杯练习之开花(二分法查找)
  • 原文地址:https://www.cnblogs.com/qnight/p/7535122.html
Copyright © 2020-2023  润新知