复杂图斑分割
parent
27804036dd
commit
01f256af04
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
<template>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import Vue from 'vue'
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
Loading…
Reference in New Issue