[general]
name=Portolan Registry
qgisMinimumVersion=3.34
qgisMaximumVersion=4.99
supportsQt6=True
description=Browse the Portolan registry of cloud-native geospatial catalogs, add their data to the map, and download it.
description[es]=Explore el registro de Portolan de catálogos geoespaciales nativos de la nube, añada sus datos al mapa y descárguelos.
description[fr]=Parcourez le registre Portolan des catalogues géospatiaux cloud-native, ajoutez leurs données à la carte et téléchargez-les.
about=Lists every catalog in the Portolan registry and walks each catalog's STAC tree. Adds PMTiles as vector tile layers styled with the catalog's own MapLibre style, read through QGIS's network settings. Loads GeoParquet through DuckDB, limited to the map extent when you choose. Opens GeoJSON, FlatGeobuf, COG, and COPC assets over HTTP without a download. Downloads an asset, a collection, or a whole catalog into a folder that keeps the catalog's layout, and verifies each file against its file:checksum. GeoParquet needs DuckDB 1.5.0 or newer in QGIS's Python; the plugin shows the install command when it is missing.
about[es]=Lista todos los catálogos del registro de Portolan y recorre el árbol STAC de cada catálogo. Añade PMTiles como capas de teselas vectoriales con el propio estilo MapLibre del catálogo, leídas a través de la configuración de red de QGIS. Carga GeoParquet mediante DuckDB, limitado a la extensión del mapa si así lo elige. Abre recursos GeoJSON, FlatGeobuf, COG y COPC por HTTP sin descargarlos. Descarga un recurso, una colección o un catálogo completo en una carpeta que conserva la estructura del catálogo, y verifica cada archivo con su file:checksum. GeoParquet necesita DuckDB 1.5.0 o posterior en el Python de QGIS; el complemento muestra el comando de instalación cuando falta.
about[fr]=Liste chaque catalogue du registre Portolan et parcourt l'arborescence STAC de chaque catalogue. Ajoute les PMTiles en couches de tuiles vectorielles avec le style MapLibre du catalogue, lues selon les paramètres réseau de QGIS. Charge le GeoParquet avec DuckDB, limité à l'emprise de la carte si vous le choisissez. Ouvre les ressources GeoJSON, FlatGeobuf, COG et COPC par HTTP sans téléchargement. Télécharge une ressource, une collection ou un catalogue entier dans un dossier qui conserve la structure du catalogue, et vérifie chaque fichier avec sa file:checksum. GeoParquet nécessite DuckDB 1.5.0 ou plus récent dans le Python de QGIS ; l'extension affiche la commande d'installation s'il manque.
version=0.3.1
author=Portolan contributors
email=nlebovits@pm.me
repository=https://github.com/portolan-sdi/portolan-registry-qgis
tracker=https://github.com/portolan-sdi/portolan-registry-qgis/issues
homepage=https://portolan-sdi.github.io/portolan-registry-qgis/
changelog=
 Version 0.3.1:
 - QGIS does not freeze when a background read ends while the window updates. A thumbnail, a catalog document, or a PMTiles tile read could stop QGIS at random before.

 Version 0.3.0:
 - **Add to map** has a **SQL** tab for GeoParquet. Filter the rows with a QGIS expression, select the columns, preview the first 100 rows, and copy the DuckDB query as a script. **Write my own SQL** replaces the choice with your own `SELECT`. Loads, downloads, and saved projects keep the choice, and a project asks before it runs SQL that its author wrote.
 - **Copy as GDAL command**, in the arrow menu next to **View on map**, **Load full data**, and **Add as one layer**, copies the `gdal_translate`, `ogr2ogr`, or mosaic commands that do the same outside QGIS.
 - **Zoom to Layer** on a PMTiles layer frames the data instead of the whole world. The layer properties show the extent of the archive.
 - The plugin shows its window, messages, and plugin manager description in Spanish and French when QGIS runs in either language. Numbers and file sizes use that language's separators.
 - The documentation site is available in Spanish at `/es/` and in French at `/fr/`, with a language menu in the header.
 - **Load full data** reads partitioned GeoParquet that a `partition:glob` or `glob` asset names. DuckDB reads an `s3://` or `gs://` glob directly. For a glob that only HTTPS serves, the plugin loads the GeoParquet file of each item in the area of interest. **Download** lists and saves the partition files.
 - A partitioned Source Cooperative product loads from the bucket prefix that the Source Cooperative API gives, such as `tge-labs/ftw-global-data/` for `ftw/global-data`.
 - When an `s3://` glob names a bucket that Amazon S3 does not have, the message says so and says that the catalog gives no other endpoint.
 - A clipped GeoParquet load counts and copies the features faster. A load of 17 files takes about 33 seconds instead of 584.
 - GeoParquet loads, COG mosaics, and downloads show the percentage done and the time left.
 - **Add as one layer** also adds a collection of GeoParquet items. Item rows show any data file.
 - A style that gives a `pmtiles://` tiles template loads, and the plugin matches a style to its archive by file name.
 - Relative links resolve against the final URL after a redirect.
 - **Load full data** finds the geometry of a GeoParquet file without geo metadata in a WKB column named `shape` or `geog`, the same names that the STAC table columns use.
 - A PMTiles style or sprite on an S3 website endpoint loads over HTTPS, as the catalog itself does.
 - **Cancel** stops the search for the files of a mosaic, the build of the mosaic, and the listing of the files to download. Before, it stopped only a download. The progress bar shows while the mosaic builds.
 - **Report a problem ↗** under **Details** opens the registry's dataset problem form on GitHub, filled with the catalog ID, the dataset URL, the date, and the plugin and QGIS versions. The button shows only for a catalog that has an ID in the registry.
 - **Report a bug** in **Web > Portolan Registry** and in the window header opens the plugin's problem form on GitHub, with the plugin, QGIS, Qt, Python, GDAL, and DuckDB versions and the operating system filled in.

 Version 0.2.0:
 - The plugin is no longer marked experimental, so the QGIS plugin manager lists it without the experimental option.
 - The registry opens in a window instead of a side panel. You can pan the map while it is open. It keeps its size, its divider, and the open state of its sections between sessions.
 - The details pane shows the dataset's name with **Zoom to** and **Open in Portolan browser ↗** next to it. The browser shows every file and all the metadata that the plugin leaves out.
 - The details show in four sections that you can close: **About**, **Add to map**, **All files**, and **Details**. **All files** starts closed.
 - **About** shows the thumbnail, or a map of the extent when there is no thumbnail.
 - **Details** is one list: publisher, license, size, documentation, source, and a link to the browser. Each link shows once. A license value of `other` shows as **Custom terms**.
 - The status filter and the STAC type, ID, and extent coordinates are gone from the window.
 - **Add to map** starts with the area of interest: everything, the map extent, a drawn polygon, or the polygons of a layer.
 - **View on map** adds the PMTiles, else a COG. **Load full data** adds the GeoParquet, else the FlatGeobuf, GeoJSON, or CSV. Each tooltip names the format first.
 - **Load full data** copies only the GeoParquet features that intersect the area of interest. A feature that crosses the edge of the area stays whole. A saved project copies the same area again.
 - A collection of COG items shows as one **N files** row in the tree. **Add as one layer** adds the COGs in the area of interest as one layer, clipped to the area. A saved project builds the layer again.
 - **Download** saves everything in the area of interest. It leaves out items outside the area, and it saves each GeoParquet file as a GeoPackage of the features in the area.
 - **All files** lists only the files QGIS can open, each one once. It leaves out styles, thumbnails, upstream `source` files, earlier `archive` extracts, and item indexes. **Add selected** and **Download selected** act on the selected files, whole.
 - A check mark shows on each file that a layer in the project already reads.
 - CSV files open over HTTP, as points when the header names longitude and latitude columns in degrees.
 - A Parquet file with no geometry column shows as **Parquet** and loads as a table with **Load table**.
 - When a new layer lands outside the map, the map moves to it.
 - Right-click a publisher to open its catalog in the browser. The QGIS setting `PortolanRegistry/browser_url` points the links at a browser mirror.
 - A click that must wait for a running task says so. An error after a task ends goes to the QGIS message log.
 - COGs open when the GDAL setting `CPL_VSIL_CURL_ALLOWED_EXTENSIONS` is set. A file that the setting blocks gets a message that names the setting.
 - A COG that failed to open once opens on the next try. COG reads retry HTTP 429, 500, 502, 503, and 504. When GDAL cannot read a file, the message gives the reason, such as an HTTP status.
 - COG, GeoJSON, and FlatGeobuf files open with no directory listing and no side-car probes. GDAL ignores external side-car files such as `.ovr` and `.aux.xml`.
 - GeoParquet loads through a GeoPackage that DuckDB writes. A million polygons from a local file load in 2 seconds instead of 19, QGIS stays responsive, and memory use drops from 1.9 GB to 380 MB.
 - A GeoParquet load has no feature limit. Above 1,000,000 features, the window asks first.
 - GeoParquet files with date or timestamp columns load their features, and an attribute named `geom` loads. A feature whose geometry type does not fit the layer keeps its attributes, and the window reports the count.
 - A saved project copies its GeoParquet layers again when it opens. On QGIS 3.34, such a layer shows as unavailable until the copy ends.
 - PMTiles layers carry each of the collection's MapLibre styles as a named QGIS style. Switch styles from the layer's **Styles** menu. A PMTiles layer opens the archive you selected.
 - Styles that name their archive as a relative path, such as `../tiles.pmtiles`, apply to the tiles. So do styles whose vector source has no `url`.
 - PMTiles layers draw faster when you pan, and QGIS keeps their tiles in its disk cache. A server that sends `Cache-Control: no-store` keeps its tiles out of the cache.
 - On QGIS 3.34 and 3.36, a PMTiles archive behind a redirect reads only the bytes it needs, and a server that ignores HTTP range requests is refused.
 - Downloads list eight catalog documents and fetch three files at the same time. A cancelled listing asks nothing. A file whose local path an earlier file already uses, such as `Data.tif` and `data.tif`, is reported as a failure.


category=Web
icon=icon.svg
tags=stac,portolan,catalog,pmtiles,geoparquet,cog,cloud-native,download
experimental=False
deprecated=False
hasProcessingProvider=no
external_deps=duckdb
