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

在ol 6.4中使用WFS层

杜弘光
2023-03-14

我正在尝试使用WFS和openlayers从我的geoserver显示多边形功能和OSM底图

  1. 图层名称:utm区
  2. 本地SRS: EPSG: 4326
  3. 工作区名称:utmzone(启用WFS服务)
  4. 命名空间URI:www.hamid1.com(不存在真的!)
  5. geoserver url:localhost:8080/geoserver

使用下面提到的代码,OSM层显示在浏览器中,但我看不到多边形层。

import 'ol/ol.css';
import GeoJSON from 'ol/format/GeoJSON';
import Map from 'ol/Map';
import VectorSource from 'ol/source/Vector';
import {all} from 'ol/loadingstrategy';
import View from 'ol/View';
import XYZ from 'ol/source/XYZ';
import OSM from 'ol/source/OSM';
import {Stroke, Style} from 'ol/style';
import {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer';

var vectorSource = new VectorSource({
  format: new GeoJSON(),
  url: function (extent) {
    return (
      'http://localhost:8080/geoserver/wfs?service=WFS&' +
      'version=1.0.0&request=GetFeature&typename=utmzone:utmzones&' +
      'outputFormat=application/json&srsname=EPSG:4326&' +
      extent.join(',') +
      ',EPSG:4326'
    );
  },
  strategy:all,
});

var vector = new VectorLayer({
  source: vectorSource,
  style: new Style({
    stroke: new Stroke({
      color: 'rgba(0, 0, 255, 1.0)',
      width: 2,
    }),
  }),
});


var raster =new TileLayer({
    source: new OSM(),
  });

var map = new Map({
  layers: [raster, vector],
  target: document.getElementById('map'),
  view: new View({
    center: [0 , 0],
    maxZoom: 19,
    zoom: 1,
  }),
});

每次加载地图时,geoserver日志中将显示以下消息:

24 Oct 20:46:04 INFO [geoserver.wfs] -
Request: getServiceInfo
24 Oct 20:46:04 INFO [geoserver.wfs] -
Request: getFeature
    service = WFS
    version = 1.0.0
    baseUrl = http://localhost:8080/geoserver/
    query[0]:
        srsName = EPSG:4326
        typeName[0] = {www.hamid1.com}utmzones
    outputFormat = application/json
    resultType = results
24 Oct 20:46:04 INFO [wfs.json] - about to encode JSON

它似乎geoserver接收到请求和响应已经发送,但我不能在网络地图上看到该功能。

WMS可以看到该功能,但使用gefeatureinfourl也存在同样的问题

我想知道是否有人能帮我解决这个问题。

共有2个答案

巫欣荣
2023-03-14

最后我发现了主要问题运行网页后,浏览器控制台显示了以下消息,我没有意识到

跨源请求阻塞:同源策略不允许读取远程资源在http://localhost:8080/geoserver/rest/.(原因:CORS头'访问-控制-允许-起源'丢失)。-plhd--1/>(原因:缺少CORS头访问-控制-允许-起源)。

它通过在web中取消注释交叉原点线来解决。geoserver Directority中的xml文件此页面帮助我:

https://docs.geoserver.org/latest/en/user/production/container.html

夏祺然
2023-03-14

使用策略all,您将请求bbox=-Infinity,-Infinity,Infinity,Infinity,这是不需要的,可能会被服务器拒绝。你可以用一个简单的字符串替换url函数:

url: 
  'http://localhost:8080/geoserver/wfs?service=WFS&' +
  'version=1.0.0&request=GetFeature&typename=utmzone:utmzones&' +
  'outputFormat=application/json&srsname=EPSG:4326',

使用GeoJSON格式时,结果应自动转换为视图投影。

 类似资料:
  • wfs 是文件存储系统,主要是解决海量文件存储的问题,特别是小文件存储,原则上是简单易用,可扩展及备份恢复 介绍 单个 wfs 可以单独运行,多个 wfs 集群 可以启动 wfs-slb 作为代理层入口。wfs 没有过多额外功能,主要是增加文件,删除文件,拉取文件 启动 wfs  ./wfs -max 50000000 -p 3434参数说明: -max是上传文件大小限制(单位字节)   -p启动

  • 我从GeoServer创建了WFS GeoJson层,我得到了这个urlhttp://localhost:8080/geoserver/trail/ows?service=WFS 错误:“XMLHttpRequest无法加载http://localhost:8080/geoserver/trail/ows?service=WFS

  • 我目前在Openlayers中使用WFS,但是层的位置错误,如果我是对的,问题来自srsName,但是如何更改它? 以下是我的WFS代码: 几何图形应该位于国家的底部。我认为VectorSource有一个默认的srsname,但我不知道如何更改它。顺便说一句,在这个链接上:https://openlayers.org/en/latest/examples/vector-wfs.html他们展示了如

  • 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

  • 我正在使用法国政府的API WFS来获取地理数据。这个API使用OGC。(https://geosservices.ign.fr/documentation/donnees-ressources-wfs.html) 我想得到所有的Iris2000数据,但API交付1000个对象最大要求。它们是49404差Iris2000,我没有找到范围参数。 你能帮帮我吗?

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