MappView

Manual/Guías

Consola Python

La consola Python ejecuta Python dentro de la propia aplicación, sobre el mapa que está visualizando. Ábrala desde Procesamiento → Python Console. Se acopla como un panel redimensionable en la parte inferior de la ventana (arrastre su borde superior para cambiar el tamaño y use el botón para cerrarla) — no bloquea el resto de la aplicación.

Python se ejecuta en su navegador mediante Pyodide (CPython compilado a WebAssembly), de modo que funciona tanto en la build web como en la de escritorio sin nada que instalar. La consola expone un único objeto, mappview, que controla la aplicación en vivo — sus métodos reflejan el paquete Python mappview, así que lo que aprenda aquí es transferible a los cuadernos y viceversa.

Primera ejecución

El runtime de Python se descarga la primera vez que abre la consola (una descarga única de unos pocos MB, mostrada como mensaje de progreso en el encabezado). Después permanece precargado, y sus variables persisten mientras la aplicación esté abierta — incluso si cierra y vuelve a abrir el panel.

Escriba código en el cuadro de entrada y pulse Ctrl/Cmd + Enter (o haga clic en Run) para ejecutarlo. La salida, los valores devueltos y los errores aparecen en el historial desplazable superior.

Atajos de edición

TeclaAcción
Ctrl/Cmd + EnterEjecutar el código actual
EnterNueva línea (edición multilínea)
↑ / ↓Recuperar el comando anterior / siguiente (cuando el cursor está en la primera / última línea)
Tab o Ctrl + SpaceAutocompletar el nombre o atributo bajo el cursor

El autocompletado introspecciona el runtime en vivo, de modo que mappview. lista sus métodos reales, y también se autocompletan sus propias variables y los módulos importados. Cuando coincide más de un candidato, aparece una lista — use ↑/↓ para elegir y Enter/Tab para aceptar, o Esc para descartar.

mappview.get_center()        # [lng, lat] of the current view
mappview.get_bounds()        # [west, south, east, north]
mappview.fly_to(-122.4, 37.8, zoom=10)

Editor de scripts

Para scripts multilínea que quiera conservar, haga clic en Show editor (el icono del panel en el encabezado) para abrir un editor de scripts junto a la consola — como el editor Python de QGIS. Arrastre el divisor para redimensionarlo y vuelva a hacer clic en el icono para ocultarlo.

El editor comparte el intérprete de la consola, de modo que una variable o función definida en un script está disponible de inmediato en la consola, y viceversa.

Controlar el mapa

# Add data (a GeoJSON dict, a geometry, or anything with __geo_interface__)
layer_id = mappview.add_geojson(
    {"type": "Point", "coordinates": [-122.4, 37.8]}, name="Pin"
)

# Style, toggle, and inspect layers
layer = mappview.get_layer(layer_id)
layer.opacity = 0.6
layer.visible = False
layer.set_style(circleRadius=8, fillColor="#ff0000")

for layer in mappview.layers:
    print(layer.name, layer.type, layer.visible)

# Identify features at a point (like clicking the map)
hits = mappview.identify(-122.4, 37.8)

Operaciones asíncronas

La consola admite await de nivel superior. Algunas operaciones son asíncronas y deben ser esperadas:

# Fetch a remote GeoJSON URL and add it
await mappview.load_geojson("https://example.com/data.geojson", name="Data")

# Run a processing algorithm; result layers are added to the map
mappview.list_algorithms()            # discover ids + parameters
result = await mappview.run_algorithm("buffer", {"layer": layer_id, "distance": 1000})
print(result["logs"], result["resultLayerIds"])

Cargar más paquetes

Para mantener un arranque rápido, solo el runtime base se carga de antemano. Incorpore paquetes adicionales bajo demanda:

await mappview.load_package("numpy")
import numpy as np
np.array([1, 2, 3]).mean()

await mappview.load_package("geopandas")   # also pulls shapely/pyproj/pandas

Cualquier paquete de la distribución Pyodide está disponible de esta manera.

Referencia de la API mappview

MétodoDescripción
get_view()Cámara en vivo {center, zoom, bearing, pitch, bbox}.
get_center()Centro actual del mapa [lng, lat].
get_bounds()Límites actuales del viewport [west, south, east, north].
fly_to(lng, lat, zoom=, bearing=, pitch=, duration=)Anima la cámara; solo cambian los campos indicados.
fit_bounds([w, s, e, n])Ajustar la cámara a un rectángulo delimitador.
set_basemap(url)Establecer el estilo del mapa base (una URL http(s) o relativa a la raíz).
identify(lng, lat, layer_id=None)Consultar las geometrías renderizadas en un punto (como un clic).
add_geojson(data, name=)Añadir una capa desde un dict GeoJSON / geometría / __geo_interface__; devuelve el id de capa.
await load_geojson(url, name=)Obtener una URL GeoJSON y añadirla; devuelve el id de capa.
layersLista de objetos Layer, en orden de dibujo.
get_layer(layer_id)El Layer con ese id (lanza error si no existe).
remove_layer(layer_id)Eliminar una capa por id.
list_algorithms()Algoritmos de procesamiento disponibles (id, name, group, parameters).
await run_algorithm(id, parameters=None)Ejecutar un algoritmo; añade capas de resultado y devuelve {logs, resultLayerIds}.
to_image()Capturar el mapa actual como bytes PNG.
await load_package(name)Cargar un paquete de Pyodide bajo demanda.

Layer

Un manejador devuelto por mappview.layers / mappview.get_layer(...).

MiembroDescripción
id, name, typeIdentidad (solo lectura).
visibleObtener/establecer la visibilidad.
opacityObtener/establecer la opacidad (0–1).
set_style(**style)Fusionar sobrescrituras de estilo (p. ej., fillColor="#ff0000").
get_features()Las geometrías de la capa como objetos Feature.
zoom_to()Ajustar la cámara a la extensión de la capa.
remove()Eliminar la capa del mapa.

Feature

Una geometría GeoJSON devuelta por Layer.get_features(). Es un dict corriente (por lo que se serializa y alimenta geopandas.GeoDataFrame.from_features), con accesores convenientes .geometry, .properties, .id y __geo_interface__.

Notas y limitaciones