¿Cómo calcular el cuadro delimitador de un objeto geojson usando python o javascript?

14

Tengo la aplicación django con un folleto en la interfaz y necesito calcular el bbox de un objeto geojson para poder pasar las coordenadas a map.fitBounds()

He probado algunas librerías, así como los getBoundsmétodos de ciertos objetos en Leaflet, como FeatureGroup, pero se quejó de que los límites no estaban definidos.

¿Alguien puede señalarme una solución simple para esto?

fccoelho
fuente
1
En general, map.fitBounds (featureGroupName.getBounds ()) debería funcionar, siempre que FeatureGroup contenga datos. ¿Ha examinado el FeatureGroup para ver qué aspecto tiene en el momento en que intenta obtener los límites?
nathansnider

Respuestas:

26

Si desea calcular los límites de una capa GeoJSON, puede hacer:

var geojsonLayer = L.geoJson(your_data).addTo(map);
map.fitBounds(geojsonLayer.getBounds());

Ejemplo: http://jsfiddle.net/expedio/qgkbrjwt/

(El mapa se acerca a la extensión de la capa después de que la capa está completamente cargada)

Si desea calcular los límites de cada característica individual, puede hacer lo siguiente:

var myGeoJSON = L.geoJson(data, {
    onEachFeature: function (feature, layer) {
        // assign bounds to feature
        feature.properties.bounds_calculated = layer.getBounds();
    }
}).addTo(map);

// do whatever you want with
// feature.properties.bounds_calculated

Ejemplo: http://jsfiddle.net/expedio/fxxguv0v/

(Zoom para mostrar la función en cada ventana emergente)

Thomas B
fuente
1
Se corrigió
sidonaldson
2

Use geojson-bbox para calcular el bbox de cualquier geojson

Uso:

<script src="path/to/geojson-bbox.min.js"></script>
var extent = bbox(geojson);
//extent is an array [left, bottom, right, top]

Hay un módulo npm para geojson-bbox

Gagan
fuente