MEASUREMENT
COORDINATE MUTATION
TRANSFORMATION
FEATURE_CONVERSION
MISC
HELPER
RANDOM
GRIDS
AGGREGATION
META
ASSERTIONS
BOOLEANS
UNIT CONVERSION
DATA
JOINS
CLASSIFICATION

Turf.js - Isolines

简介

Isolines是一种基于数据点的等值线分析方法,可以通过插值计算出数据点之间的等值线(即相同数值的线)。Turf.js的isolines函数可以帮助用户实现这种等值线分析。

用法

const interpolatedData = turf.interpolate(dataPoints, propertyName, options);
const contourLines = turf.isolines(interpolatedData, contourProperty, breaks);

isolines函数被设计用于从插值数据中计算出等值线。参数interpolatedData是一个GeoJSON FeatureCollection对象,由turf.interpolate函数返回的。参数contourProperty是一个字符串,表示要使用哪个属性来计算等值线。参数breaks是一个数组,表示等值线的阈值,数组的长度会决定等值线的数量。

示例

const dataPoints = turf.randomPoint(300, {bbox: [0, 30, 10, 40]}); // 生成随机点
const propertyName = 'Elevation'; // 定义点要素的属性名
dataPoints.features.forEach((pt) => {
  pt.properties[propertyName] = Math.random() * 100; // 随机赋值属性
});

const interpolatedData = turf.interpolate(dataPoints, propertyName, {gridType: 'square'});
const contourLines = turf.isolines(interpolatedData, propertyName, [10, 20, 30, 40, 50, 60, 70, 80, 90]); // 定义阈值数组

// 使用contourLines进行可视化显示等值线
map.addLayer({
  'id': 'my-layer',
  'type': 'line',
  'source': {
    'type': 'geojson',
    'data': contourLines
  },
  'layout': {
    'line-join': 'round',
    'line-cap': 'round'
  },
  'paint': {
    'line-color': '#ff0000',
    'line-width': 2
  }
});

上述示例中,我们首先使用turf.randomPoint函数生成了一个包含300个随机点的FeatureCollection。为这些随机点随机赋值属性,并使用turf.interpolate函数在这些点之间创建插值数据。随后,我们定义了等值线的阈值数组,并使用turf.isolines函数从插值数据中计算出等值线。最后,我们使用Mapbox GL JS的addLayer函数将计算出的等值线进行可视化显示。

参数

  • interpolatedData (Required): 插值数据,由turf.interpolate函数生成的GeoJSON FeatureCollection对象。
  • contourProperty (Required): 要使用的属性名,用于计算等值线。
  • breaks (Required): 等值线的阈值数组。数组的长度会决定等值线的数量。

返回值

返回包含等值线的GeoJSON FeatureCollection对象。

异常

如果参数不符合要求,函数会抛出异常。

参考文献

  • Turf.js: http://turfjs.org/docs/
  • Isolines on Wikipedia: https://en.wikipedia.org/wiki/Isoline