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

相关文章

Java文件与Base64之间的转化方式

《Java文件与Base64之间的转化方式》这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者... 目录Java文件与Base64之间的转化1、文件转Base64工具类2、Base64转文件工具类3、

如何将二进制文件流转化为MockMultipartFile文件

《如何将二进制文件流转化为MockMultipartFile文件》文章主要介绍了如何使用Spring框架中的MockMultipartFile类来模拟文件上传,并处理上传逻辑,包括获取二进制文件流、创... 目录一、名词解释及业务解释1.具体业务流程2.转换对象解释1. MockMultipartFile2

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

java poi实现Excel多级表头导出方式(多级表头,复杂表头)

《javapoi实现Excel多级表头导出方式(多级表头,复杂表头)》文章介绍了使用javapoi库实现Excel多级表头导出的方法,通过主代码、合并单元格、设置表头单元格宽度、填充数据、web下载... 目录Java poi实现Excel多级表头导出(多级表头,复杂表头)上代码1.主代码2.合并单元格3.

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