方法:我目前正在使用turf.js进行地理处理,并将其作为broader mapping project的一部分;我的工作流程如下:

  • 拉动整个县的人口普查区域的geojson
  • 从OSM中为县区
  • 提取水多边形的geojson磁贴
  • Recursively pull将大片和每个水瓦拼成a node script
  • 在脚本中,将 turf.merge the water tile转换为单个多面
  • 在脚本中,recursively turf.intersect each tract polygon反对水多 Angular 形
  • 在脚本中,如果 turf.erase the water area from the tract polygon
  • 相交,则为This is the input tracts file
  • 将水洗净的垃圾场倾倒以提交

  • 问题:当我的过程在步骤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文件的格式就会错误,并且不会在任何查看器中加载。
  • This is the OSM water tile that continually throws the error
  • ojit_a

  • 最令人困惑的是,仅当我通过草皮脚本按顺序运行所有图块时,才会发生此错误。当我只运行有问题的磁贴时,脚本会成功。如果我将所有水瓦片合并到一个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/

    10-13 02:21