复杂图斑分割

dianlixunjian
徐景良 2024-10-09 15:28:31 +08:00
parent 27804036dd
commit 01f256af04
2 changed files with 53 additions and 6 deletions

View File

@ -147,6 +147,8 @@ export async function splitPolygonByFill(drawPolygon, outerPolygon) {
// 多面数据分割裁剪
export async function splitPolygonByMultiFill(drawPolygons,outerPolygon){
let tempDrawPolygons = [...drawPolygons]
drawPolygons = handlerMultiPolygonToPolygon(tempDrawPolygons);
return new Promise((resolve,reject)=>{
try{
@ -170,14 +172,24 @@ export async function splitPolygonByMultiFill(drawPolygons,outerPolygon){
console.log("原始数据处理精度后坐标",featuresArray);
// 求交集图斑
drawPolygons.forEach((item,index)=>{
let turfPolygon = turf.truncate(turf.polygon(item.geometry.coordinates),dealOptions);
//
console.log("coordinates",index,item.geometry.coordinates)
try{
let turfPolygon = turf.truncate(turf.polygon(item.geometry.coordinates),dealOptions);
// 取交集
let intersection = turf.intersect(turf.featureCollection([featuresArray[0],turfPolygon]));
if(intersection){
resultArray.push(intersection);
let intersection = turf.intersect(turf.featureCollection([featuresArray[0],turfPolygon]));
if(intersection){
resultArray.push(intersection);
}
console.log("第3步交集"+index+"",intersection)
splitFeaturesArray.push(turfPolygon);
}catch(e){
console.log(e);
}
console.log("第3步交集"+index+"",intersection)
splitFeaturesArray.push(turfPolygon);
})
// 取差集
@ -201,6 +213,29 @@ export async function splitPolygonByMultiFill(drawPolygons,outerPolygon){
})
}
// MultiPolygon转换Polygon
export function handlerMultiPolygonToPolygon(sourcePolygons){
let polygons = [];
sourcePolygons.forEach((item,ndex)=>{
if(item.geometry.type == "MultiPolygon"){
item.geometry.coordinates.forEach((coorItem,idx)=>{
let polygonItem = {
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": coorItem
},
"properties": {}
}
polygons.push(polygonItem);
})
}else if(item.geometry.type == "Polygon"){
polygons.push(item);
}
})
return polygons;
}
export function printLngLat(arr){
arr.forEach((item,index)=>{
console.log(item[1]+","+item[0]+"\n");

View File

@ -0,0 +1,12 @@
<template>
<div>
</div>
</template>
<script lang="ts" setup>
import Vue from 'vue'
</script>
<style lang="scss" scoped>
</style>