当前位置: 首页 > 知识库问答 >
问题:

OpenLayers>GeoServer WFS请求EPSG: 3857

闻人弘雅
2023-03-14

Geoserver2.5中的WFS实现存在严重错误。

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

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

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

wfs1.0。0 |获取|修复| SQL Server

WFS 1.0.0|GET|固定|PostGIS

wfs1.0。0 | POST | Fixed | SQL Server

wfs1.0。0 |立柱|固定|立柱

WFS 1.0.0|GET|BBOX|SQL服务器

wfs1.0。0 |获取| BBOX | PostGIS

WFS 1.0.0|POST|BBOX|SQL服务器

wfs1.0。0 |邮政| BBOX |邮政GIS

WFS 1.1。0 |获取|修复| SQL Server

WFS 1.1。0 |获取|修复| PostGIS

WFS 1.1。0 | POST | Fixed | SQL Server

WFS 1.1.0|POST|固定|PostGIS

WFS 1.1。0 | GET | BBOX | SQL Server

WFS 1.1。0 |获取| BBOX | PostGIS

WFS 1.1。0 | POST | BBOX | SQL Server

WFS 1.1.0|POST|BBOX|PostGIS

唯一成功的BBOX筛选请求是1.0。0获取PostGIS数据源。

如果有人希望自己运行测试,那么GeoServer是可公开访问的。欢迎任何建议。我真的需要让它与SQL Server一起工作。

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

下面是我如何调用来自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”。我将策略从Fixed切换到BBOX,版本在'1.0'之间。“0”和“1.1”。0'用于不同的测试

这是我的GEThtml" target="_blank">请求:

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)
});

干杯,丹尼斯

共有1个答案

元英朗
2023-03-14

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

当我从你的geoserver为它抛出的sql服务器生成普通的KML输出时,org.geoserver.platform.服务例外:java.lang.运行时间例外:java.io.IO例外:错误发生计算CATASTRO_SQL3857的边界

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

试试这个:

使现代化

好奇知道结果...

 类似资料:
  • OpenLayers 是一个高性能、功能丰富的库,用于在 Web 上创建交互式地图。它可以显示从任何来源加载的地图图块、矢量数据和标记。

  • 我正在使用sharpmap将MSSQL中的边界(几何体)渲染为PNG图像。这一切都很好,除了国家在平面图像格式上看起来太“宽”。 据我所知,我需要创建到EPSG:3857投影的转换,但我不知道如何做。 这是我的密码 WKT可以在这里找到https://pastebin.com/PEbpAdxT 感谢您的帮助。 编辑2 我也尝试了以下转换,但这会呈现空白的png(没有红色的十字线)

  • 主要介绍 SuperMap iClient for OpenLayers 的入门用法,详细的接口参数请参考 API 页面

  • 返回这样的定位坐标,但是在地上是定位不对

  • 一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数)、HTTP头、cookies等信息。 默认情况下,对于一个给定的请求,你可以通过 request application component 应用组件(yii\web\Request 类的实例) 获得访问相应的请求对象。在本章节,我们将介绍怎样在你的应用中使用这个

  • Wiki ▸ [[API--中文手册]] ▸ [[核心函数]] ▸ 请求 如果你不访问数据那么你就不能可视化它。幸运的是有很多的方法可以把数据放到浏览器中。对于小数据集,你可以硬编码到你的脚本里,或者使用数据属性嵌入到DOM中。对于大数据集,你可以引用外部脚本并定义你的数据为一个全局变量。(JSONP就是一个常见的例子)。最通用的方式是使用XMLHttpRequest, 或说XHR加载数据到浏览器