【问题标题】:How to check if point is inside polygon MongoDb?如何检查点是否在多边形 MongoDb 内?
【发布时间】:2022-10-07 08:47:27
【问题描述】:

我将几何多边形存储在 MongoDb 中。它代表一个交付区域。输入参数是坐标点。如何检查该点是否在多边形之一内?

我知道光线投射算法,但如何使用 MnogoDb 引擎做到这一点?它是最佳方式还是更好地在脚本中进行计算?

    标签: php node.js mongodb


    【解决方案1】:

    您可以在 PHP 中很容易地测试一个点是否在多边形内。这可能比使用 Mongo 更容易

    $vertx[10, 100, 150, 20]; // all x coordinates
    $verty[10, 20, 100, 90]; // all y coordinates
    $nvert = count($vertx);
    $x = 50;
    $y = 50;
    
    $test = inpoly($nvert, $vertx, $verty, $x, $y); // true
    
    function inpoly($nvert, $vertx, $verty, $testx, $testy) {
      $i = $j = $c = 0;
      for ($i = 0, $j = $nvert - 1; $i < $nvert; $j = $i++) {
        if ((($verty[$i] > $testy) != ($verty[$j] > $testy)) && ($testx < ($vertx[$j] - $vertx[$i]) * ($testy - $verty[$i]) / ($verty[$j] - $verty[$i]) + $vertx[$i])) {
          $c = !$c;
        }
      }
      return $c;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2013-03-29
      • 2016-09-14
      • 2011-06-17
      相关资源
      最近更新 更多