首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenLayers 3中QGIS中的WFS

OpenLayers 3中QGIS中的WFS
EN

Stack Overflow用户
提问于 2016-08-15 21:36:41
回答 1查看 884关注 0票数 0

我正在尝试使用QGIS Server (2.14)实现这个示例https://medium.com/@goldrydigital/wfs-t-with-openlayers-3-16-6fb6a820ac58,并对其进行调整以适应不同的SRS。不幸的是,函数ol.format.WFS.readFeatures()无法读取QGIS Server发回的几何图形(参见console.log(featuresk.getGeometry( ));// => NULL )

任何帮助都非常感谢,谢谢!

顺便说一句:当使用ArcGIS-Server-WFS时,下面的代码可以正常工作...

代码:

代码语言:javascript
复制
var formatWFS = new ol.format.WFS();
var sourceWFS = new ol.source.Vector({
            loader: function (extent) {
                $.ajax('http://xxx/qgis/qgis_mapserv.fcgi.exe', {
                    type: 'GET',
                    data: {
                        service: 'WFS',
                        version: '1.0.0',
                        request: 'GetFeature',
                        typename: 'test2',
                        srsname: 'EPSG:2056',
                        bbox: extent.join(',') + ',EPSG:2056'
                    }
                }).done(function (response) {
                        wfsresponsefeatures = formatWFS.readFeatures(response);
                                sourceWFS.addFeatures(wfsresponsefeatures);
                    features = sourceWFS.getFeatures();
                    for (var k in features) {
                        console.log(features[k].getGeometry()); // => NULL
                    }

WFS响应如下:

代码语言:javascript
复制
    <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qgs="http://www.qgis.org/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd http://www.qgis.org/gml http://szhm4120/qgis/qgis_mapserv.fcgi.exe?srsname=EPSG%3A2056&amp;SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=test2&amp;OUTPUTFORMAT=XMLSCHEMA"><gml:boundedBy>
 <gml:Box srsName="EPSG:2056">
  <gml:coordinates cs="," ts=" ">2681188.02,1246449.97 2685167.35,1248977.27</gml:coordinates>
 </gml:Box>
</gml:boundedBy>
<gml:featureMember>
 <qgs:test2 fid="test2.2">
  <gml:boundedBy>
   <gml:Box srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2683250.99,1248618.11 2683250.99,1248618.11</gml:coordinates>
   </gml:Box>
  </gml:boundedBy>
  <qgs:geometry>
   <gml:Point srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2683250.99,1248618.11</gml:coordinates>
   </gml:Point>
  </qgs:geometry>
  <qgs:id>2</qgs:id>
 </qgs:test2>
</gml:featureMember>
<gml:featureMember>
 <qgs:test2 fid="test2.3">
  <gml:boundedBy>
   <gml:Box srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2681673.03,1247121.49 2681673.03,1247121.49</gml:coordinates>
   </gml:Box>
  </gml:boundedBy>
  <qgs:geometry>
   <gml:Point srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2681673.03,1247121.49</gml:coordinates>
   </gml:Point>
  </qgs:geometry>
  <qgs:id>3</qgs:id>
 </qgs:test2>
</gml:featureMember>
<gml:featureMember>
 <qgs:test2 fid="test2.6">
  <gml:boundedBy>
   <gml:Box srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2682779.23,1248227.69 2682779.23,1248227.69</gml:coordinates>
   </gml:Box>
  </gml:boundedBy>
  <qgs:geometry>
   <gml:Point srsName="EPSG:2056">
    <gml:coordinates cs="," ts=" ">2682779.23,1248227.69</gml:coordinates>
   </gml:Point>
  </qgs:geometry>
  <qgs:id>6</qgs:id>
 </qgs:test2>
</gml:featureMember>
</wfs:FeatureCollection>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-16 16:26:05

好的,那么QGIS Server只能为带有GML2几何的WFS 1.0.0服务...

以上示例通过将WFS设置为GML2来运行

代码语言:javascript
复制
var formatWFS = new ol.format.WFS({
    'gmlFormat': new ol.format.GML2
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38956133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档