GIS 开发库 Turf 介绍

307 阅读2分钟

前言

在现代 GIS 开发中,如何准确、高效的分析地理空间数据是构建强大地图应用的核心。Turf.js 是一款用于地理数据展示分析的前端地图库,具有轻量、功能丰富的特点,可以说是专为地理空间分析而设计。Turf.js 提供了丰富的工具和算法,可以使开发者轻松实现如空间分析、地图量测、几何转换等复杂功能。

1. Turf是什么

Turf是一个用于空间分析的JavaScript库。它包括传统的空间操作、用于创建GeoJSON数据的辅助函数以及数据分类和统计工具。Turf可以作为客户端模块添加到您的网站中,也可以使用Node.js在服务器端运行Turf。

Turf 在前端GIS开发中具有大量的应用,因其强大的地理空间分析能力受到广大开发者的喜爱。下面从CDN访问量、NPM下载量以及GitHub星标数量进行说明。

  • CDN月请求量:13839676

  • NPM周下载量:830550

  • GitHub星标数量:9600

2. Turf 应用

Turf.js当前最新版本为7.2.0,可以通过离线、CDN在线引入或者通过NPM下载包等多种方式使用Turf。

  • 离线引入

<script src="./turf@7.2.0.min.js"></script>

  • CDN引入

<script src="https://cdn.jsdelivr.net/npm/@turf/turf@7.2.0/turf.min.js"></script>

  • NPM下载

默认下载最新版本:npm install @turf/turf下载指定版本:npm install @turf/turf@version

3. Turf 数据特点

在 Turf 中有关数据处理、转换何分析等操作,只能以GeoJSON作为地理数据,并且其默认地理坐标系为WGS84,如果涉及的测量距离何面积等操作时,最好转换为目标投影坐标系进行计算。有关GeoJSON数据介绍请参考以下文章:1111111

4. Turf 数据操作

Turf 提供了丰富的数据转换与空间分析方法,包括数据转换、空间查询、空间分析、空间插值以及聚合统计等。

地图量测测距
测面
测大圆航线
测边框
几何变换边框裁切
融合
旋转
平移
缩放
空间查询相交查询
空间分析缓冲区分析
泰森多边形
凸包分析
空间插值IDW(反距离权重插值)
等高线等值线
TIN
聚类统计DBSCAN聚类
K均值聚类算法

Turf 使用示例:

  1.  计算两点之间的距离
    
const p1 = turf.point([102.53883727.984255]);
const p2 = turf.point([102.54983727.984255]);
const distance = turf.distance(p1, p2, { units: 'kilometers' });
// 两点间距离(千米)
console.info("量测距离:",distance)

2. 创建缓冲区

const point = turf.point([102.53883727.984255]);
const buffer = turf.buffer(point, 0.25, { units: 'kilometers' });
// 缓冲区 GeoJSON 数据
console.info("缓冲数据:"buffer); 

3. 判断点是否在多边形内

const pt = turf.point([102.53883727.984255]);
const polygon = turf.polygon([[
    [102.53880727.984295],
    [102.53885727.984295],
    [102.53885727.984205],
    [102.53880727.984205],
    [102.53880727.984295]
]]);
const isInside = turf.booleanPointInPolygon(pt, polygon);
console.info(isInside)

4. 线段平滑

const line = turf.lineString([
    [-12.0348358.901183],
    [-12.0604138.899826],
    [-12.036388.873199],
    [-12.0593838.871418],
    [-12.0348358.901183],
]);
const curved = turf.bezierSpline(line, { resolution: 100 });
// 输出平滑后的线要素
console.info(curved )

5. 参考文档

  • 官方文档[https://turfjs.org/](https://turfjs.org/)
  • GitHub 仓库[https://github.com/Turfjs/turf](https://github.com/Turfjs/turf)
  • CDN资源: [https://www.jsdelivr.com/package/npm/@turf/turf](https://www.jsdelivr.com/package/npm/@turf/turf)
  • npm资源[https://www.npmjs.com/package/@turf/turf](https://www.npmjs.com/package/@turf/turf)