es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener la esquina de la caja de límites en unidades CRS en Cesium?

Para mi proyecto, estoy utilizando Cesium para mostrar en un mapa capas WMS (en un mapa 2D).
Para mejorar el rendimiento, utilizo el proveedor SingleTileImageryProvider para solicitar solamente una imagen.

El problema es: la solicitud necesita un parámetro llamado “BBOX” que corresponde a la esquina de la caja límite en unidades CRS.

Me pregunto cómo puedo obtener estos valores para solicitar la parte mostrada completa del mapa.

Por ejemplo, antes estaba utilizando WebMapServiceImageryProvider y Cesium asignaba automáticamente este BBOX a cada imagen. Pero eso no funciona con SingleTileImageryProvider.

Otra solución podría ser solicitar toda la capa WMS, a pesar de las partes ocultas.

He visto muchas cosas en internet, pero nada que responda mi pregunta.

Si alguien puede ayudarme, por favor.

Gracias a todos.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hola,

    Si estás utilizando Cesium para mostrar capas WMS en un mapa 2D y deseas aumentar el rendimiento utilizando SingleTileImageryProvider, es posible que necesites proporcionar el parámetro “BBOX” tú mismo.

    El parámetro BBOX especifica la esquina de la caja de límites en unidades del sistema de coordenadas CRS (Sistema de Referencia de Coordenadas) y puedes obtener estos valores utilizando las utilidades de Cesium.camera. Deberás capturar la vista actual del mapa y calcular la caja de límites en función de la posición, orientación y campo de visión de la cámara.

    Aquí tienes un fragmento de código que te puede ayudar a comenzar:

    // Obtén la vista actual de la cámara
    var camera = viewer.camera;
    
    // Obtén la extensión 2D actual del mapa
    var extent = viewer.scene.globe.ellipsoid.cartesian2CartographicRectangle(
        viewer.camera.computeViewRectangle());
    
    // Calcula los parámetros de la caja de límites (BBOX)
    var bbox = extent.west + "," + extent.south + "," + extent.east + "," + extent.north;
    
    // Utiliza bbox en tus solicitudes de SingleTileImageryProvider
    var provider = new Cesium.SingleTileImageryProvider({
        url: 'http://tu-url-wms.com',
        bbox: bbox
    });
    
    // Agrega la capa al mapa
    var layer = viewer.imageryLayers.addImageryProvider(provider);
    

    Ten en cuenta que este es solo un ejemplo básico: es posible que debas ajustar la configuración de la cámara o el sistema de coordenadas para adaptarlo a tus necesidades específicas. Además, el uso de SingleTileImageryProvider no siempre es la mejor optimización de rendimiento, ya que puede aumentar la carga en tu servidor si se realizan demasiadas solicitudes. Es posible que necesites experimentar con enfoques diferentes para ver cuál funciona mejor en tu caso particular.

    ¡Espero que esto te sea de ayuda!

Comments are closed.