mapbox-gl能够方便地显示地图,做一些交互,但是缺少空间分析功能,比如绘制缓冲区、判断点和面相交等等。

turf.js是一个丰富的用于浏览器和node.js空间分析库,官网 http://turfjs.org/ ,非常适合于mapbox-gl开发,不仅mapbox-gl里面推荐的空间分析插件有turf,而且turf.js官网的示例均基于mapbox实现。

下面就开始turf之旅了。

1. 先介绍几个功能介绍

1.1 测量相关MEASUREMENT

如面积(area)、长度(length)、中心(center)、包络线(envelope)

1.2 转换相关TRANSFORMATION

缓冲区buffer、绘制圆circle

1.3 判断相关

判断点是否在多边形内booleanPointInPolygon

判断是否包含booleanContains

turf的功能相当丰富,用到时查文档吧

2. 安装

普通script标签引入方式,

 <script src='https://npmcdn.com/@turf/turf/turf.min.js'></script>
<script>
var point = turf.point([119.625, 39.984]);
</script>

npm方式,可以按照以下方式引入

 import buffer from '@turf/buffer' // 按需引用
import area from '@turf/area'
import {point, circle, bboxPolygon, booleanPointInPolygon} from '@turf/turf' // 一次引入多个
import * as turf from '@turf/turf' // 一次性引入

使用前需要先安装,

// 部分安装
npm install @turf/area @turf/buffer
// 全部安装
npm install @turf/turf

3. 示例

一个简单的应用库,绘制点和面,判断点是否在面内,当然显示还是需要mapbo-gl配合。

 import {point, circle, bboxPolygon, booleanPointInPolygon} from '@turf/turf'
export default {
createCircle (center, radius, points) { // 创建圆geojson
let res = circle(center, radius / 1000.0, {steps: points || 100, units: 'kilometers'})
return res
},
createPoint (location, properties) { // 创建点geojson
let res = point(location, properties)
return res
},
inArea (lngLat, bbox) { // 判断点[lng, Lat]是否在面内,bbox为[minX, minY, maxX, maxY]
let res = booleanPointInPolygon(point(lngLat), bboxPolygon(bbox))
return res
}
}

希望能给想用turf.js的同学一点引入的作用,欢迎留言交流

mapbox-gl空间分析插件turf.js使用介绍的更多相关文章

  1. JavaScript 空间分析库——JSTS和Turf【转】

    https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个Java ...

  2. 3D GIS 应用开发 —— 基于 Mapbox GL 的实践总结

    最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器.在此先奉上一个基于mapbox-gl实现的demo(来源:uber的deck.gl项目): 下面我们 ...

  3. Scroll Depth – 衡量页面滚动的 Google 分析插件

    Scroll Depth 是一个小型的 Google Analytics(谷歌分析)插件,可以让你衡量用户在页面上滚动了多远.它可以监控 25%.50%.75% 和 100% 四个滚动点,并发送谷歌分 ...

  4. leaflet渲染mapbox gl的矢量数据

    准备条件 1.mapbox-gl.js mapbox-gl.css 2.leaflet-mapbox-gl.js https://github.com/mapbox/mapbox-gl-leaflet ...

  5. mapbox.gl文字标注算法基本介绍

    Well-placed labels can be the difference between a sloppy map and a beautiful one. Labels need to cl ...

  6. mapbox.gl源码解析——基本架构与数据渲染流程

    加载地图 Mapbox GL JS是一个JavaScript库,使用WebGL渲染交互式矢量瓦片地图和栅格瓦片地图.WebGL渲染意味着高性能,MapboxGL能够渲染大量的地图要素,拥有流畅的交互以 ...

  7. Cesium专栏-空间分析之坡向分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  8. Cesium专栏-空间分析之坡度分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  9. leaflet结合turf.js实现多边形分割(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

随机推荐

  1. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别

    Visual Studio中Debug与Release的区别: 在Visual Studio中,编译模式有2种:Debug与Release.这也是默认的两种方式,在新建一个project的时候,就已经 ...

  2. 第一坑:class编译版本

    这个坑是刚去公司的时候,公司项目运行环境的jdk版本是1.5,当时我编译版本是1.7,然后放上去一直报找不到class的错误,我硬是找了半天,后来才听说要用1.5版本编译.

  3. SrpingBoot入门到入坟02-HelloWorld的细节和初始自动配置

    关于SpringBoot的第一个HelloWorld的一些细节: 1.父项目 首先查看项目中的pom.xml文件 文件中有个父项目,点进去则: 它里面也有一个父项目,再点进去: 可以发现有很多的依赖版 ...

  4. linux-centos7安装Oracle11gr2数据库(在图形界面下)

    修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 oracle soft nproc 2047 orac ...

  5. Python习题005

    作业一 :任意一个数字列表,然后进行排序(冒泡排序) 方法一: def test1(): list1 = [1,23,4,6,8,55,2,9,90,35] list1.sort() # sort() ...

  6. docker相关--dockerd日志设置

    背景 线上容器dockerd的后台程序打印了超过几十G的日志 Docker daemon日志的位置: Docker daemon日志的位置,根据系统不同各不相同. Ubuntu - /var/log/ ...

  7. Codeforces 1249 F. Maximum Weight Subset

    传送门 设 $f[x][i]$ 表示 $x$ 的子树中,离 $x$ 最近的选择的节点距离为 $i$ 的合法方案的最大价值 设 $val[x]$ 表示节点 $x$ 的价值,首先有 $f[x][0]=va ...

  8. Redis的bind的误区(转)

    原文1:https://blog.csdn.net/cw_hello1/article/details/83444013 原文2:https://www.cnblogs.com/suiyueqiann ...

  9. IdentityServer4密码模式接入现有用户数据表

    具体接入identityserver请看文档,这里只简单列举部分步骤 1.创建一个web项目,引入Identityserver4的nuget包 2.新建一个类,实现IResourceOwnerPass ...

  10. 第三章 Django之动态网页基础(1)

    前一章中,我们解释了如何建立一个 Django 项目并启动 Django 开发服务器.当然,那个网站实际并没有干什么有用的事情,它所做的只是显示 It worked!消息.让我们来做些改变.本章将介绍 ...