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复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

JavaScript时间戳与时间的转化常用方法

《JavaScript时间戳与时间的转化常用方法》在JavaScript中,时间戳(Timestamp)通常指Unix时间戳,即从1970年1月1日00:00:00UTC到某个时间点经过的毫秒数,下面... 目录1. 获取当前时间戳2. 时间戳 → 时间对象3. 时间戳php → 格式化字符串4. 时间字符

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、