широта долгота — PHP широта / долгота в функции многоугольника, которая приспосабливает пересечение полушарий

В настоящее время я использую функцию ниже, чтобы определить, находится ли широта / долгота внутри многоугольника на земле.

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, а затем снова возвращается в западное полушарие. Функция, которую я сейчас использую, очевидно, работает, только если широта / долгота находятся в одном и том же полушарии.

Как я могу исправить эту функцию, чтобы приспособить пересечение полушарий?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]