方法:我目前正在使用turf.js进行地理处理,并将其作为broader mapping project的一部分;我的工作流程如下:
turf.merge
the water tile转换为单个多面turf.intersect
each tract polygon反对水多 Angular 形turf.erase
the water area from the tract polygon与问题:当我的过程在步骤3中遍历每个水瓦片时,它碰到一个特定的瓦片并开始引发此错误:
/Users/wboykinm/github/tribes/processing/water/node_modules/turf/node_modules/turf-intersect/index.js:45
if(poly2.type === 'Feature') geom2 = poly2.geometry;
^
TypeError: Cannot read property 'type' of null
at Object.module.exports [as intersect] (/Users/wboykinm/github/tribes/processing/water/node_modules/turf/node_modules/turf-intersect/index.js:45:11)
at Object.<anonymous> (/Users/wboykinm/github/tribes/processing/water/piranha.js:26:14)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
。 。 。对于所有后续迭代,该操作都会继续。一旦发生错误,该地区geojson文件的格式就会错误,并且不会在任何查看器中加载。
最令人困惑的是,仅当我通过草皮脚本按顺序运行所有图块时,才会发生此错误。当我只运行有问题的磁贴时,脚本会成功。如果我将所有水瓦片合并到一个geojson文件中,并直接将它对tracts文件进行
turf.erase
编码,该脚本还会导致geojson格式错误。另一个麻烦是,如果我将水瓦片合并到一个文件中,然后将其移交给QGIS并手动运行“差异”地理处理,则整个过程将正常进行。没有错误,有效的输出几何形状。所有迹象都指向几何无效的问题,可能与图块边界或我合并水多边形的方式有关。如何找到不良的几何并使用手边的工具(turf.js)进行修复?
最佳答案
基于该错误,似乎问题在于poly2不是功能(因为它没有type属性)。忽略这一点,有时用草皮修复不良几何形状的一种方法是将数量设为0的缓冲区。您可以尝试turf.buffer(badgeometry, 0)
。过去,这为我解决了不良的几何形状。
您可能要尝试的另一件事是在进程中断之前记录引起问题的磁贴,以查看是否可以发现任何明显错误的东西。您还可以尝试查看由于某种原因您希望成为要素的数据是A.要素集合还是B.编码的geojson要素。
关于javascript - turf.js可以用于查找和修复不良的geojson几何吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36440648/