[英]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.