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

使用Openlayers/Geoserver从我的WFS源代码更改srsName

薛鹏飞
2023-03-14

我目前在Openlayers中使用WFS,但是层的位置错误,如果我是对的,问题来自srsName,但是如何更改它?

以下是我的WFS代码:

var WFSSource = new VectorSource({
  format: new GeoJSON(),
  url: function(extent) {
    return 'http://localhost:8081/geoserver/occi/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=occi%3Aocci&maxFeatures=5&outputFormat=application%2Fjson';
  },
  strategy: bboxStrategy,
});

var WFSLayer = new VectorLayer({
  source: WFSSource
});

几何图形应该位于国家的底部。我认为VectorSource有一个默认的srsname,但我不知道如何更改它。顺便说一句,在这个链接上:https://openlayers.org/en/latest/examples/vector-wfs.html他们展示了如何使用WFS,他有以下代码行:

url: function(extent) {
return 'https://ahocevar.com/geoserver/wfs?service=WFS&' +
    'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
    'outputFormat=application/json&srsname=EPSG:3857&' +
    'bbox=' + extent.join(',') + ',EPSG:3857';

},

定义了srsName,但不适用于我。

-----更新-----

检查投影后,我发现:

>

  • 我的地图有默认投影-

    My TileWMS没有设置,但文档中说参数是动态设置的。东西在Geoserver上,我使用“EPSG:2154”,但地图和这个TileWMS完美匹配,我不知道如何匹配。

    我的矢量源有格式-

    现在我想知道如何把所有的东西都放在同一个投影上,但是我很挣扎。

    如果我用EPSG: 2154(Geoserver中我的图层的本机SRC)更改地图投影,我有以下错误:

    无法读取null的属性“getExtent”。

    如果我试图改变我的VectorSource投影什么也没发生,我的VectorSource停留在“EPSG: 4326”

    var WFSSource = new VectorSource({
      format: new GeoJSON(),
      url: function(extent) {
        return 'http://localhost:8081/geoserver/occi/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=occi%3Aocci&maxFeatures=5&outputFormat=application%2Fjson';
      },
      projection : "EPSG:2154",
      strategy: bboxStrategy
    });
    
  • 共有1个答案

    韩智敏
    2023-03-14

    ol/源和ol/视图具有投影。默认投影为EPSG:3857。如果您的数据或底图不同,那么EPSG:3857您应该定义它。

    import Map from 'ol/Map';
    import View from 'ol/View';
    import VectorLayer from 'ol/layer/Vector';
    import VectorSource from 'ol/source/Vector';
    
    const map = new Map({
      layers: [
        new VectorLayer({
            source: new VectorSource({
                projection: 'EPSG:3857',
            })
        })
      ],
      target: 'map',
      view: new View({
        projection: 'EPSG:3857',
      })
    });
    
     类似资料:
    • Geoserver2.5中的WFS实现存在严重错误。 我将数据集加载到SQL Server和PostGIS中。该数据集由几个点组成,采用本机EPSG:3857。 已为SQL Server连接设置Geometry_Columns表,并且在Geoserver设置中一切正常。 但是,尝试通过OpenLayers访问WFS: wfs1.0。0 |获取|修复| SQL Server WFS 1.0.0|GE

    • 我正在使用OpenLayers 3.20开发一个Web应用程序。0,层来自GeoServer,链接到Oracle数据源。此应用程序主要使用ImageWMS层,也使用矢量层进行交互和编辑。问题是地图绘制速度非常慢,绘制了30000多条多段线,我想让这个过程更快:-) 所以我想知道最好的方法是什么。我找到了两种方法: 在ImageWMS层中更改我的矢量层,并仅在选择或编辑时手动加载所需的功能,但它要求

    • 我正在尝试从GeoServer 2.3.0获取json功能。我复制了一个示例中的代码,它按预期工作。但是,当我将url设置为我的GeoServer和所需的图层时,返回的格式不同,并导致此错误:“未捕获的SyntaxError:意外标记:” 示例服务器以以下格式返回json功能: OpenLayers.协议。script.registry.c1({"type":"FeatureCollection"

    • 问题内容: 在后面的代码中设置很容易,但是这会覆盖现有类。 我需要设置某些元素,并且我想应用一种样式作为视觉提示,说明该项目不能更改…很容易: 但是有时我 还 需要更改相同的元素,这意味着我将需要删除设置的CSS类,而不删除可能已分配的任何其他样式。 最好的方法是什么? 问题答案: 我采用了AnthonyWJones的原始代码并对其进行了修改,以使其在任何情况下均能正常工作:

    • 问题内容: 我在Eclipse Helios中遇到一个奇怪的问题。当我更改源代码时,所做的更改无效。即使我以看起来无法编译的方式更改代码,它仍然可以运行。 似乎在我编辑和保存源并将其提交到svn时,Eclipse将其状态保留在后台的某个位置。 我不知道要查询什么设置或要做什么。我很高兴得到任何帮助。 最好的问候,大卫 问题答案: 注意:只有在该线程中的其他选项用尽时,才可以尝试此操作。 因此,以防

    • 我已经发布了一个层,其中包含大约76列(属性)。但是,当我调用WFS服务时,它没有返回所有属性(列),会遗漏一个名称为“id”的属性(列)。我使用的是oracle Spatial 11g数据库,其中包含地图数据。我是不是漏掉了什么?所有其他的事情都工作得很好,就像WMS服务一样。