繁体   English   中英

OpenLayers> GeoServer WFS请求EPSG:3857

[英]OpenLayers > GeoServer WFS requests EPSG:3857

Geoserver 2.5中的WFS实施存在严重错误。

我将数据集加载到SQL Server和PostGIS中。 该数据集由几个点组成,位于本机EPSG:3857中。

已为SQL Server连接设置了Geometry_Columns表,并且在Geoserver设置中一切正常。

但是,尝试通过OpenLayers访问WFS:

WFS 1.0.0 | GET | 固定| SQL Server> 确定

WFS 1.0.0 | GET | 固定| PostGIS> 确定

WFS 1.0.0 | 发布| 固定| SQL Server> 确定

WFS 1.0.0 | 发布| 固定| PostGIS> 确定

WFS 1.0.0 | GET | BBOX | SQL Server> 失败

WFS 1.0.0 | GET | BBOX | PostGIS> 确定

WFS 1.0.0 | 发布| BBOX | SQL Server> 失败

WFS 1.0.0 | 发布| BBOX | PostGIS> 失败

WFS 1.1.0 | GET | 固定| SQL Server> 确定(但未显示在地图上)

WFS 1.1.0 | GET | 固定| PostGIS> 确定(但未显示在地图上)

WFS 1.1.0 | 发布| 固定| SQL Server> 确定

WFS 1.1.0 | 发布| 固定| PostGIS> 确定

WFS 1.1.0 | GET | BBOX | SQL Server> 失败

WFS 1.1.0 | GET | BBOX | PostGIS> 确定(但未显示在地图上)

WFS 1.1.0 | 发布| BBOX | SQL Server> 失败

WFS 1.1.0 | 发布| BBOX | PostGIS> 失败

唯一成功的BBOX过滤请求是PostGIS数据源上的1.0.0 GET。

如果有人想自己运行测试,则GeoServer可公开访问。 欢迎任何建议。 我真的需要将此与SQL Server一起使用。

http://developer.system-ns.net:8080/geoserver/MobileSurvey/ows?service=WFS&request=getcapabilities

这是我从Openlayers 2.13调用WFS作为POST请求的方式:

var wfsLayer = new OpenLayers.Layer.Vector('CATASTRO', {
    projection: 'EPSG:3857',
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.WFS({

        version: '1.0.0',
        url: 'http://developer.system-ns.net:8080/geoserver/MobileSurvey/wfs',
        srsName: 'EPSG:3857',
        featurePrefix: 'MobileSurvey',
        featureType: 'CATASTRO_SQL3857',
        geometryName: 'GEOMETRY',
        featureNS: 'http://argeomatica.com/MobileSurvey'

    })
});

这是SQL Server数据源。 将PostGIS数据源的FeatureType更改为'catastro_pg3857'。 我将策略从“固定”切换到BBOX,并将不同测试的版本从“ 1.0.0”和“ 1.1.0”之间切换。

这是我的GET请求:

var wfsOptions = {
    url: 'http://developer.system-ns.net:8080/geoserver/MobileSurvey/ows?',
    params: {
        request: 'GetFeature',
        service: 'WFS',
        version: '1.0.0',
        typeName: 'catastro_pg3857',
        srsName: 'EPSG:3857'
    },
    format: new OpenLayers.Format.GML({
        featureNS: 'http://argeomatica.com/MobileSurvey',
        geometryName: 'GEOMETRY'
    })
}
wfsLayer = new OpenLayers.Layer.Vector('CATASTRO', {
    projection: 'EPSG:3857',
    strategies: [new OpenLayers.Strategy.BBOX()],
    visibility: true,
    protocol: new OpenLayers.Protocol.HTTP(wfsOptions)
});

干杯,丹尼斯

我的第一个尝试是查看sqlserver中的无效几何。 您的postgis图层正确显示。

当我从地理服务器为SQL Server生成纯KML输出时,它抛出org.geoserver.platform.ServiceException:java.lang.RuntimeException:java.io.IOException:计算CATASTRO_SQL3857的边界时发生错误

对于Postgis,KML的生成没有错误。

尝试这个:

在此处更新<表名> set geom = geom.MakeValid();

好奇地知道结果...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM