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
| Tecla | Acción |
|---|---|
| Ctrl/Cmd + Enter | Ejecutar el código actual |
| Enter | Nueva línea (edición multilínea) |
| ↑ / ↓ | Recuperar el comando anterior / siguiente (cuando el cursor está en la primera / última línea) |
| Tab o Ctrl + Space | Autocompletar 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.
- New / Open / Save / Save As funcionan con archivos
.py. En la aplicación de escritorio, Save escribe de vuelta en el archivo abierto; en el navegador lo descarga (o usa la File System Access API). Un archivo sin guardar muestra un•junto a su nombre. - Run (o Ctrl/Cmd+Enter) ejecuta el script completo — o solo las líneas seleccionadas si tiene una selección. La salida y los errores aparecen en la consola de la derecha.
- Tab indenta, Ctrl+Space autocompleta y Ctrl/Cmd+S guarda.
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étodo | Descripció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. |
layers | Lista 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(...).
| Miembro | Descripción |
|---|---|
id, name, type | Identidad (solo lectura). |
visible | Obtener/establecer la visibilidad. |
opacity | Obtener/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
- Se ejecuta en el hilo principal, por diseño, de modo que Python pueda controlar el mapa
en vivo sincrónicamente. Una celda de larga duración pausa brevemente la interfaz — evite bucles
ajustados y prefiera
await mappview.run_algorithm(...)para trabajo pesado. - Aislado (sandbox). Pyodide no puede leer el sistema de archivos de su equipo ni acceder a las
herramientas locales de la aplicación de escritorio; el acceso a la red sigue la política de
seguridad de contenido de la aplicación. Por ello,
to_image()devuelve bytes en lugar de escribir un archivo. - La misma API que los cuadernos. El paquete Python
mappviewexpone los mismos métodos desde un objetoMapde Jupyter, de modo que los fragmentos de la consola y el código de los cuadernos son intercambiables.