turf

GIS开发:胖箭头的画法

大兔子大兔子 提交于 2020-11-05 11:20:16
Cesium开发:简单箭头画法 mapbox-gl+turf.js简单箭头画法 之前分享过在两类地图上的箭头画法,效果是单线,顶部加了箭头的效果,这里分享一下在地图上胖箭头的画法。 胖箭头是在箭头的首尾两点上,横向进行了扩充,最后以面状图层的形式画出来。 胖箭头根据首尾两点生成面的方式: --将首尾两点连接成直线,计算直线在地图中的北方向夹角,可以使用turf.js进行计算; --计算和首尾直线垂直的6个点,分别是箭头尾部的两个点和箭头头部的4个样式点,turf.js中有方法计算这6个点,可以参见文章开始的简单箭头中的方法; --将以上的6个点按照顺序连接起来,形成面状的效果,就能在地图上达到以下的胖箭头形状; --在尾部的附近取一个点,重新进行面的连接,就能够实现箭头的燕尾效果,参见下图绿色线的效果; 地图上标绘效果,都能按照一定的算法进行计算,只不过按照经纬度的单位,需要进行一定的转换,使用一些开源的类库,能够解决不少问题。 本文分享自微信公众号 - 技术几句杂谈(tecsimplepoint)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4599572/blog/4702990

基于Turf.js教你快速实现地理围栏的合并拆分

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-03 06:32:27
以下内容转载自totoro的文章《几何计算-基于Turf.js实现多边形的拆分及合并》 作者:totoro 链接: https://blog.totoroxiao.com/geo-polygon-split-union/ 来源: https://blog.totoroxiao.com/ 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 JavaScript API GL 近期为支持物流行业实现了几何图形编辑器,用户可通过编辑器接口进行点、线、面、圆的绘制和编辑。在物流行业中常见的使用场景是配送区域及地理围栏的绘制,常会有对已有区域进行拆分或者合并的需要,所以编辑器也提供了相应的功能。本文介绍了如何基于Turf实现多边形的拆分及合并。 背景介绍 多边形的拆分合并 多边形的拆分是指将多边形沿着线切分为几个多边形。如下图所示,不仅可以沿线一分为二,当线与多边形有多段相交时也可以分为多份,另外当多边形带洞(环多边形)时也可以在拆分后保持洞的形状。 多边形的合并是指将多个多边形合并为一个多边形,其前提条件是多边形之间有交叉区域或者共边。如下图所示,完全共边或者部分共边都可以合并,当有交叉时会贯通交叉部分。 Turf.js 不难发现,多边形的拆分合并中会有大量且复杂的几何计算,包括点、线、面相互之间的相交、包含等计算。不过我们并不需要造轮子,可以使用Turf

基于Turf.js教你快速实现地理围栏的合并拆分

隐身守侯 提交于 2020-08-19 13:50:29
以下内容转载自totoro的文章《几何计算-基于Turf.js实现多边形的拆分及合并》 作者:totoro 链接: https://blog.totoroxiao.com/geo-polygon-split-union/ 来源: https://blog.totoroxiao.com/ 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 JavaScript API GL 近期为支持物流行业实现了几何图形编辑器,用户可通过编辑器接口进行点、线、面、圆的绘制和编辑。在物流行业中常见的使用场景是配送区域及地理围栏的绘制,常会有对已有区域进行拆分或者合并的需要,所以编辑器也提供了相应的功能。本文介绍了如何基于Turf实现多边形的拆分及合并。 背景介绍 多边形的拆分合并 多边形的拆分是指将多边形沿着线切分为几个多边形。如下图所示,不仅可以沿线一分为二,当线与多边形有多段相交时也可以分为多份,另外当多边形带洞(环多边形)时也可以在拆分后保持洞的形状。 多边形的合并是指将多个多边形合并为一个多边形,其前提条件是多边形之间有交叉区域或者共边。如下图所示,完全共边或者部分共边都可以合并,当有交叉时会贯通交叉部分。 Turf.js 不难发现,多边形的拆分合并中会有大量且复杂的几何计算,包括点、线、面相互之间的相交、包含等计算。不过我们并不需要造轮子,可以使用Turf

cesium1.63.1api版本贴地贴模型量算工具效果(附源码下载)

醉酒当歌 提交于 2020-05-02 03:58:20
前言 cesium 官网的api文档介绍地址 cesium官网api ,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子: cesium 官网在线例子 ,这个也是学习 cesium 的好素材。 不少订阅者向我反馈之前的那篇( https://xiaozhuanlan.com/topic/8210364597 ) 量算工具的cesiumAPI版本太低,不能适用新版本。所以,推出新版本的量算工具效果,对应版本是cesium1.63.1API的。 内容概览 1.cesium1.63.1API版本贴地量算工具效果 2.源代码demo下载 效果图如下: 实现思路:测距以及测面都是利用到cesium鼠标操作监听事件:鼠标左键Cesium.ScreenSpaceEventType.LEFT_CLICK、鼠标移动Cesium.ScreenSpaceEventType.MOUSE_MOVE、鼠标右键Cesium.ScreenSpaceEventType.RIGHT_CLICK。鼠标左键事件,获取点击地图的每个坐标点;鼠标移动事件,动态扑捉鼠标移动状态,下一个坐标点位置;鼠标右键意味着地图量算结束状态。另外,量算面积的计算,结合turf.js来计算。 距离量算的监听事件函数,里面涉及到细节函数,自行看对应的源码demo: this .handler.setInputAction(

openlayers5-webpack 入门开发系列结合 turf.js 实现等值线(附源码下载)

一曲冷凌霜 提交于 2020-05-01 20:03:53
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档 详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载 ,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 openlayers5 api文档介绍 ,详细介绍 openlayers5 每个类的函数以及属性等等 openlayers5 在线例子 内容概览 openlayers5 结合 turf.js 实现等值线 源代码 demo 下载 效果图如下: 关键函数 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