Un conjunto de clases de PHP ayudante para ayudar a generar geometrías de Geojson que cumplen con la especificación de Geojson.
El orden de anillo de polígono no estaba definido en la especificación original de Geojson, pero dado que RFC7946 se exige la regla de la mano derecha .
Un anillo lineal debe seguir la regla de la mano derecha con respecto al área que límite, es decir, los anillos exteriores son en sentido antihorario y los agujeros son en sentido horario.
(Si conoce el inglés británico en lugar del inglés americano, simplemente sustituya en sentido antihorario por el sentido contrario ).
geojson-rewind es un puerto para PHP del módulo Node.js geojson-rewind de Mapbox por Tom McWright et al. Créditos completos, felicitaciones y reconocimientos se deben a Tom y al resto del equipo de Mapbox.
La forma más fácil de instalar geojson-rewind es mediante el uso del compositor:
$> composer require vicchi/geojson-rewind
<?php
include " vendor/autoload.php " ;
$ source = [
' type ' => ' Polygon ' ,
' coordinates ' => [
[ [ 100.0 , 0.0 ], [ 101.0 , 0.0 ], [ 101.0 , 1.0 ], [ 100.0 , 1.0 ], [ 100.0 , 0.0 ] ],
[ [ 100.2 , 0.2 ], [ 100.8 , 0.2 ], [ 100.8 , 0.8 ], [ 100.2 , 0.8 ], [ 100.2 , 0.2 ] ]
]
];
$ enforce_rfc7946 = true ;
$ output = Vicchi GeoJson Rewind:: rewind ( $ source , $ enforce_rfc7946 );
// show output for demonstration purposes
var_dump ( $ output );
?> La salida podría verse así ( $> es el indicador de la línea de comandos).
$> php test.php
array(2) {
["type"]=>
string(7) "Polygon"
["coordinates"]=>
array(2) {
[0]=>
array(5) {
[0]=>
array(2) {
[0]=>
float(100)
[1]=>
float(0)
}
[1]=>
array(2) {
[0]=>
float(101)
[1]=>
float(0)
}
[2]=>
array(2) {
[0]=>
float(101)
[1]=>
float(1)
}
[3]=>
array(2) {
[0]=>
float(100)
[1]=>
float(1)
}
[4]=>
array(2) {
[0]=>
float(100)
[1]=>
float(0)
}
}
[1]=>
array(5) {
[0]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.2)
}
[1]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.8)
}
[2]=>
array(2) {
[0]=>
float(100.8)
[1]=>
float(0.8)
}
[3]=>
array(2) {
[0]=>
float(100.8)
[1]=>
float(0.2)
}
[4]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.2)
}
}
}
}
geojson-rewind se publica bajo la licencia BSD-3-Cláusula. Consulte el archivo de licencia para obtener más información.