空间分析_玩转地理空间分析库 Turf

Turf是一个开源JavaScript库,提供了丰富的空间分析功能,包括测量、坐标突变、要素转化、格网生成等。它基于GeoJSON,支持Mapbox GL JS、Android和iOS平台。通过Turf,你可以轻松实现如按距离排序、点是否在多边形内等空间分析任务,而无需深厚的GIS基础。
摘要由CSDN通过智能技术生成

6ce37696fe30cc5c3506abcd31d9adb6.png

打开手机 app,轻轻一点,距离你最近的餐馆就会依次排序显示。停下共享单车,手机会提醒你进入了禁停区域...... 这些应用里极为普及的功能都离不开空间分析。

地理空间分析是很大的一个分类,例如计算面积和距离以及将点连接到多边形,使人们能够查看其数据中的图案或关系。

点击查看 Mapbox 如何进行空间分析!​docs.mapbox.com

如今,空间分析已用于流行病学,生物学,统计学,经济学,商业和商业,城市规划,地质学,石油和天然气以及许多其他行业。

当你寻找最近的餐厅时, 需要列举搜索半径里的所有餐厅,并计算你与每个餐厅的距离,依次排列。 这就涉及到最基础的点是否在多边形(point in polygon)的判断;两点间距离的计算等。

当护林员在 app 里标记野生动物出没的地方, 涉及到如何在地图上绘制点线面,绘制缓冲区(Buffer),坐标系的转换。

探究房价的空间分布,并展示可视化效果时,会用到插值法来处理。

这似乎听起来像要深厚的 GIS 基础, 拓扑空间关系算法.....

7d23dcb7ba6225ee42a34ba79e78120b.png

不, 你无须担心,Mapbox 有个神器,让您无需再造轮子,就可以快速实现你想要的空间分析相关的功能!

那就是TURF——一个开源 JavaScript 库,允许您在浏览器中执行空间操作。Turf 可帮助您分析,汇总和转换数据,以新方式将其可视化并进行高级分析。Turf.js 的算法还移植到了 android 和 ios平台上,你可以使用 Java SDK 的 turf 库和 Turf for Swift 来进行空间分析。

1cd1738e105193c5bd7a5a91740a3a7a.png

查看 Turf.js API 文档:

Turf.js | Advanced Geospatial Analysis​turfjs.org

查看 github 源码:

turf​github.com
7542a1f36b50842d24fa0fab8fa6cd1a.png

它于2015年推出,简单易懂,小巧灵敏,模块化,运行速度极快!

  • 简约: 使用 GeoJSON 的模块化、简单易懂的 JavaScript 函数
  • 模块化: Turf 是一个个小模块的集合,你想用哪个,就用哪个!
  • 快速: 利用最新的算法,无须将数据发送到服务器

在深入了解 Turf 库前的必备知识

所有 Turf 方法都处理遵循 GeoJSON 规范的空间数据。GeoJSON 是一种强大的格式,可用于编码各种地理数据结构。它支持以下几何类型:Point,LineString, Polygon,MultiPoint,MultiLineString,和MultiPolygon。具有其他属性的几何对象是 Feature 对象。

Turf 库利用了这一点,并将 GeoJSON 作为该库的基础。这意味着,例如,如果要获取两个纬度/经度点之间的距离,则首先需要将这些坐标表示为GeoJSON Point对象。

点击这里探索 GeoJSON

cd54cf2bf63468912653de5ba23eb496.png

Turf 库里面有哪些功能?

turf 库主要分为 17 大类 !提供多达 150 种的空间分析功能!堪称丰富+多样+完备~

e3bc94702964cd12b7ddc4b8e58183be.png

查看 Turf.js API 文档一探究竟

1. Measurement 测量:测点到点,点到线的距离, 面积,弧线长,中点等等。

  • along
  • area
  • bbox
  • bboxPolygon
  • bearing
  • center
  • centerOfMass
  • centroid
  • destination
  • distance
  • envelope
  • length
  • midpoint
  • pointOnFeature
  • polygonTangents
  • pointToLineDistance
  • rhumbBearing
  • rhumbDestination
  • rhumbDistance
  • square
  • greatCircle

2. Coordinate Mutation 坐标突变:清除坐标,坐标翻转,倒转,降低精度等

  • cleanCoords
  • flip
  • rewind
  • round
  • truncate

3. Transformation 转化: 切割bbox,贝塞尔曲线,缓冲区,克隆geojson,合并多边形,相交,简化,镶嵌,旋转等

  • bboxClip
  • bezierSpline
  • buffer
  • circle
  • clone
  • concave
  • convex
  • difference
  • dissolve
  • intersect
  • lineOffset
  • simplify
  • tesselate
  • transformRotate
  • transformTranslate
  • transformScale
  • union
  • voronoi

以 bezierSpline 贝塞尔曲线为例:lineString 可轻松优化为贝塞尔曲线。

9a8bc5efeb261a40324845abc94812a1.png
var line = turf.lineString([
  [-76.091308, 18.427501],
  [-76.695556, 18.729501],
  [-76.552734, 19.40443],
  [-74.61914, 19.134789],
  [-73.652343, 20.07657],
  [-73.157958, 20.210656]
]);

var curved = turf.bezierSpline(line);

4. Feature Conversion 要素转化

  • combine
  • explode
  • flatten
  • lineToPolygon
  • polygonize
  • polygonToLine

5. Misc

  • kinks
  • lineArc
  • lineChunk
  • lineIntersect
  • lineOverlap
  • lineSegment
  • lineSlice
  • lineSliceAlong
  • lineSplit
  • mask
  • nearestPointOnLine
  • sector
  • shortestPath
  • unkinkPolygon

6. Helper

  • featureCollection
  • feature
  • geometryCollection
  • lineString
  • multiLineString
  • multiPoint
  • multiPolygon
  • point
  • polygon

7. Random:生成随机点,线,面。

  • randomPosition
  • randomPoint
  • randomLineString
  • randomPolygon

8. Data

  • sample

9. Interpolation:插值法,包括等频带,等值线,tin 插值法等。

  • interpolate
  • isobands
  • isolines
  • planepoint
  • tin

10. Joins:点在多边形中的判断等

  • pointsWithinPolygon
  • tag

11. Grids:格网

  • hexGrid
  • pointGrid
  • squareGrid
  • triangleGrid

12. Classification 分类

  • nearestPoint

13. Aggregation 聚合:集合,Kmeans 集群分析,Dbscan 集群分析等。

  • collect
  • clustersDbscan
  • clustersKmeans

14. Meta

  • coordAll
  • coordEach
  • coordReduce
  • featureEach
  • featureReduce
  • flattenEach
  • flattenReduce
  • getCoord
  • getCoords
  • getGeom
  • getType
  • geomEach
  • geomReduce
  • propEach
  • propReduce
  • segmentEach
  • segmentReduce
  • getCluster
  • clusterEach
  • clusterReduce

15. Assertions

  • collectionOf
  • containsNumber
  • geojsonType
  • featureOf

16. Booleans 布尔值

  • booleanClockwise
  • booleanContains
  • booleanCrosses
  • booleanDisjoint
  • booleanEqual
  • booleanOverlap
  • booleanParallel
  • booleanPointInPolygon
  • booleanPointOnLine
  • booleanWithin

17. Unit Conversion 单位换算

  • bearingToAzimuth
  • convertArea
  • convertLength
  • degreesToRadians
  • lengthToRadians
  • lengthToDegrees
  • radiansToLength
  • radiansToDegrees
  • toMercator
  • toWgs84

Turf 库的应用案例大赏

1. Mapbox GL JS 和 Turf.js 联用:

fe4c33590d7c331d5745aff50e01ce8b.png

使用Turf.js和Mapbox GL JS分析数据

2777df7ca1e87c48b323c5060462d00a.png

按距离对商店进行排序

2. Maps SDK for Android and the Java SDK 的案例

433ad7cfe2965721115771c58973127b.png
Measure line distance​docs.mapbox.com
570a112c0a42a39cc39188cd449b678e.png

f4d6ab7246b5152c885548633ed12bda.png
直线距离​docs.mapbox.com

3. Maps SDK for iOS and Turf for Swift

前往 Github 查看 Turf for Swift:https://github.com/mapbox/turf-swift/​github.com

快去试一试吧!一不小心就变成空间分析专家啦!


欢迎您进入 Mapbox.cn 留下你的问题、建议、产品想法等,我们会在 1- 3 个工作日内回复你哦!

060d3fac007480f4c315e48a490b595d.png
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cesium提供了多种空间分析工具,可以帮助用户在三维场景中进行空间分析。以下是其中的一些工具: 1. 空间测量工具:该工具可以帮助用户测量两点之间的距离、两线之间的距离、多边形面积等。 2. 可视域分析工具:该工具可以帮助用户确定一个位置是否可以看到其他位置,从而帮助用户进行可视域分析。 3. 地形剖面工具:该工具可以帮助用户生成地形剖面图,以便用户更好地了解地形的变化情况。 4. 空间查询工具:该工具可以帮助用户查询三维场景中的对象信息,例如查找离某个位置最近的建筑物、查找所有高于某个高度的建筑物等。 5. 模拟分析工具:该工具可以帮助用户进行模拟分析,例如飞行模拟、车辆行驶模拟等。 这些工具可以通过Cesium的API进行调用并进行定制化配置,满足用户的不同分析需求。 ### 回答2: Cesium是一个基于Web的三维地球、地理空间数据可视化的开源。虽然Cesium本身并不直接提供空间分析功能,但可以通过它的一些插件、扩展以及与其他的结合来实现空间分析。 首先,Cesium提供了一些基本的几何对象,例如点、线、面等,可以用来表示和操作地理空间数据。通过这些基本对象,可以进行一些简单的空间分析,如计算两个点之间的距离、两条线的交点等。 其次,Cesium可以与其他地理空间数据处理结合使用,如Turf.js、JSTS等。这些提供了丰富的空间分析功能,例如缓冲区分析、叠加分析、网络分析等。通过将这些与Cesium结合使用,可以在Cesium中实现更复杂的空间分析。 此外,Cesium还支持加载和展示各种地理空间数据格式,包括矢量数据(如GeoJSON、KML)、栅格数据(如影像、地形)以及点云数据等。通过加载和展示这些数据,可以对其进行空间分析,例如提取特定区域的数据、计算数据的统计特征等。 最后,Cesium还提供了一些插件和扩展,例如cesium-ion、cesium-sensor-volumes等。这些插件和扩展可以用来进行更复杂的空间分析,如视域分析、阴影分析等。 综上所述,尽管Cesium本身并不直接提供空间分析功能,但通过结合其他的使用、加载地理空间数据以及使用相关插件和扩展,我们可以在Cesium中实现各种空间分析操作。 ### 回答3: Cesium是一个用于构建虚拟地球和空间可视化的JavaScript。通过Cesium,我们可以实现多种空间分析功能。 首先,Cesium提供了高度精确的地理坐标定位系统,支持包括经纬度、高度、海拔等在内的多种空间坐标系统。我们可以通过Cesium的坐标转换函数,在不同坐标系统之间进行转换,实现空间数据的兼容性。 其次,Cesium提供了强大的地理信息处理功能。我们可以使用该加载和显示各种地理数据,如矢量数据、栅格数据、地形数据等。同时,Cesium还支持空间数据的可视化和渲染,可以将数据以三维模型、标注、热力图等形式呈现在虚拟地球上。 在空间分析方面,Cesium提供了一系列的工具和功能。例如,我们可以使用Cesium的渲染器,对空间数据进行空间关系分析,如相交、包含、相离等。此外,Cesium还支持路径规划和导航功能,可以进行经纬度之间的路线规划和导航。 另外,Cesium还提供了高级的空间分析功能,如可视域分析、阴影分析、地形剖面等。我们可以使用Cesium的可视化工具,在虚拟地球上模拟光照条件,并计算特定位置的可视域范围。同时,Cesium还支持地形剖面功能,可以跟踪沿着指定路径的地形特征,如高程、坡度等。 总而言之,Cesium通过提供强大的地理信息处理和可视化功能,为空间数据分析提供了丰富的工具和技术支持。无论是在地理信息系统、城市规划还是环境监测领域,Cesium都可以帮助我们更好地分析、展示和理解空间数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值