7 votos

¿Crear un buffer alrededor de un punto en LeafletJS?

Estoy usando LeafletJS. Quiero crear un buffer alrededor del punto.

Después de seleccionar un punto, el radio del buffer será especificado por el usuario en pies. Después de buscar un rato he encontrado este enlace de JSTS .

¿Funciona el buffer JSTS con LeafletJS? No soy capaz de encontrar ningún ejemplo para esto. Cualquier otra solución para lograr lo mismo será apreciada.

Después de mirar en el código de JSTS y buscar por un tiempo, llegué a una conclusión, no hay conversión entre la geometría de JSTS y la geometría de Leaflet JS. Así que no es posible utilizarla sin implementar la conversión.

5voto

Xitcod13 Puntos 338

Puede hacerlo con césped . Aquí hay un código para un ejemplo:

var turf = require('turf') // this line is for node.js, but you do not need it in the browser
var pt = {
  type: 'Feature',
  geometry: {
    type: 'Point',
    coordinates: [0, 0]
  },
  properties: {}
};
var unit = 'miles'

// 10 mile ring
var buffered = turf.buffer(pt, 10, unit)

ACTUALIZACIÓN:

Las entradas y salidas de turf son simplemente GeoJSON. No hay tipos especiales de turf. buffered es un objeto GeoJSON normal, por lo que puedes añadirlo a tu mapa de esta manera:

L.geoJson(buffered).addTo(map);

Recomiendo leer tanto el documentación sobre el césped en los datos y el Documentación del folleto sobre GeoJSON antes de ir mucho más allá.

0 votos

¿Cómo se consigue la función de césped amortiguado en el mapa de Leaflet? Esperaba una capa GeoJSON, pero no consigo que funcione (no se muestra ninguna capa con la característica del césped tamponado). ¿Podría usted elaborar este punto, por favor?

4voto

Old Pro Puntos 2851

Sólo para añadir para futuras referencias, conseguí que JSTS funcionara con Leaflet.js exportando / importando GeoJSON entre las dos bibliotecas.

Evidentemente, no es muy eficaz si se realizan muchos procesos, pero para las conversiones simples y puntuales es una solución bastante sencilla.

function buffer(leafletGeometry, distance){
    var reader = new jsts.io.GeoJSONReader();
    var input = reader.read(leafletGeometry.toGeoJSON());
    input = input.geometry.buffer(distance);

    var bufferGeoJSON = new jsts.io.GeoJSONWriter().write(input);
    return L.geoJson(bufferGeoJSON);
}

2voto

evojacking Puntos 21

¿No se puede utilizar LeafletJS círculo ? ¿Piensas hacer alguna consulta espacial con ese buffer?

0 votos

Sí, quiero utilizarlo después en la consulta espacial.

0 votos

¿Cómo se realiza la consulta espacial? ¿Con PostGIS?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X