如何从地理服务器请求 WFS 服务并将 geojson 数据加载为铯中的图层?

How to request WFS service from geoserver and load geojson data as a layer in cesium?

我是铯的新手。如何从 geoserver 动态加载 geojson 数据并将其加载到 cesium ?如果您愿意分享代码或分步过程

Cesium 目前不支持通过某种“WFSProvider”直接加载 GeoJSON。话虽这么说,Cesium 团队显然在未来的某个时候 plans to support WFS 3.0。

目前,您需要手动向 GeoJSON 的 WFS 服务器发出 HTTP 请求,并使用 Cesium.GeoJsonDataSource class 将其加载到 Cesium 中。这是一个例子:

想法是您在某处 运行 有一个 WFS 服务器。一旦你有了一个你可以访问的 WFS 服务器,你就可以写一些 JavaScript 来发出对 GeoJSON 的请求:

const geoJsonPromise = fetch('http://example.com/geoserver/wfs?service=wfs&version=2.0.0&request=GetFeature&typeNames=namespace:featuretype').then(res => res.json());

以上代码将 return WFS 响应包裹在 JavaScript Promise 中。从这里,您可以执行类似...

    const viewer = new Cesium.viewer('cesiumContainer');
    geoJsonPromise.then(geoJson =>
       viewer.dataSources.add(
         Cesium.GeoJsonDataSource.load(
            geoJson,
            { fill: Cesium.Color.PINK }
           )
       )
    );

您还可以创建自己的“WFSProvider”,或者更准确地说,“WFSDataSource”class,以更通用的方式包装上述功能(可以支持更多数据格式)并将其抽象化。