PHP lat / lon in polygon功能,适用于交叉半球

时间:2016-03-04 03:54:28

标签: php latitude-longitude point-in-polygon

我目前使用下面的函数来确定纬度/经度是否在地球上的多边形内。

public function inPolygon($lat, $lon, $polylat, $polylon) {
    $j=count($polylat)-1;
    $oddNodes=false;
    for($i=0;$i<count($polylat);$i++){
        if($polylat[$i]<$lat && $polylat[$j]>=$lat || $polylat[$j]<$lat && $polylat[$i]>=$lat){
            if($polylon[$i]+($lat-$polylat[$i])/($polylat[$j]-$polylat[$i])*($polylon[$j]-$polylon[$i])<$lon){
                $oddNodes=!$oddNodes;
            }
        }
        $j=$i;
    }
    return $oddNodes;
}

问题是我现在在地球上有一个多边形,从北纬-176.57延伸到173.73然后又回到西半球。我目前使用的功能显然只有当纬度/经度都在同一个半球时才有效。

如何修复此功能以适应半球的交叉?

0 个答案:

没有答案