import * as turf from '@turf/turf';
// 定义面
const polygon = turf.polygon([[
[-122.801742, 45.48565],
[-122.801742, 45.60491],
[-122.584762, 45.60491],
[-122.584762, 45.48565],
[-122.801742, 45.48565]
]]);
// 中心点
const center = turf.centerOfMass(polygon);
// 测试点半径
const radius = 1500; // meters
// 旋转角度
const angle = 5; // degrees
// 生成测试点序列
const points = [];
for (let i = 0; i < 360 / angle; i++) {
points.push(turf.transformRotate(center, angle * i, { units: 'meters', distance: radius }));
}
// 计算角度
let angleSum = 0;
let insideCount = 0;
points.forEach((point) => {
if (turf.booleanPointInPolygon(point, polygon)) {
const bearing = turf.bearing(center, point);
const angleDiff = (bearing - angleSum + 360) % 360;
angleSum += angleDiff;
insideCount++;
}
});
// 平均角度
const averageAngle = angleSum / insideCount;
console.log('Average angle: ', averageAngle);
turf计算点与面两侧之间的夹角
最新推荐文章于 2025-11-13 00:01:19 发布

439

被折叠的 条评论
为什么被折叠?



