У меня есть несколько полигонов и многоугольников. Как получить ограничивающие коробки? Мне нужно только автономное решение.Как получить ограничительную рамку объекта geojson?
Это мое решение:
function mymax($a, $b)
{
if ($a === null) return $b;
if ($b === null) return $a;
if($a > $b) return $a;
return $b;
}
function mymin($a, $b)
{
if ($a === null) return $b;
if ($b === null) return $a;
if($a < $b) return $a;
return $b;
}
function bbox($g, $bounds=array(null, null, null, null))
{
foreach($g as $iter)
{
if(is_array($iter))
{
$bounds = bbox($iter, $bounds);
}else{
$lon = $g[0];
$lat = $g[1];
$n = $bounds[0];
$s = $bounds[1];
$w = $bounds[2];
$e = $bounds[3];
$n = mymin($lat, $n);
$s = mymax($lat, $s);
$w = mymin($lon, $w);
$e = mymax($lon, $e);
return array($n, $s, $w, $e);
}
}
return $bounds;
}
Но есть проблема с 180/-180 долготы пересечения в ней.
Кто-нибудь это читает? Проблема перехода долготы 180/-180 заключается в том, что максимальное значение равно 180, а минимальное значение - 180. Это означает весь мир, но это неправильно. Смотреть эту картину:
Я нашел geoPHP библиотеку и там такая же ошибка в нем.