Welcome to Planet OSGeo

November 29, 2025

November 28, 2025

November 27, 2025

November 26, 2025

Full release notes at Release v0.8.0 · torchgeo/torchgeo · GitHub

TorchGeo is a PyTorch domain library, similar to torchvision, providing
datasets, samplers, transforms, and pre-trained models specific to
geospatial data.

TorchGeo 0.8 includes 28 new pre-trained model weights and a number of
improvements required for better time series support, including a
complete rewrite of all GeoDataset and GeoSampler internals,
encompassing 8 months of hard work by 23 contributors from around the world.

Highlights of this release

Open and independent governance

You may have noticed that GitHub - torchgeo/torchgeo: TorchGeo: datasets, samplers, transforms, and pre-trained models for geospatial data is now
GitHub - torchgeo/torchgeo: TorchGeo: datasets, samplers, transforms, and pre-trained models for geospatial data. This is not an accident!

Note - TorchGeo now belongs to YOU, please join our monthly Technical
Steering Committee meetings!

TorchGeo was initially created as an intern project at Microsoft's AI
for Good Lab back in 2021. Once we made it open source, we were blown
away by how quickly it was adopted by the AI4EO community! Since then,
over 100 people from around the world have contributed to making
TorchGeo what it is today.

Despite being open source, we have received feedback from many current
and potential contributors that they have found it difficult to
contribute to TorchGeo due to its ownership by Microsoft. While
Microsoft has been an excellent incubator for TorchGeo over the past
four years, we believe TorchGeo has outgrown its incubation phase.

Over the past year, we have been working diligently with Microsoft to
come up with a solution. As of this release, we are excited to announce
the formation of the TorchGeo /Organization/, a governing body designed
to ensure the independence and longevity of the TorchGeo /Project/. The
TorchGeo Organization is led by a Technical Steering Committee (TSC),
initially composed of the current maintainers of the TorchGeo Project:

* @adamjstewart <https://github.com/adamjstewart&gt; (TUM) - Chair
* @calebrob6 <https://github.com/calebrob6&gt; (Microsoft)
* @anthonymlortiz <https://github.com/anthonymlortiz&gt; (Microsoft)
* @isaaccorley <https://github.com/isaaccorley&gt; (Wherobots)
* @ashnair1 <https://github.com/ashnair1&gt; (Space42)
* @nilsleh <https://github.com/nilsleh&gt; (TUM)

TorchGeo now lives at TorchGeo · GitHub, and Microsoft has
graciously volunteered to give away the copyright to YOU, the TorchGeo
/Contributors/. We would like all TorchGeo users and developers to take
ownership of the project, and thus invite each and every one of you to
join our TSC meetings. Please join the |#technical-steering-committee|
channel in the TorchGeo Slack
<Join torchgeo on Slack;
for more information on our monthly meeting schedule.

Other than this new open and independent governance, not much will
change with the TorchGeo Project. TorchGeo will always remain open
source under an MIT license and be free for all users and developers. We
hope this change will open up opportunities for more collaboration, more
awesome libraries built on top of TorchGeo, and more confidence in the
long-term future of the project!
_______________________________________________
Announce mailing list
Announce@lists.osgeo.org

1 post - 1 participant

Read full topic

by jsanz at November 26, 2025 08:34 AM

November 25, 2025

GeoServer 2.28.1 release is now available with downloads (bin, war, windows), along with docs and extensions.

This is a stable release of GeoServer recommended for production use. GeoServer 2.28.1 is made in conjunction with GeoTools 34.1, and GeoWebCache 1.28.1.

Thanks to Andrea Aime for making this release.

Security Considerations

This release addresses security vulnerabilities and is considered an important upgrade for production systems.

The use of the CVE system allows the GeoServer team to reach a wider audience than blog posts.

See project security policy for more information on how security vulnerabilities are managed.

Release notes

Improvement:

  • GEOS-11950 WMS cascade: fully respect ‘restrict to layer bounds’ flag on GetMap requests

Bug:

  • GEOS-4159 Layer from SQL view feature type details not refreshing after editing sql query (and refreshing attributes there)
  • GEOS-11930 OGC-API extension breaks security REST API
  • GEOS-11963 BlobStorePage breaks when failing to save a blob store configuration
  • GEOS-11965 KMZ export incorrectly references remote icon URLs instead of embedding them in the KMZ archive
  • GEOS-11981 POST /security/authproviders 400: Unsupported className
  • GEOS-11988 Fix bug: preserve metaTilingThreads=0 in saneConfig()

Task:

  • GEOS-11898 GeoFence: issues in evaluation of virtual layer services access
  • GEOS-11962 Run CITE tests against Java 17, 21 and 25
  • GEOS-11987 ImageN 0.9.1 migration requires renaming of registryFile.jai to registryFile.imagen

For the complete list see 2.28.1 release notes.

Community Updates

Community module development:

  • GEOS-11959 New community module GeoWebCache Google Cloud Storage
  • GEOS-11961 OSEO layer management: Support creation of image mosaics in CRS other than 4326
  • GEOS-11980 Add support for uploading a single parquet file to GeoServer via REST
  • GEOS-11983 GSR /query fails with HTTP 500 when where parameter is empty

Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.

About GeoServer 2.28 Series

Additional information on GeoServer 2.28 series:

Release notes: ( 2.28.1 | 2.28.0 | 2.28-M0 )

by Andrea Aime at November 25, 2025 12:00 AM

November 24, 2025

Credits : Bru-nO (Pixabay Content License)

Thanks to funding from the Bordeaux Metropolis, I had the chance to work on CMYK (Cyan Magenta Yellow blacK) support in QGIS. The metropolis’ goal is to remove the last barrier preventing their complete migration from ArcGIS to QGIS.

The developments are now complete and will be available in QGIS version 3.40, scheduled for release in October 2024, before becoming the next LTR in February 2025. It should be noted, however, that CMYK support will only be complete in QGIS versions built with Qt 6 (still unofficial version) for reasons explained in the article. On Windows, this version can currently only be installed using OSGeo4W (qgis-qt6-dev version).

EDIT: Actually, QGIS version built with Qt 6.8, which ships the needed modifications for CMYK PDF export, is not yet released. More information here.

What is CMYK?

You probably know RGB, which allows you to code a color on screen by choosing the amount of red, green and blue in that color. You may also use TSL or TSV.

RVB – Credits : Daniel Roberts (Pixabay Content License)

These 3 color references allow a color to be coded for a screen, while CMYK targets printers by allowing to set the exact quantity of ink that will be released during printing (hence the 4 CMYK components, one per ink cartridge).

 

CMYK ( here from left to right KCMY ) – Credits : Magnascan (Pixabay Content License)

The characteristics of CMYK differ greatly from RGB, it’s considered a subtractive colorimetric mode, because the ink absorbs light unlike RGB which is said to be additive, the more red, green, blue you have the closer you are to full light, white.

The intrinsically different nature of these 2 color spaces means that it is strongly advised not to convert from one to the other. The best is to choose a color in a space (CMYK for printing, RGB for rendering on screen) and stick to it.

Worse, printing the same color is different depending on the printer, ink, paper… The choice of a CMYK color has to be done in a color space, represented by a ICC profile file, provided by your printer. It is a bit like a color chart used when choosing paint.

 

Now you can argue about the REALLY good color of a road line – Credits : Yanis Ladjouzi (Pixabay Content License)

Developments in QGIS… and Qt

It is now possible in QGIS to:

  • Enter colors in CMYK format, and in floating precision;
  • Define your preferred color mode (RGB or CMYK) and your color space;
  • Generate a file in PDF/X-4 format (ready for printing) embedding a color space and using CMYK colors;
  • Allow the expression engine to manipulate CMYK colors without converting them to RGB;
  • Manage CMYK color ramps;
  • Lots of other small improvements and corrections about color management.

 

Selecting colors in QGIS in CMYK

The beautiful story of Open source

I took great pleasure in participating in this development because it is the result of the collaboration of many players in free software.

During a first phase of study concerning the support of CMYK in QGIS, we quickly identified that Qt, the framework used by QGIS for rendering maps, has limitations. It converts all colors to RGB when rendering maps in PDF format and its support for CMYK color spaces is incomplete.

It is therefore necessary to make it evolve. We therefore turn to our preferred partner when it comes to Qt, KDAB, and more precisely Giuseppe D’Angelo who then carries out the necessary developments.

Regarding new features, these are only available in Qt 6 (Qt 5 is end of life). This is why CMYK support is incomplete in official versions of QGIS still based on Qt 5.

QGIS.org, the association that oversees the QGIS project, decided to fund the developments on Qt. Oslandia, on the other hand would have to manage these developments and then to carry out the integration in QGIS. This integration as well as the related new features was funded by the Bordeaux metropolis.

My developments were then reviewed by other QGIS contributors. (If you want to know more about the QGIS contribution process, you can read a previous blog post about software quality in QGIS)

Finally, I wanted to give a special thanks to Jehan, developer on the GIMP project. His availability and thoroughness in our mail exchanges greatly helped me understand the technical and functional issues of CMYK, and most certainly contributed to the quality of the result.

Next

QGIS 3.40 will therefore be able to generate a PDF/X-4 file using CMYK colors. Qt, for its part, improves CMYK support, PDF writing, and color space management.

Thanks again to the Bordeaux metropolis and QGIS.org for funding these developments, and all the people involved in their realization.

We would be delighted to have feedback from users on your use cases related to color management in QGIS. Do not hesitate to write to us or comment on our posts to tell us how you use these features.

These foundations in the management of color spaces in QGIS open the door to future improvements. If you are interested in this topic and would like to contribute, please contact us at infos+qgis@oslandia.com and check out our QGIS support offer.

by Julien Cabieces at November 24, 2025 12:30 PM

November 23, 2025

TorchGeo 0.8.0 Release Notes

TorchGeo 0.8 includes 28 new pre-trained model weights and a number of improvements required for better time series support, including a complete rewrite of all GeoDataset and GeoSampler internals, encompassing 8 months of hard work by 23 contributors from around the world.

Highlights of this release

Open and independent governance

TorchGeo logo

You may have noticed that https://github.com/microsoft/torchgeo is now https://github.com/torchgeo/torchgeo. This is not an accident!

Note

TorchGeo now belongs to YOU, please join our monthly Technical Steering Committee meetings!

TorchGeo was initially created as an intern project at Microsoft's AI for Good Lab back in 2021. Once we made it open source, we were blown away by how quickly it was adopted by the AI4EO community! Since then, over 100 people from around the world have contributed to making TorchGeo what it is today.

Despite being open source, we have received feedback from many current and potential contributors that they have found it difficult to contribute to TorchGeo due to its ownership by Microsoft. While Microsoft has been an excellent incubator for TorchGeo over the past four years, we believe TorchGeo has outgrown its incubation phase.

Over the past year, we have been working diligently with Microsoft to come up with a solution. As of this release, we are excited to announce the formation of the TorchGeo Organization, a governing body designed to ensure the independence and longevity of the TorchGeo Project. The TorchGeo Organization is led by a Technical Steering Committee (TSC), initially composed of the current maintainers of the TorchGeo Project:

TorchGeo now lives at https://github.com/torchgeo, and Microsoft has graciously volunteered to give away the copyright to YOU, the TorchGeo Contributors. We would like all TorchGeo users and developers to take ownership of the project, and thus invite each and every one of you to join our TSC meetings. Please join the #technical-steering-committee channel in the TorchGeo Slack for more information on our monthly meeting schedule.

Other than this new open and independent governance, not much will change with the TorchGeo Project. TorchGeo will always remain open source under an MIT license and be free for all users and developers. We hope this change will open up opportunities for more collaboration, more awesome libraries built on top of TorchGeo, and more confidence in the long-term future of the project!

Change detection support

BRIGHT dataset

TorchGeo 0.8 introduces support for change detection datasets (B x 2 x C x H x W)! This includes a new ChangeDetectionTask LightningModule with support for binary, multiclass, and multilabel change detection. This LightningModule supports both early-fusion (all encoders from timm and decoders from SMP) and the following change detection-specific late-fusion architectures:

TorchGeo also includes the following binary and multiclass change detection datasets:

All datasets have a corresponding LightningDataModule that is compatible with and tested against ChangeDetectionTask.

P.S. For other change detection models, check out @Z-Zheng's excellent torchange library!

Backwards-incompatible changes

Warning

TorchGeo 0.8 is unusual in the number of backwards-incompatible changes it includes. In preparation for a more stable 1.0 release in the future, we have made several changes to better support time series data. Below we motivate each change and describe how to migrate any existing code.

GeoDataset/GeoSampler: BoundingBox → GeoSlice

Prior releases of TorchGeo used a custom BoundingBox object for GeoDataset indexing:

from torchgeo.datasets import BoundingBox

bbox = BoundingBox(xmin, xmax, ymin, ymax, tmin, tmax)
ds[bbox]

This custom BoundingBox object was quite different from other libraries and lacked a lot of the flexibility needed for time series support. All inputs were required, even if space or time were unimportant, and only integer tmin/tmax were supported.

TorchGeo 0.8 adopts a powerful slicing syntax similar to numpy, xarray, and torch:

ds[xmin:xmax:xres, ymin:ymax:yres]
ds[:, :, tmin:tmax:tres]
ds[xmin:xmax, ymin:ymax, tmin:tmax]

Spatial-only, temporal-only, and spatiotemporal slices are all supported. Each slice can optionally specify the resolution of the returned data. If any min, max, or res values are missing, the defaults for the full dataset are used. While x and y are in float, t is in datetime.datetime for more natural temporal slicing.

If you are using GeoDataset in combination with GeoSampler, no changes are required for forwards-compatibility, as GeoSampler and GeoDataset.bounds now return these slices. BoundingBox is now deprecated and will be removed in a future release.

Tip

If you need a single BoundingBox-like object, you can use a tuple of slices like so:

bbox = (slice(xmin, xmax), slice(ymin, ymax), slice(tmin, tmax))

If you need to be able to calculate the area, intersection, or union of a bounding box, we suggest using shapely.box.

GeoSampler/splitters: BoundingBox → Polygon, Interval

In previous releases of TorchGeo, if you wanted to select a smaller region of interest (ROI) for training or validation, you could either use the roi parameter of GeoSampler or use roi_split and time_series_split to directly split your GeoDataset. However, only BoundingBox objects were supported.

In TorchGeo 0.8, you can now use arbitrary shapely.Polygon and pd.Interval objects for ROI and TOI bounds. These polygons do not have to be boxes, they can be any shape, including a GeoJSON outline of a complex island archipelago.

Tip

To migrate simple boxes to this new syntax, replace:

roi = BoundingBox(xmin, xmax, ymin, ymax, tmin, tmax)

with:

roi = shapely.box(xmin, ymin, xmax, ymax)  # note change in order
toi = pd.Interval(tmin, tmax)

GeoDataset/GeoSampler: rtree → geopandas

TorchGeo previously used the R-tree library for spatiotemporal indexing of geospatial data. This allowed for fast computation of intersection, union, and indexing. However, R-tree lacks support for a lot of desirable geospatial and geotemporal features, including non-rectangular polygons, automatic reprojection, datetime objects, and spatial/temporal aggregation.

TorchGeo 0.8 switches TorchGeo's spatiotemporal indexing backend from R-tree to geopandas, which supports all of these features and more with similar performance. Geopandas can efficiently scale to large datasets using dask-geopandas and multithreading. Entire shapefiles can be directly stored in geopandas instead of only storing a single bounding box.

This change will be most notable for users who write custom GeoDataset subclasses. If you are using a built-in dataset, you may not even notice this change. In the future, we plan to continue improving support for non-rectangular polygons in both the dataset and sampler so that nodata pixels can be easily avoided.

VectorDataset: fiona → geopandas

Similarly, all VectorDataset classes now use geopandas instead of fiona for data loading. This results in one less dependency and allows for complicated expressions without for-loops, often resulting in faster data loading. The only backwards-incompatible change here is that the get_label method now takes a pd.Series row as input instead of a fiona.Feature.

Change detection datasets: C x H x W → 2 x C x H x W

Previously, our time series datasets were inconsistent, with some datasets returning a single T x C x H x W object, others combining the T and C dimensions into a (T C) x H x W object, and others returning multiple C x H x W objects labeled image1, image2, image_pre, image_post, etc.

All change detection datasets now return a single 2 x C x H x W object. The remaining time series datasets will be changed in the next release to T x C x H x W.

Custom transform deprecation removals

This release removes several custom or private transforms that have been deprecated for several releases or are not compatible with time series data:

Removed Suggested Replacement
AugmentationSequential kornia.augmentation.AugmentationSequential
_ExtractPatches kornia.augmentation.CenterCrop
_Clamp torchvision.transforms.v2.Lambda(lambda x: torch.clamp(x, 0, 1))

CenterCrop is not identical to _ExtractPatches, and you may need to change the patch_size to get full coverage during evaluation. We are planning to upstream a method directly to Kornia or torchvision to better support this.

Dependencies

New dependencies

Removed dependencies

Changes to existing dependencies

  • kornia: 0.8.2+ now required (#3094)
  • lightning: 2.5.6 not supported (#3080)
  • numpy: 1.24+ now required (#1490)
  • rasterio: 1.4.3+ now required (#1490)
  • shapely: 2+ now required (#2747)
  • timm: 1.0.3+ now required (#2828)
  • xarray: 0.17+ now required (#1490)

Datasets

image

New datasets

Changes to existing datasets

  • Dataset plots: portrait → landscape (#3093)
  • BRIGHT: image_pre, image_post → image (#2862)
  • BRIGHT: add vmin/vmax to plots (#3097)
  • CaBuAr: (T C) → T x C (#2863)
  • CDL: add 2024 data (#2939)
  • ChaBuD: (T C) → T x C (#2878)
  • ChaBuD: fix link to homepage (#3128)
  • EDDMapS: add plot method (#2709)
  • GBIF: add plot method (#2741)
  • LEVIR-CD: image1, image2 → image (#2879)
  • iNaturalist: add plot method (#2743)
  • OSCD: image1, image2 → image (#2422)
  • OSCD: fix documentation of image sizes (#3128)
  • MMEarth: add plot method (#2759)
  • Sentinel-2: support for .SAFE multiresolution products (#3043)
  • Western USA Live Fuel Moisture: add plot method (#2769)
  • xView2: multi-temporal semantic segmentation → change detection (#2906)

Changes to dataset base classes

  • GeoDataset: rtree → geopandas (#2747)
  • GeoDataset: add support for slicing (#2804, #2847)
  • XarrayDataset: new base class, still experimental (#1490)
  • VectorDataset: fiona → geopandas (#2962, #3114, #3118, #3119)
  • VectorDataset: add support for object and instance detection (#2819)
  • IntersectionDataset: support spatial-only intersection (#2837)

Utilities

  • BoundingBox: deprecated in favor of GeoSlice (#2847)
  • pad_across_batches: time series collation function (#2921)
  • splitters: rtree → geopandas (#2747)
  • roi_split: support arbitrary Polygon roi (#2835)

Data Modules

New data modules

Changes to existing data modules

  • CaBuAr: use video transforms (#2863)
  • ChaBuD: use video transforms (#2878)
  • LEVIR-CD: use video transforms (#2879)
  • OSCD: use video transforms (#2422)
  • OSCD: support for non-square images (#3103)
  • xView2: use video transforms (#2906)

Losses

  • QR: improve numerical stability (#2796)

Models

Aurora Foundation Model

New model architectures

New model weights

Changes to existing models

  • All weight transforms are now exportable (#2893)
  • MOSAIKS: new alias for RCF (#2915)
  • Panopticon: speed up position embedding (#2888)

Samplers

  • GeoSampler: r-tree → geopandas (#2747)
  • GeoSampler: add support for slicing (#2804, #2847)
  • GeoSampler: support arbitrary Polygon roi, add toi (#2812)
  • GridGeoSampler: default stride = patch size (#2722)

Scripts

  • CLI: add --version argument (#2912)

Trainers

New trainers

Changes to existing trainers

  • Classification: class_weights list support (#2707)
  • Semantic segmentation: class_weights list support (#2707)
  • Semantic segmentation: add support for DPT, Segformer, and UPerNet decoders (#2828)
  • Semantic segmentation: add support for satellite image time series (#2921)

Transforms

New transforms

Removed transforms

Documentation

  • API: restructure model docs (#2892)
  • README: add YouTube channel (#3107)
  • README: add new podcast episode (#2947)
  • README: add more Slack links (#2953)
  • Related Libraries: auto-update metrics (#3001, #3011, #3013, #3120, #3125)
  • Related Libraries: TorchGeo rtree → geopandas (#2747)
  • Related Libraries: fix TerraTorch weights, URL, conda-forge (#3012, #3083, #3104)
  • Related Libraries: add GDL (#3008)
  • Related Libraries: add torchange (#3072)

Tutorials

  • TorchGeo: introduce new slicing syntax (#2747, #2804)
  • Embeddings: rename section header (#3087)

Governance

  • Add formal governance (#2514)
  • Copyright: Microsoft Corporation → TorchGeo Contributors (#2935, #2968, #3010)
  • Rename references to previous GitHub organization (#2941)
  • pyproject.toml: add explicit license-files (#3126)

Tests

  • Bundle all trainer tests together (#3066)
  • Silence shapely warnings in test data (#3077)
  • Reduce batch size to silence warnings (#3063)
  • No unconditional skips (#3096)

Contributors

This release is made possible thanks to the following contributors:

by adamjstewart at November 23, 2025 09:17 PM

November 22, 2025

November 21, 2025

Ken drew my attention to the EUFA logo on the Europa League Cup. I think the purpose was that Arsenal haven’t won much in the last 20 years while this year’s cup was being held by the Spurs manager Ange Postecoglou who subsequently got sacked (twice within a few months!)

by Steven at November 21, 2025 10:00 AM

Dear all,

the CRO is pleased to announce the list of new OSGeo Carter Members:

* Carlos Eduardo Mota from Brasil
* Luís Calisto from Portugal
* Kateryna Konieva from Portugal
* Benjamin Webb from United States of America
* Joseph Emile Honour Percival from Samoa
* Weston Renoud from Netherlands
* Felix Delattre from Germany
* Julia Signell from United States of America
* Simon Nitz from New Zealand
* Pete Gadomski from United States of America
* Gabriel De Luca from Argentina
* Ulrike Assmann from Germany
* Mikhaïl Jean de Dieu Dotou Padonou from Benin
* Sunghoon Cha from South Korea
* Max Jones from United States of America
* Huidae Cho from United States of America
* Heather Hillers from Germany
* Juan Pablo Duque Ordoñez from Colombia
* Evelyn Uuemaa from Estonia
* Jani Kylmäaho from Finland
* Nicklas Larsson from Hungary
* Michael Barton from United States of America
* Jarrett Keifer from United States of America
* Céline Vilain from Belgium
* Niklas Alt from Germany
* Christian Strobl from Germany
* Andrés Gómez Casanova from Colombia
* Mirko Blinn from Germany
* Alastair Graham from United Kingdom
* James Milner from United Kingdom
* Jonny Huck from United Kingdom
* Michel Stuyts from Belgium
* Marc Ducobu from Belgium

You may visit the nominations page to learn more about the new members [0].

This year there were 33 valid nominations and all were accepted. 260 charter
members cast their vote, with each nominee attaining more than 100 votes. The
OSGeo Foundation now counts 468 active Charter Members.

The board approved the new members days ago[1].

Warm regards,

Luís de Sousa
(your 2025 CRO [2])

[0] New Member Nominations 2025 - OSGeo
[1] https://www.loomio.com/p/v5S38Red/motion-to-approve-osgeo-charter-member-2025-election-results
[2] Chief Returning Officer - OSGeo
_______________________________________________
Announce mailing list
Announce@lists.osgeo.org
Announce Info Page

1 post - 1 participant

Read full topic

by jsanz at November 21, 2025 09:57 AM

November 20, 2025

November 19, 2025

A hydraulic engineer by training, Nicolas Godet has been working at ISL Ingénierie for just over seven years and holds the position of hydraulic project manager (flood risk, hydraulic structure safety), deputy director of the Saint-Jean-de-Luz facility, and QGIS (and GIS in general) advisor.

He discusses the implementation of QDT and the associated methodology for deploying QGIS across ISL’s IT infrastructure.

What are the objectives of the collaboration?

Before I took charge of deploying QGIS at ISL, it was a bit of a mess: no one had the same version, the same plugins, or the same practices.
Following the switch to QGIS3, there was a desire to standardize the QGIS fleet at ISL to have the same version, the same plugin base, and preconfigured profiles.

An initial, semi-homemade solution was implemented in 2022, but it proved difficult to maintain.

At the end of 2024, with a budget allocated, we decided to seek assistance from Oslandia to professionalize our QGIS deployment so that every employee would be using the same version:

  • facilitate project sharing within ISL and with our clients,
  • have a common and up-to-date plugin base,
  • benefit from advanced pre-configuration of user profiles.

The ultimate goal was to be able to update QGIS without disrupting all the configurations.

What challenges does this project address?

The challenge was to be able to keep up with developments in QGIS while retaining profile configurations. Having attended a few presentations (QGIS Days), I had heard about QDT. After preliminary discussions with Oslandia (and in particular with Julien Moura), we agreed to go ahead with customized training. This customized training allowed us to adapt the content to our needs.

How did the collaboration with Oslandia go?

The Oslandia teams are attentive, adapt to our needs, which are not always simple, and were able to offer us tailor-made training.

We decided to have four half-days spread out over several weeks, allowing us to cover the theory and a few examples during the half-day, then work on our own and come back to the next session with questions and ask for more in-depth coverage of certain points rather than others.
There’s not much else to add except that it went very well!

Since this training, ISL has been able to invest in QDT.

by Caroline Chanlon at November 19, 2025 10:40 AM

November 18, 2025

November 17, 2025

Em ambientes onde o GeoServer é executado dentro de um contêiner Apache Tomcat, pode surgir a necessidade de alterar o caminho de contexto (contextPath) da aplicação, ou seja, o endereço pelo qual o serviço será acessado.

Essa modificação é comum em cenários de ambientes compartilhados, integrações com outros sistemas, migrações de infraestrutura ou simplesmente para padronizar URLs (por exemplo, mudar de /geoserver para /geoserver-admin ou /gis).

No entanto, antes de fazer essa alteração, é importante revisar as configurações do Tomcat, especialmente no arquivo server.xml, e entender a diferença entre deploy automático e manual, garantindo que o GeoServer seja publicado corretamente no novo contexto.

Gostaria de agradecer ao Carlos Eduardo Mota, que foi quem elaborou esse tutorial e enviou gentilmente para publicação neste Blog.

1) Verificando o server.xml

Local do arquivo:

$CATALINA_HOME/conf/server.xml

No arquivo, observe:

  • Na tag <Engine>:
    • Propriedade name (geralmente Catalina).
    • Propriedade defaultHost.
  • Na tag <Host>:
    • Propriedade appBase (pasta onde os apps são implantados, normalmente webapps).
    • Propriedade autoDeploy (deve estar true para deploy automático).

Exemplo:

<Engine name="Catalina" defaultHost="localhost">

    <!-- Configurações de cluster, log e segurança omitidas -->

    <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
    </Realm>

    <Host name="localhost" appBase="webapps"
          unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
    </Host>
</Engine>

2) Deploy automático vs. manual

Por padrão, o GeoServer é implantado automaticamente quando o arquivo .war é colocado na pasta definida como appBase no <Host>, geralmente:

$CATALINA_HOME/webapps

Exemplo: colocar meu-app.war em webapps/ fará com que ele seja acessível via /meu-app.

Se você não deseja deploy automático (ou precisa de um contexto customizado), defina o contexto manualmente usando um arquivo de contexto.

3) Deploy manual com arquivo de contexto

  1. Posicione o .war (ou o diretório do app já expandido) fora da pasta appBase.
  2. Crie um arquivo de contexto .xml com o nome que deseja usar como contextPath do app.

Onde criar:

$CATALINA_HOME/conf/[EngineName]/[HostName]/

Exemplo de caminho real:

$CATALINA_HOME/conf/Catalina/localhost/geoserver-admin.xml

Conteúdo do arquivo de contexto:

<Context docBase="webapps.dist/geoserver" />

Neste exemplo, o contexto será:

http://localhost:8080/geoserver-admin

E o diretório do GeoServer está em:

$CATALINA_HOME/webapps.dist/geoserver

O diretório webapps.dist é fornecido nas imagens de container para colocar webapps para distribuição, e não para deploy automático. É provável que nas instalações clássicas do tomcat não deva existir esse diretório. Nesse caso, é necessário criar esse diretório dentro de $CATALINA_HOME.

Observação importante: o nome do arquivo (geoserver-admin.xml) define o nome do contexto (/geoserver-admin) e tem precedência sobre qualquer META-INF/context.xml incluído no .war ou na aplicação.

O arquivo context.xml pode ser expandido e ser utilizado para outras finalidades, como predefinir recursos de conexão de banco de dados (os famosos JNDI), mas isso é assunto para outro post.

Referências

by Fernando Quadro at November 17, 2025 12:00 PM

Este 13 de noviembre se celebró el acto de clausura de la VIII edición del Curso-Concurso de Geoalfabetización mediante Tecnologías de la Información Geográfica (TIG), una iniciativa internacional que impulsa el aprendizaje geográfico y territorial a través de herramientas digitales abiertas.

El primer premio fue para el equipo de los Liceos 2 y 3 de Salto, con el proyecto “Mapeando los riesgos: cartografía digital de la siniestralidad vial y la accesibilidad urbana de Salto”, destacado por su enfoque innovador, su análisis territorial y su aporte a una comprensión más sostenible del entorno urbano.

Una iniciativa educativa con impacto real

El curso-concurso es impulsado por la Dirección Nacional de Topografía del MTOP, la Inspección Nacional de Geografía y Geología de DGES/ANEP y Ceibal, con el apoyo de la Universidad Politécnica de Madrid, Universidad Central “Marta Abreu” de Las Villas, Asociación Nacional de Profesores de Geografía, Dirección General de Educación Técnico Profesional (UTU) y la Asociación gvSIG.

De los proyectos presentados, también resultaron finalistas:

  • Liceo 20 de Montevideo“Evidencia del picudo rojo en palmeras del barrio Punta Gorda”
  • Liceo 1 “Carlos Brignoni” y Liceo 2 de Trinidad (Flores)“Lo que fluye bajo la lupa: mapeando los riesgos”
  • Liceos 2 y 3 de Salto“Cartografía digital de la siniestralidad vial y la accesibilidad urbana de Salto”

Un compromiso continuo con la educación geográfica

En el evento participaron autoridades del MTOP, DGES, UTU, Ceibal, la IDE y la OPP.
El director nacional de Topografía, Ernesto Silveira, subrayó que es “un orgullo enorme seguir apoyando esta iniciativa”, destacando la creatividad y frescura de los trabajos presentados.
Por su parte, Sergio Acosta y Lara, jefe del Departamento de Geomática y coordinador del concurso, valoró el compromiso estudiantil y docente, y la importancia de defender una educación pública de calidad.

Desde 2011, la Dirección Nacional de Topografía impulsa estas experiencias junto a Ceibal y la Asociación gvSIG, fortaleciendo las competencias digitales y territoriales de estudiantes y docentes, y generando impactos reales en sus comunidades.

by Alvaro at November 17, 2025 08:46 AM

November 16, 2025

November 15, 2025

November 14, 2025

Kenneth Wong shared this “Found this map at Mishima Taisha Shrine. The deeper you explore the map, the more intricate details you could uncover”

Some might argue that it isn’t really “in the wild” but who cares? it’s beautiful.

by Steven at November 14, 2025 10:00 AM

November 13, 2025

November 12, 2025

The PostGIS Team is pleased to publish PostGIS 3.6.1. This is a bug fix release that includes bug fixes since PostGIS 3.6.0.

  • This version requires PostgreSQL 12 - 18, Proj 6.1+, and GEOS 3.8+. To take advantage of all features, GEOS 3.12+ is needed.
  • SFCGAL 1.4+ is needed to enable postgis_sfcgal support. To take advantage of all SFCGAL features, SFCGAL 2.2+ is needed.

3.6.1

by Paul Ramsey at November 12, 2025 12:00 AM

November 11, 2025

November 10, 2025

November 09, 2025

How I created a spare monitor

I’m big on reuse, repair and recycling which is one of the reasons I volunteer at Glasgow Repair Cafe – I blame being exposed to “Stig of the Dump” at an impressionable age. As a result I struggle to throw out broken things let alone things that still work. However, space limitations mean that I do occasionally have to tidy out some stuff. I discovered that I have way too many old laptops that will come in useful sometime recently. So I installed a light weight linux on two of them and donated one of them to the repair café (where we have several laptops that really should be retired as they lack some keys), the other one is an old ThinkPad which I will use in my workshop/garage so that I don’t get sawdust in my work laptop.

Two of them proved to be beyond repair (or wouldn’t talk to the network with a modern linux), this left me looking at a pile of potential e-waste. And, while they didn’t work as computers any more there were still some useful bits on them. There was also the question of what to do with all the nice stickers I had on the back of them.

The Build

I decided that I could use an(other) 2nd monitor, and since the screen was still good I thought I could reuse a. The first step is to disassemble the laptop and extract the display. You then search for the serial number on the back (in my case NT156FHM-N31) which lead me to an Amazon or E-Bay page where for about £20 I could buy a pair of small PCBs. The thin ribbon cable coming out of the screen goes in one side and a USB-C cable an HDMI cable go in the other. Plugging the other ends in to the relevant ports on my laptop and hey presto I had a 2nd monitor. Unfortunately (but unsurprisingly) it was set to Chinese, but it turns out Google lens can do sufficient real time translation to allow me to figure out the language settings. After that it has a menu system that is remarkably similar to ever TV I’ve used in the past decade.

I could have stopped there but it looked a little rough and was a bit fragile. So, I toyed with 3D printing an enclosure or building one out of wood (this one is William Gibson’s fault). But life got in the way, so about 6 months ago I was looking to tidy up enough office space to start thinking about dping something when I found an LCD screen and some PCBs. This is when I had the break through I already had an enclosure that was exactly the right size and shape for the screen – the laptop lid. If I removed it from the hinges (which I saved as they are sure to be useful one day) it would clip back together nicely and make the screen nice and safe. I just needed to work out how to hold it upright, here I found an old microphone stand that I had picked up in a charity shop thinking I could build an angle poise style light out of it. With the addition of a VESA monitor bracket plate and a ball head mount I had a working monitor which was height and angle adjustable.

The Monitor

The final problem was where to put the control boards, again I should really build them an enclosure, but for the time being they are attached with stand offs to the back of the case. I also had to cut a small hole in the bottom of the case to pass the ribbon cable through but as its soft plastic this was easy enough.

The back of the screen

Now that it is finished and in regular use as my main second monitor it is working really well and for about £30 I can’t complain. If I ever need to take it apart I will probably drill some new holes and move the control panel to be vertical and nearer the edge as where it is at the moment is a little fiddly to turn it on and off. I have another partly disassembled laptop which might well find its screen going the same way as I can always use more displays around the house.

November 09, 2025 12:00 AM

November 08, 2025

It appears that I haven’t posted anything here for a year! There are some mitigating circumstances though.

TL;DR; I didn’t die and I have a new job.

The Build Up

Coincidently, about a year ago I started to struggle with my mental health. Initially I didn’t worry too much as the onset of winter and the clocks going back always adversely affects my mood, and living in Scotland makes this worse as it gets lighter later and dark earlier than when we lived further south. Normally, I would expect for my mood to pick up in the new year when the days lengthen and its safe to go outside again. But this year it didn’t, I don’t know why, maybe working at a university wasn’t as much fun as I had hoped it to a. Certainly it turns out that just being called a research software engineer didn’t make as much of a difference to my quality of life as I had hoped it would. I struggled on until Easter time (which was clearly a mistake with hindsight), when it became clear to everyone and even me that I needed to take some time off. So anyone who was hoping to meet up with me at GISRUK I’m sorry but I really couldn’t face travelling or meeting people. I spent much of April in bed sleeping while I waited for a bigger dose of anti-depressants to kick in (this can be between 6 and 10 weeks, on top of the fortnight to wean off the previous ones).

I also started taking Manjaro to help with my weight and diabetes along with a tailored exercise program, so by the end of May I had lost 10 kilos and was feeling pretty good about life in general. Then …

The Incident

As many of you will have heard I suffered a significant health issue in early June when my colon decided that it had had enough and decided to start bleeding unexpectedly. I went out for dinner one evening with some friends from university and the next thing I really knew was I was in a critical care ward with the staff explaining to me again and again that I was unwell. Between the loss of blood and morphine I was handling this information very poorly. This confusion wasn’t helped by the fact that I knew the Royal Victoria Infirmary (RVI) in Newcastle very well from my student days as we used to use its historic corridors as a (dry) short cut to and from the university most days. This hospital was clearly much newer and shinier than the one I remembered. It turns out the old one was knocked down and replaced by student flats some years ago.

I had to come to terms with a) having nearly died (though I don’t remember), b) no longer having a colon and an Ileostomy and having a scar from waist to sternum (held together with massive staples) and c) having a stoma bag attached to me (most of the time).

Anyway, after 10 days or so I was considered well enough to move to a normal ward, though I promptly let my blood pressure collapse and was moved back to ICU for some magnesium, but eventually I was well enough to transfer back to Scotland. I can’t say I recommend travelling up the M74 in an ambulance but it was good to be back near to home, especially for Lesley.

After another week on a high dependency ward in East Kilbride (since I had transferred from ICU as there were no “normal” beds available for me to take in Newcastle) I had to go into an HDU bed (I know). I was easting normally, finally, and could walk from one end of the ward to another (lying in bed for a fortnight really kills your muscle tone) and I was allowed to go home.

Early the next week I went back for a stoma clinic checkup and the nurses took one look at me and decided that maybe I should visit the ambulatory emergency unit (despite, or because, needing a wheelchair to get there). They promptly readmitted me as my blood pressure was down below 80, which explained why I wasn’t feeling too chipper. I spent a few more days in hospital being given IV magnesium and antibiotics to sort out my blood pressure and inflammatory markers. Things could have been worse, the guy in the next bed had a gall stone the size of a tennis ball taken out of his intestines as it had bored its way out off his gall bladder. The surgeons were very excited and had taken pictures of it to show him.

Recovering, took much longer than I expected though all the medical staff kept saying how tough an operation was. This meant that I wasn’t well enough to travel to Mostar for FOSS4GEU which again was a shame (especially since I had been organised enough to actually book travel and hotels in advance). So again sorry if you were hoping to catch up with me there.

The Recovery

My contract at Glasgow ended at the start of October, which was about when my doctors were becoming happy for me to go back to work. I had half heartedly filled out some applications for new university jobs and dumped my CV on various job sites. Though to be honest I was really looking forward to being able to say in January that clearly I was unemployable and should consider retirement. Sadly (or happily) I got a call from a recruiter who seemed desperate to hire me (but couldn’t really say why). He was offering a quite silly amount of money with the only catch being the need to incorporate. So, I agreed to an interview and it turned out to be with a system integrator who was working for His Majesty’s Land Registry (HMLR) who maintain the English and Welsh cadastral register. Quite why they were so keen to hire me was still unclear but I said yes to a six month contract. When I started at the HMLR it became clear why they wanted me, they are trying to update part of the register (the only vectorized part) from a proprietary format that was developed by Envitia (who I had worked for back in 2011-15) and were trying to convert to a PostGIS DB using GeoTools to build a Java tool.

November 08, 2025 12:00 AM

November 07, 2025

Meet Hefni Azzahra – our new QGIS documentation writer, joining us from Indonesia!

Hefni holds a Bachelor’s degree in Geodetic Engineering and brings a strong background in geospatial science and mapping to the QGIS project. She’s passionate about GIS and has a curious mind that loves exploring new tools and ideas — a great match for the QGIS documentation team!

In her new role, Hefni will help improve and expand QGIS documentation, from clarifying existing tools to making new features easier to understand for users of all levels.

Outside of work, she enjoys swimming (her favorite!), going to the gym, painting, and discovering cozy cafés.

We’re excited to have her on board. Welcome to the team, Hefni!

by underdark at November 07, 2025 07:24 PM