使用 Turfjs 和 TypeScript 操作多边形很困难

发布于 2025-01-15 20:42:33 字数 1223 浏览 3 评论 0原文

我已经进行了全面搜索,但没有找到使用 Turfjs 和 Typescript 解决此问题的答案。我是初学者,所以如果答案很明显,请原谅我。我正在尝试使用 turf.intersect 来帮助我重绘多边形,这样就不再有重叠。我在这里可能有几个错误,但我得到的错误消息是在 junctionArray[i] 上,内容是:

'Position[] | 类型的参数Position[][]' 不可分配给“Position[]”类型的参数。 类型“Position[][]”不可分配给类型“Position[]”。 类型“Position[]”不可分配给类型“Position”。 类型“Position”不可分配给类型“number”。ts(2345)

谁能指出我正确的方向?看起来 turf.intersect 创建了一个多边形或多多边形,但我无法弄清楚在定义它后如何使用交集。

function adjustedBoundaries(newAreaBoundaries:turf.Polygon,
  oldAreaBoundaries:turf.Polygon){
const intersection = turf.intersect(newAreaBoundaries, oldAreaBoundaries);
const intersectionArray = intersection?.geometry.coordinates;
  if(intersectionArray){
let oldAreaSpliceIndex = 0;
for(let i = 0; i < intersectionArray.length; i++){
  if(oldAreaBoundaries.coordinates.includes(intersectionArray[i])){
    intersectionArray.splice(i,1);
    oldAreaSpliceIndex = oldAreaBoundaries.coordinates.indexOf(intersectionArray[i]);
    oldAreaBoundaries.coordinates.splice(oldAreaSpliceIndex,1);
  }}
for(let i = 0; i < intersectionArray.length; i++){
  oldAreaBoundaries.coordinates.splice(oldAreaSpliceIndex,0,intersectionArray[i])
}
return oldAreaBoundaries;
}}

I've searched all over and haven't found an answer to this issue using Turfjs and Typescript. I'm a beginner, so please forgive me if the answer is obvious. I'm trying to use turf.intersect to help me redraw a polygon so there is no longer an overlap. I probably have several mistakes in here, but the error message I get is on intersectionArray[i], saying:

Argument of type 'Position[] | Position[][]' is not assignable to parameter of type 'Position[]'.
Type 'Position[][]' is not assignable to type 'Position[]'.
Type 'Position[]' is not assignable to type 'Position'.
Type 'Position' is not assignable to type 'number'.ts(2345)

Can anyone point me in the right direction? It looks like turf.intersect creates a polygon OR a multipolygon, but I cannot figure out how to work with the intersection after defining it.

function adjustedBoundaries(newAreaBoundaries:turf.Polygon,
  oldAreaBoundaries:turf.Polygon){
const intersection = turf.intersect(newAreaBoundaries, oldAreaBoundaries);
const intersectionArray = intersection?.geometry.coordinates;
  if(intersectionArray){
let oldAreaSpliceIndex = 0;
for(let i = 0; i < intersectionArray.length; i++){
  if(oldAreaBoundaries.coordinates.includes(intersectionArray[i])){
    intersectionArray.splice(i,1);
    oldAreaSpliceIndex = oldAreaBoundaries.coordinates.indexOf(intersectionArray[i]);
    oldAreaBoundaries.coordinates.splice(oldAreaSpliceIndex,1);
  }}
for(let i = 0; i < intersectionArray.length; i++){
  oldAreaBoundaries.coordinates.splice(oldAreaSpliceIndex,0,intersectionArray[i])
}
return oldAreaBoundaries;
}}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文