# 二十.WFS
前言
用户利用这些数据可以创建他们自己的地图与应用、数据格式转换以及底层的地理操作。这类返回地理要素数据的规范称为 WFS(Web Feature Service——Web 要素服务)。
只要服务器和客户端遵循统一规范,那么服务器与客户端传送的数据可以是任意格式的。为了规范通过 Web 服务发送矢量数据的过程,OGC 制定了 WFS 规范。
那么 WMS 与 WFS 有什么区别呢?
WMS 是由服务器将一地图图像发送给客户端,而 WFS 是服务器将矢量数据发送给客户端,也就是在使用 WMS 时地图由服务器绘制,在使用 WFS 时地图由客户端绘制。
查看代码详情
<template>
<div ref="map" class="map"></div>
</template>
<script>
export default {
mounted() {
let {
format: {
GeoJSON,
WFS,
filter: { and: andFilter, equalTo: equalToFilter, like: likeFilter },
},
Map,
View,
layer: { Tile: TileLayer, Vector: VectorLayer },
source: { XYZ, Vector: VectorSource },
style: { Stroke, Style },
proj: { fromLonLat },
} = ol;
const vectorSource = new VectorSource();
const vector = new VectorLayer({
source: vectorSource,
style: new Style({
stroke: new Stroke({
color: "rgba(0, 0, 255, 1.0)",
width: 2,
}),
}),
});
const attributions =
'<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> ' +
'<a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>';
const raster = new TileLayer({
source: new XYZ({
attributions: attributions,
url:
"https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=" +
mapkeys.maptiler,
maxZoom: 20,
}),
});
const map = new Map({
layers: [raster, vector],
target: this.$refs.map,
view: new View({
center: [-8908887.277395891, 5381918.072437216],
maxZoom: 19,
zoom: 12,
}),
});
const featureRequest = new WFS().writeGetFeature({
srsName: "EPSG:3857",
featureNS: "http://openstreemap.org",
featurePrefix: "osm",
featureTypes: ["water_areas"],
outputFormat: "application/json",
filter: andFilter(
likeFilter("name", "Mississippi*"),
equalToFilter("waterway", "riverbank")
),
});
fetch("https://ahocevar.com/geoserver/wfs", {
method: "POST",
body: new XMLSerializer().serializeToString(featureRequest),
})
.then(function (response) {
return response.json();
})
.then(function (json) {
const features = new GeoJSON().readFeatures(json);
vectorSource.addFeatures(features);
map.getView().fit(vectorSource.getExtent());
});
},
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
← 十九.GPX