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

相关文章

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel

Go 1.23中Timer无buffer的实现方式详解

《Go1.23中Timer无buffer的实现方式详解》在Go1.23中,Timer的实现通常是通过time包提供的time.Timer类型来实现的,本文主要介绍了Go1.23中Timer无buff... 目录Timer 的基本实现无缓冲区的实现自定义无缓冲 Timer 实现更复杂的 Timer 实现总结在

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应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像