openlayers5-webpack 入門開發系列結合 turf.js 實現等值線(附源碼下載)

前言

openlayers5-webpack 入門開發系列環境知識點了解:css

內容概覽

openlayers5 結合 turf.js 實現等值線
源代碼 demo 下載前端

效果圖以下:
node


  • 關鍵函數 turf.pointGrid,從邊界框,FeatureCollection 或 Feature建立點網格
  • 關鍵函數turf.isolines,採用具備z值和值中斷數的 Point 要素的網格 FeatureCollection 並生成等值線
  • 關鍵函數 turf.bezierSpline,經過應用 Bezier 樣條算法獲取一條線並返回彎曲版本
  • 核心代碼以下:
import {Map, View} from 'ol';
import TileLayer from 'ol/layer/Tile';
import XYZ from 'ol/source/XYZ';
import 'ol/ol.css';
import Style from 'ol/style/Style';
import Fill from 'ol/style/Fill';
import Stroke from 'ol/style/Stroke';
import CircleStyle from 'ol/style/Circle';
import GeoJSON from 'ol/format/GeoJSON';
import VectorSource from 'ol/source/Vector';
import VectorLayer from 'ol/layer/Vector';
import * as turf from "@turf/turf";
 
/*
*根據要素feature動態渲染樣式符號
*/
function styleFunction(feature) {
var tem = feature.get("temperature");//獲取屬性temperature值
var colors = ["#5a9fdd", "#f7eb0c", "#fc9e10", "#f81e0d", "#aa2ab3"];//定義顏色分組
var color = colors[parseInt(tem/2)];//根據屬性值來計算對應的顏色值
return new Style({
fill: new Fill({
color: color
}),
stroke: new Stroke({
color: color,
width: 4
}),
image: new CircleStyle({
radius: 5,
fill: new Fill({
color: color
}),
stroke: new Stroke({
color: '#fff',
width: 1
})
})
});
}
var extent = [72.8613, 20.0559, 133.9453, 54.5721];//網格點插值範圍經緯度
var cellWidth = 3;//等距點,單位爲經緯度
var pointGrid = turf.pointGrid(extent, cellWidth, {units: 'degrees'});//建立等距點的網格,單位爲經緯度
for (var i = 0; i < pointGrid.features.length; i++) {
pointGrid.features[i].properties.temperature = Math.random() * 10;//隨機0-10之間隨機賦值溫度屬性值temperature
}
……

完整demo源碼見小專欄文章尾部GIS之家openlayers小專欄webpack

文章尾部提供源代碼下載,對本專欄感興趣的話,能夠關注一波web

相關文章
相關標籤/搜索