turf.buffer转化交叉线时 生产带洞的复杂多边形

2023-12-02 02:12

本文主要是介绍turf.buffer转化交叉线时 生产带洞的复杂多边形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 生成

// 将线数据转换为指定宽度的面数据
const bufferedPolygon = turf.buffer(line, bufferWidth, { units: 'meters' });

 判断渲染

bufferedPolygon.geometry.coordinates.length > 1 
//即为带洞的复杂多边形
let  buffereLength = bufferedPolygon.geometry.coordinates.length;
var x = {positions:undefined,//由于挖的这个洞,是x本身的一种数组集合,所以每一个对象里,又是一个x的形式holes:[]
}
for (let index = 0; index < buffereLength; index++) {if (index==0) {let arr1 = bufferedPolygon.geometry.coordinates[index].map(coord => [coord[0], coord[1]]);let position = Cesium.Cartesian3.fromDegreesArray(arr1.flat(4));x.positions = position}else {let arr2 = bufferedPolygon.geometry.coordinates[index].map(coord => [coord[0], coord[1]]);let holes = Cesium.Cartesian3.fromDegreesArray(arr2.flat(4));x.holes.push({positions: holes })}
}
//渲染
var polygon1 = new Cesium.PolygonGeometry({polygonHierarchy: x,// hierarchy:x,// extrudedHeight:0, //与height不能同时存在,否则height不生效height: this.polylineHeight,// perPositionHeight:false,// outline: true,// outlineWidth: 100,// fill: false,// arcType: Cesium.ArcType.RHUMB,// material: Cesium.Color.RED,vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
});
let River1 = new Cesium.Primitive({geometryInstances: new Cesium.GeometryInstance({geometry: polygon1}),appearance: new Cesium.EllipsoidSurfaceAppearance({aboveGround: true}),show: true
});
River1.id = "roadLine_" + roadLineArr[i].id
var River1_Material = new Cesium.Material({fabric: {type: 'Color',uniforms: {color: materialColor,//   frequency: 100.0,//   animationSpeed: 0.005,//   amplitude: 10.0,}}
});
River1.appearance.material = River1_Material;viewer.scene.primitives.add(River1);

这篇关于turf.buffer转化交叉线时 生产带洞的复杂多边形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443564

相关文章

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

最近心情有点复杂:论心态

一月一次的彷徨又占据了整个身心;彷徨源至不自信;而不自信则是感觉自己的价值没有很好的实现亦或者说是自己不认可自己的目前的生活和状态吧。 我始终相信一句话:任何人的生活形态完全是由自己决定的;外在的总归不能直达一个人的内心深处。所以少年 为了自己想要的生活 多坚持努力吧、不为别人只为自己心中的那一丝执着。 由此我看到了一个故事: 一个心情烦躁的人去拜访禅师。他问禅师:我这辈子就这么注定了吗?您

5.1声道转化为左右声道

5.1声道转化为左右声道downmix http://szfzafa.blog.163.com/blog/static/11895416720120724729214/ 标题: Downmix 5.1ch to 2ch in AVS   最简单: function Dmix6Stereo(clip a) {  # 6 Channels L,R,C,LFE,SL,SR   f

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案(Pattern)填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思路,多边形的斜线填充应该属于“多边形与折线的布尔运算”范畴。 第一个问题是如何获得斜线,这条斜线应该满足什么样

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后