Welcome to Planet OSGeo

February 18, 2025

February 17, 2025

The common hamster, once a familiar sight in European fields, is now teetering on the brink of extinction. Nature filmmaker and ecologist David Cebulla's documentary, "The Last Common Hamsters" ("Die Letzten Feldhamster"), explores this crisis. The documentary aired on the 17th of January 2025 at D ...

February 17, 2025 12:00 AM

February 16, 2025

A jornada começou com um objetivo claro: tornar um material educativo valioso acessível para mais pessoas. “Fina e os Mapas”, um livro encantador que ensina crianças e jovens sobre mapas colaborativos e cartografia digital, já estava disponível em galego e espanhol. Agora, tenho o orgulho de anunciar que a versão em português está pronta e acessível para toda a comunidade! 🎉

Eu e minha esposa tivemos o prazer de trabalhar na tradução deste material e foi uma experiência incrível! Trazer essa história para o público lusófono reforça a importância de tornar conteúdos educativos mais acessíveis e de incentivar o aprendizado sobre cultura livre e colaboração digital desde a infância.

A história de Fina e sua avó nos leva a um universo onde tecnologia e cooperação se encontram. Ao longo da narrativa, as crianças descobrem que podem contribuir para a criação de mapas do mundo real por meio do OpenStreetMap, um projeto aberto e comunitário. Mais do que um livro, essa obra representa uma porta de entrada para o entendimento da colaboração digital e do impacto que cada um de nós pode ter na construção do conhecimento coletivo.

Ao chegar em casa, Fina corre para o seu quarto para pesquisar sobre mapas. Um projeto chama sua atenção. Ele se chama OpenStreetMap e se define como "um mapa do mundo, criado por pessoas como você e de uso livre".

Ao chegar em casa, Fina corre para o seu quarto para pesquisar sobre mapas. Um projeto chama sua atenção. Ele se chama OpenStreetMap e se define como “um mapa do mundo, criado por pessoas como você e de uso livre”.

Traduções como essa são fundamentais. Quando disponibilizamos materiais educativos de forma aberta e acessível, ampliamos o alcance do conhecimento e criamos oportunidades para que mais crianças e jovens possam se envolver com a tecnologia de maneira significativa. Ensinar desde cedo sobre o valor da colaboração e da informação compartilhada é um passo essencial para formar cidadãos mais engajados e conscientes.

Essa conquista não teria sido possível sem o trabalho incrível da Associação GHANDALF (https://ghandalf.org), que não apenas criou esse material inspirador, mas também deu suporte imediato na organização do repositório no GitHub, facilitando todo o processo de tradução. O compromisso deles com a cultura livre e a educação aberta faz toda a diferença, e somos imensamente gratos por essa parceria!

Agora, a versão em português já está disponível gratuitamente no site do projeto: https://finaeosmapas.ghandalf.org.

Se você acredita no poder do conhecimento aberto, ajude a divulgar essa iniciativa. Compartilhe, comente e, quem sabe, inspire mais projetos educativos livres! 🚀💙

The post Fina e os Mapas agora fala português! first appeared on Narcélio de Sá.

by Narcélio de Sá at February 16, 2025 06:54 PM

February 15, 2025


This unique manuscript sketch by Harry Beck, the designer of the iconic London Tube Map, shows an early attempt to add the Victoria Line (still under construction at the time) to his Underground diagram. His elegant and ingenious proposal introduces the Victoria line as a clean diagonal running from northeast to southwest. This sketch focuses on the most complex section of the map: Highbury & Islington to Victoria.

Harry Beck had served as the chief designer for the London Underground map since 1933 when his revolutionary schematic design was first introduced to the public. With only a brief interlude from 1937 to 1941, Beck retained control of the design until 1960 when he was unceremoniously told by London Transport that his services were no longer required. Another member of London Transport’s Publicity Department, Harold Hutchinson, took it upon himself to produce a new Underground map in 1960, without consulting Beck and without following many of the key tenets of Beck’s design.

The Hutchinson design, much derided at the time, was felt to be a poor replacement with its harsh angles and inelegant zig-zagging lines. Beck may have thought that the arrival of the Victoria Line offered an opportunity to correct the errors of the Hutchinson design. After working for months to incorporate the new line, Beck submitted two Quad Royal posters for approval on 29 November 1961.

On those maps, the Victoria Line is portrayed in lilac, a colour which was ultimately abandoned as it was too difficult to print consistently. Both Quad Royal posters were returned less than two weeks later without comments. His elegant solution for the Victoria Line was never adopted. The following year, London Transport sent Harry Beck a dismissive letter in which they stated: “If at any time London Transport decides to use your map again, nobody but yourself will be commissioned to alter it and bring it up to date. The map now in use is of another design, and this is the one on which London Transport intends to show the Victoria Line and any other future additions to the Underground System.”


This wholly unfinished sketch provides a fascinating insight into Beck’s design process.

by Steven at February 15, 2025 10:00 AM

February 14, 2025

February 13, 2025

We went to see the exhibition of Tube Diagrams featuring some very early sketches by Harry Beck at the Map House in Knightsbridge (very, very pricey).

Victoria Line at Kings Cross and Euston

Four unique sketches in Harry Beck’s hand showing different ways to depict the area around Kings Cross and Euston when the Victoria Line was added to the diagram.
These sketches, drawn between 1961 and 1964, after Beck was unceremoniously ousted by London Transport, show his continued obsession with the design.


The first sketch (top-left) employs a design element which Beck had never used before: a square symbol for a mainline station interchange. As Beck never included this device on any of his other maps, we can suppose that he did not like this solution.

The second sketch (top-right) uses a bend in the Circle and Metropolitan Lines at King’s Cross to allow for a tidier connection with the Victoria Line. This ‘hump’ reduces the number of interchange circles to two, allowing for a much tighter diagram. Here Beck uses capitalized station names to indicate an interchange with British Railways services instead of the square icon. Beck had never been permitted to mix upper-case and lower-case station names prior to 1960.

The third sketch (bottom-left) shows King’s Cross with four interchange circles and Euston with three. Beck’s use of coloured circles to indicate which lines intersect dates back to his first map of 1933, but this tradition had been axed by Beck’s replacement who favoured one black circle or square to indicate an interchange. This sketch includes one other unique design element – the curved line connecting the two branches of the northern line between Mornington Crescent and Euston.

The fourth sketch (bottom-right) is an outlier, showing much of the eastern Circle Line, and parts of the Central and Piccadilly Lines. Here Harry Beck grapples with two problems: the route of the Victoria Line and how it might affect the eastern curve of the Circle Line. This sketch proposes a solution which never appears on a finished map, but was inspired by Paul Garbutt’s bottle-shaped Circle Line.

This remarkable set of sketches show the evolution of Harry Beck’s thinking about the addition of the Victoria Line and his continuing effort to improve the design after 1960.

by Steven at February 13, 2025 10:00 AM

February 12, 2025

February 11, 2025

January, the first month of 2025, brought us 36 new plugins, published in the QGIS plugin repository.

Here follows the quick overview in reverse chronological order. If any of the names or short descriptions catches your attention, you can find the direct link to the plugin page in the table below:

Overview

GBIF Extractor
Based on an extent, the user can download GBIF data.
Transliterator
A plugin to transliterate Georgian script to Latin.
CARTO
Seamless Cloud Data Warehouse Integration.
Open Google Maps
Opens current map extent in Google Maps.
Planet Sandbox Plugin
Plugin to explore Planet’s Sandbox data from the Planet Insights Platform. Right now it only displays a single layer, but makes it easy to see where the data is. This plugin will expand functionality in future versions.
QSFCGAL
This plugin integrates SFCGAL functions into the QGIS Processing toolbox and expressions for advanced spatial analysis.
Sampling Time
Performs multiple sampling methods on shapefile layers.
Layer Reverse
Reverse order of highlighted layers.
PointCloudFR
Downloads LiDAR tiles from IGN that intersect with the input AOI.
Layer CRS Shifter
Coordinate System Shift for Layer.
Connector for ODK
Connect to ODK Central, fetch submissions, and visualize field data on QGIS maps. Supports filtering, spatial analysis, and data export.
TeamArea Creator
Create 3 Layers for each Team, Collecting Things like garbage and trace their route. Export collectionMarks to Excel.
Lateral spreading
Lateral spreading for seismic microzonation.
WMS CQL Filter to QGIS Server Filter Request
Transforms CQL_FILTER WMS request to a QGIS server compatible FILTER request.
WQICalculator
WQICalculator is a QGIS plugin that allows automatic calculation of the Water Quality Index (WQI) using raster data of various physicochemical parameters as input.
Elasticsearch Loader
Connects to an Elasticsearch index, executes a query, and loads the results as a QGIS layer.
Sankalan 2
Tool for transferring data from and to Sankalan 2.0 Mobile App for field survey.
Layer Color Plugin
This plugin enables users to customize the background colors of layers and groups in the layer tree view, enhancing visual organization and project management.
Seismic microzones with morphological gradient
This plugin identifies areas with a morphological gradient with slopes ≥15° within seismic zones (input vector file) starting from the DTM.
Raster Stats Plus
Calculates detailed statistics of a selected raster layer, allows you to choose the band via a menu, and generates histogram and Gaussian curve plots.
Landsklim
Spatial interpolations from quantitative data.
RGD Savoie Mont Blanc Plugin
Plugin QGIS fournissant un accès simple aux flux de données géographiques du GIP RGD Savoie Mont Blanc et d’autres ressources géographiques utiles aux acteurs publics de Savoie et de Haute-Savoie ( plan cadastral, photographies aériennes, données d’urbanismes, cartes topographiques, données alimétriques, PCRS…). Fonctionnalités de recherche et consultation de données cadsatrales. Recherche d’adresse postale. Veuillez noter qu’un certain nombre de services accessibles par le plugin nécessitent d’avoir un accès autorisé accordé par la RGD Savoie Mont Blanc. info@rgd.fr pour toute création de compte.
TeleProp
Radio Propagation Fieldstrength
AfpolGIS Data Connector
This plugin allows you to load geospatial data from several Data Platforms; OnaData, ODK, KoboToolbox, ES World, GTS and DHIS.
GeoFlight Planner
A versatile QGIS plugin for drone flight planning, ensuring optimized flight paths and high-quality data capture.
Geology from points and lines
Geoprocessing plugin to generate polygons and lines from lines and points with geological information.
Census Downloader
Downloads Census Data.
FeaturesBoundingBox
Show the BBox info for the selected features.
Raster Reclassifier
Reclassification of the raster layer using a table of range values ​​extracted directly from the raster band, or defined directly by the user. The histogram of the raster is shown, reflecting the distribution of values ​​within the minimum and maximum range of the selected reference band. Available languages: English, Italian and Spanish. ***ITALIANO*** Riclassificazione del layer raster tramite una tabella di valori di intervallo estratti direttamente dalla banda raster, oppure definiti direttamente dall’utente. Viene mostrato l’istogramma del raster, che riflette la distribuzione dei valori all’interno dell’intervallo minimo e massimo della banda di riferimento selezionata.
QBeachball
Easily plot focal mechanisms (beachballs) onto a map.
argentina_georef
Obtiene información administrativa de Argentina a partir de coordenadas.
Stara Maps
Plugin para organizar arquivos de agricultura de precisão, facilitando a organização de mapas e arquivos em geral.
NL wfs_loader
Deze plugin laad publiek beschikbare, maar lastig vindbare, WFS lagen.
Polygon Labeler
Automatically generate and label polygons with custom names, and add the labels as a new attribute field to the attribute table.
ahp_application
This QGIS plugin implements the Analytic Hierarchy Process (AHP) for suitability analysis.
Geospatial Gateway – GeospatialCloudServ and Tile Server Connection
This plugin requires the purchase of either Windows Tile Server https://tileserver.techmaven.net or Ready to Go Cloud or On-Prem/Edge Virtual Machine Solution https://geospatialcloudserv.com

by adelcidesvGIS at February 11, 2025 08:31 PM

The GRASS Development Team is pleased to announce that the prebuilt applications for macOS are now signed and notarized. This enhancement represents a significant improvement in both security and user convenience. The currently available notarized binaries include the preview version 8.5.0dev and the release candidate 8.4.1. These versions are bundled with essential software components, including GDAL 3.10.1, PDAL 2.8.3, PROJ 9.5.1, and Python 3.12. Future releases will also be signed and notarized to ensure continued security and compliance.

February 11, 2025 03:00 PM

Using Satellites for Spying
GRAB (Galactic Radiation and Background) Satellite Ground
Station Contact Map, 1960

GRAB was the first electronic spy satellite; it picked up radio communications from Cold War adversaries. Ground operators used this map to tell when the satellite was overhead. That’s when they could download intercepted intelligence.

This is the last post from my visit to the National Air and Space Museum in Washington, it’s a must see if you are in the city.

by Steven at February 11, 2025 10:00 AM

tmap version 4 has now been released, and is now available on CRAN. It has a whole range of new features, which we will explore in this blog post.

If those words above mean nothing to you, a quick recap: tmap is a library used in R to make maps. I use it in my Introduction to Spatial Data and Using R as a GIS training course so if you have attended one of those, you have already used it. If you are interested in learning more, check out my Training Courses or my Training Materials

tmap’s maintainer, Martijn Tennekes, has been working on v4 for a number of years, and has quite a few changes under the hood.

From our point of view (people who are new-ish to R, and/or tmap) the code to make maps has changed slightly. Martijn has put in a lot of ‘helper’ information for people transitioning from v3 to v4, so all your code will still work.

For basic maps, qtm() hasn’t changed at all; although you will notice that the defaults have changed:

tmap v3: qtm(sthelens, fill="Burglary")

tmap v4: qtm(sthelens, fill="Burglary")

Similarly, tm_shape and tm_polygons are the same for a basic map, but again the defaults have changed.

However, when you get to doing slightly more advanced things with tm_shape, for example specifying colours, the code has changed slightly:

tmap v3:

tm_shape(LSOA) +
    tm_polygons("Age00to04", title = "Aged 0 to 4", palette = "Greens", style = "jenks") +
    tm_layout(legend.title.size = 0.8)

tmap v4:

  tm_shape(LSOA) +
    tm_polygons(fill = "Age00to04",
                fill.scale = tm_scale_intervals(values = "brewer.greens", style = "jenks"),
                fill.legend = tm_legend(title.size = 0.8))

One specific thing of note is that there is a much wider selection of colour pallets available than the Brewer pallets. As such, we now need to specify brewer.greens rather than just Greens. However we do get a handy note if we forget:

[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "Greens" is
named "brewer.greens"
Multiple palettes called "greens" found: "brewer.greens", "matplotlib.greens". 
The first one, "brewer.greens", is returned.

Martijn has designed the library to be backwards compatible, and if you do try using some v3 code with v4, it will still run and create your map, and give you some handy advice:

tm_shape(LSOA) +
   tm_polygons("Age00to04", title = "Aged 0 to 4", palette = "Greens", style = "jenks") +
   tm_layout(legend.title.size = 0.8)

── tmap v3 code detected ────────────────────────────────────────────────
[v3->v4] `tm_polygons()`: instead of `style = "jenks"`, use fill.scale =
`tm_scale_intervals()`.
ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
  'tm_scale_intervals(<HERE>)'
[v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend
of the visual variable `fill` namely 'title' to 'fill.legend =
tm_legend(<HERE>)'

Additionally, when dealing with the layout, legend and so on, things are a bit different:

tmap v3:

  tm_shape(LSOA) +
    #Set colours and classification methods
    tm_polygons("Total", title = "Total Population", palette = "Greens",
                style = "equal") +
    #Add scale bar
    tm_scale_bar(width = 0.22, position = c(0.05, 0.18)) +
    #Add compass
    tm_compass(position = c(0.3, 0.07)) +
    #Set layout details
    tm_layout(frame = F, title = "Liverpool", title.size = 2,
              title.position = c(0.7, "top"))

tmap v4:

  tm_shape(LSOA) +
    #set column, colours and classification method
    tm_polygons(fill = "Age00to04",
                fill.scale = tm_scale_intervals(values = "brewer.greens", style = "jenks"),
                fill.legend = tm_legend(title = "Aged 0 to 4", size = 0.8)) +
    #add scale bar
    tm_scalebar(position = c(0.1, 0.1)) + 
    #north arrow
    tm_compass(size = 1.5, position = c(0.1, 0.3)) +
    #Set title details
    tm_title("Total Population of Liverpool, 2021")

All of this redesign is in aid of better flexibility. For example, in v3 we were limited to tm_polygons(), tm_lines(), tm_symbols(), and tm_raster() (and their derivatives such as tm_borders() and tm_dots()). But with v4, these are easily extendible - so we can have things like tm_cartogram(), tm_donuts() and so on. Many of these are still in development but it opens up a much wider range of options.

In terms of how we show maps, v3 had plot and view modes, but this new framework makes it possible to add other modes as well.

Equally, tmap is based on sf and stars, but the new framework will make it easier to work with other spatial classes, such as SpatRaster and SpatVector from terra.

A nice overview for those already familiar with tmap is at http://mtennekes.github.io/tmap4/ (originally posted in 2021). The website also had a new range of tutorials under Basics and Advanced which are in the process of being developed.

The fact the tutorials (and the whole website) are built using pkgdown means that it is very easy to open the relevant page on GitHub and make changes. For example, I added a fixed breaks example to the Basic Scales page.

This also featured at the FOSS4G Code Sprint (Brazil) where Andrés Duhour and I updated the ggplot2 comparison article.

Tennekes M (2018). “tmap: Thematic Maps in R.” Journal of Statistical Software, 84(6), 1–39. doi:10.18637/jss.v084.i06.

If you want to learn how to use tmap, do have a look at my Introductory or Advanced GIS training in R, or if you have any questions, please do contact me.

by Nick Bearman at February 11, 2025 12:00 AM

February 10, 2025

For PostGIS Day this year I researched a little into one of my favourite topics, the history of relational databases. I feel like in general we do not pay a lot of attention to history in software development. To quote Yoda, “All his life has he looked away… to the future, to the horizon. Never his mind on where he was. Hmm? What he was doing.”

Anyways, this year I took on the topic of the early history of spatial databases in particular. There was a lot going on in the ’90s in the field, and in many ways PostGIS was a late entrant, even though it gobbled up a lot of the user base eventually.

February 10, 2025 04:00 PM

Picturing Earth from Space
Before the Space Age, people could only imagine what Earth looked like. Artists tried their best, and in time, new technologies started to piece together a more accurate picture. High-altitude rockets, satellites, and human space missions gave us increasingly dramatic views.
In 1950, Scientific American had to rely on artist Chesley Bonestell’s conception of Earth as seen from space, not on an actual photograph.

by Steven at February 10, 2025 10:00 AM

GeoSpatial Techno is a startup focused on geospatial information that is providing e-learning courses to enhance the knowledge of geospatial information users, students, and other startups. The main approach of this startup is providing quality, valid specialized training in the field of geospatial information.

( YouTube | LinkedIn | Facebook | X )


Powerful SLD Styles and Filters in GeoServer

In this session, we’ll explore GeoServer SLD styles and filters and highlight their practical and versatile uses. If you want to access the complete tutorial, click on the link.

Introduction

Filters in GeoServer are essential for controlling map data display, allowing users to set conditions for data inclusion. By integrating these filters into a Styled Layer Descriptor (SLD), users can customize maps based on specific attribute values or spatial areas. This customization enables the creation of visually informative and meaningful maps that effectively showcase data.

Several types of filters can be used in GeoServer styling, such as Comparison operators , Spatial operators , Logical operators and Arithmetic operators.

Note. This video was recorded on GeoServer 2.22.4, which is not the most up-to-date version. Currently, versions 2.25.x and 2.26.x are supported. To ensure you have the latest release, please visit this link and avoid using older versions of GeoServer.

Note. In all examples in this blog post, we utilize the topp:states layer.

Comparison Operators

These operators allow users to filter data by focusing on non-spatial attributes of a feature, selecting specific values within a field, or defining a range of values. This functionality helps refine search results within a dataset for more precise data analysis.

The Comparison operators include: Binary comparison operators and Value comparison operators.

The binary comparison operators are: PropertyIsEqualTo , PropertyIsNotEqualTo , PropertyIsLessThan , PropertyIsLessThanOrEqualTo , PropertyIsGreaterThan and PropertyIsGreaterThanOrEqualTo.

To learn how to use various filters for creating a custom SLD style in GeoServer, follow these steps:

  • Navigate to the Styles page from the Data section, then click on Add a new style link.
  • In the Name field, type your desired name, such as Comparison_lessThan.
  • Select Polygon from the list of default styles, then click the Generate link.
  • Type the new title on line 13, and press the ‘Enter’ key at the end of the line. Then, add the following block codes to the new line:

      <ogc:Filter>
        <ogc:PropertyIsLessThan>
          <ogc:PropertyName>PERSONS</ogc:PropertyName>
          <ogc:Literal>1000000</ogc:Literal>
        </ogc:PropertyIsLessThan>
      </ogc:Filter>
    
  • Press the Validate button to check if you have misspelled anything. If there are no errors, press the Apply button.
  • Switch to the Layer Preview tab and click the layer name above the preview box and select topp:states layer.

Comparison_lessThan In this example, we have created a style for states with a population of less than one million.

  • Press the Save button.

Other available comparison operators, known as the value comparison operators include: PropertyIsLike , PropertyIsNull, and PropertyIsBetween.

To use the PropertyIsLike operator in a new style, follow these steps:

  • Click on Add a new style link, then enter Comparison_like in the Name field.

  • Select Comparison_lessThan from the existing styles, then click the Copy link.

  • To filter the states that include new in their name, modify the existing codes using the following codes:

      <ogc:Filter>
        <ogc:PropertyIsLike  wildCard="%" singleChar="_" escape="!">
          <ogc:PropertyName>STATE_NAME</ogc:PropertyName>
          <ogc:Literal>%new%</ogc:Literal>
        </ogc:PropertyIsLike>
      </ogc:Filter>
    
  • Additionally, insert the following block of code on line 30 to display the names of the states as well.

      <TextSymbolizer>
        <Label>
          <ogc:PropertyName>STATE_NAME</ogc:PropertyName>
        </Label>
        <VendorOption name="maxDisplacement">50</VendorOption>
      </TextSymbolizer>
    
  • Press the Validate button to check if you have misspelled anything. If there are no errors, press the Apply button.

  • Switch to the Layer Preview tab and click the layer name above the preview box and select topp:states layer.

Comparison_like

In this example, we filtered the states that have the word new in their name, such as: New York , New Jersey , New Hampshire and New Mexico.

  • Press the Save button.

Spatial Operators

These operators allow users to filter data based on its spatial location. This can include filtering data based on its proximity to a specific point, within a specific area or boundary, or in relation to other spatial features.

Some common spatial operators include: Within , Contains , Intersects , BBOX , etc. For a comprehensive list of all the spatial operators, please visit this link

Follow these steps to use the Intersects filter in a new style:

  • Click on Add a new style link, then enter spatial_intersects in the Name field.
  • Select comparison_like from the existing styles, then click the Copy link.
  • Edit the codes using the following codes:

      <ogc:Filter xmlns:gml="http://www.opengis.net/gml">
        <ogc:Intersects>
          <ogc:PropertyName>the_geom</ogc:PropertyName>
          <gml:LineString>
            <gml:coordinates>-112.5,34.7 -106.8,36.7 -100.5,36.8 -97.4,42.4</gml:coordinates>
          </gml:LineString>
        </ogc:Intersects>
      </ogc:Filter>
    
  • Press the Validate button to check if you have misspelled anything. If there are no errors, press the Apply button.
  • Switch to the Layer Preview tab and select topp:states layer.

Spatial_intersects

The states that intersect with a LineString, determined by the specified coordinates, include Arizona, New Mexico, Oklahoma, Kansas and Nebraska.

  • Press the Save button.

Logical Operators

Logical operators are used to set conditions for applying specific style rules to features. They allow users to create complex rules based on various attributes and conditions. In GeoServer, the key logical operators are AND, OR, and NOT.

  • AND: Both specified conditions must be true for the style rule to be applied.
  • OR: At least one of the specified conditions must be true for the style rule to be applied.
  • NOT: The style rule will not apply to features that do not meet the specified condition.

Here’s an example of how to use the AND operator to filter a SLD based on two conditions.

  • Click on Add a new style link, then enter logical_and in the Name field.

  • Select spatial_intersects from the existing styles, then click the Copy link.

  • Edit the codes using the block codes below:

      <ogc:Filter xmlns:gml="http://www.opengis.net/gml">            
        <ogc:And>
          <ogc:BBOX>
            <ogc:PropertyName>the_geom</ogc:PropertyName>
            <gml:Box>
              <gml:coord>
                <gml:X>-105</gml:X> <gml:Y>35</gml:Y>
              </gml:coord>
              <gml:coord>
                <gml:X>-90</gml:X> <gml:Y>45</gml:Y>
              </gml:coord>
            </gml:Box>
          </ogc:BBOX>
          <ogc:PropertyIsBetween>
            <ogc:PropertyName>PERSONS</ogc:PropertyName>
            <ogc:LowerBoundary>
              <ogc:Literal>3000000</ogc:Literal>
            </ogc:LowerBoundary>
            <ogc:UpperBoundary>
              <ogc:Literal>5000000</ogc:Literal>
            </ogc:UpperBoundary>
          </ogc:PropertyIsBetween>
        </ogc:And>
      </ogc:Filter>
    
  • Press the Validate button to check if you have misspelled anything. If there are no errors, press the Apply button.
  • Switch to the Layer Preview tab and select topp:states layer.

Logical_and

In this example, the states that intersect a certain bounding box and have a population between 3 million and 5 million have been filtered. The states that meet these criteria are Colorado, Oklahoma, Tennessee, Minnesota and Wisconsin.

  • Press the Save button.

Arithmetic operators

Arithmetic operators enable users to create custom visualizations through mathematical equations and expressions, allowing them to effectively convey their data visually on maps.

The available arithmetic operators include: Add , Sub , Mul and Div.

For example, you can use arithmetic operators to create a proportional symbol map, where the size of point symbols is based on a numeric attribute value. By dividing the attribute value by a constant factor, you can control the size of the symbols accordingly.

Here’s an example of how to use this operator in GeoServer:

  • Click on Add a new style link, then enter arithmetic_div in the Name field.

  • Select Polygon from the list of default styles, then click the Generate link.

  • Enter the following code snippet on line 26:

      <Rule>
        <Name/>
        <Title>PERSONS Symbol</Title>
        <PointSymbolizer>
          <Geometry>
            <ogc:Function name="centroid">
              <ogc:PropertyName>the_geom</ogc:PropertyName>
            </ogc:Function>
          </Geometry> 
          <Graphic>
            <Mark>
              <WellKnownName>circle</WellKnownName>
              <Fill>
                <CssParameter name="fill">#FF0000</CssParameter>
              </Fill>
              <Stroke>
                <CssParameter name="stroke">#000000</CssParameter>
                <CssParameter name="stroke-width">1</CssParameter>
              </Stroke>
            </Mark>
            <Size>
              <ogc:Div>
                <ogc:PropertyName>PERSONS</ogc:PropertyName>
                <ogc:Literal>1000000</ogc:Literal>
              </ogc:Div>
            </Size>
          </Graphic>
        </PointSymbolizer>          
      </Rule>
    

In this example, we have defined two rules. The first rule is to display the simple polygons representing the states, while the second rule is to create circular symbols based on the population of each state.

We used the Centroid function to assign a symbol to each state, and place it exactly in the center of each polygon. In addition, we divided the Persons attribute by one million to ensure a proportional representation of the symbol size to the polygons.

  • Press the Validate button to check if you have misspelled anything. If there are no errors, press the Apply button.

  • Switch to the Layer Preview tab and select topp:states layer.

Arithmetic_div

As you can see, we have scaled the point size based on the PERSONS attribute. This makes the symbol larger for larger population values like California, New York and Texas and the symbol smaller for smaller population values like Wyoming.

  • Press the Save button.

In this session, we took a brief journey to explore SLD styles and various filters in GeoServer. If you want to access the complete tutorial, click on the link.

by Nima Ghasemloo at February 10, 2025 12:00 AM

February 09, 2025

Another one from the Air and Space Museum.

Using the Moon as a Communications Satellite

The U.S. Navy’s Operation Moon Bounce beamed radio signals to the Moon that bounced back to another location on Earth. This system made it easier for the military to send long-distance messages during the Cold War. This lighted globe helped radio operators see which half of the Earth was facing the Moon— showing when and where moon-bounce messages could be sent.

by Steven at February 09, 2025 10:00 AM

February 08, 2025

We are thrilled to announce that QGIS has been officially recognized as a Digital Public Good (DPG) by the Digital Public Goods Alliance (DPGA)! This recognition underscores our commitment to open-source geospatial solutions that contribute to the advancement of the United Nations Sustainable Development Goals (SDGs).

What is a Digital Public Good?

A Digital Public Good is a digital solution that meets the DPG Standard, ensuring that it is open-source, respects privacy, adheres to best practices, and contributes to sustainable development. The DPGA is a multi-stakeholder initiative dedicated to fostering the discovery, development, and implementation of digital solutions that address global challenges such as climate change, public health, and equitable access to technology.

Why is this important for QGIS?

Being recognized as a Digital Public Good highlights our:

  • Alignment with SDGs, supporting sustainable development by enabling environmental monitoring, disaster management, urban planning, and more.
  • Commitment to open-source principles, ensuring transparency, collaboration, and accessibility.
  • Independence & accessibility, empowering users without restrictions, across different operating systems, and in a multitude of languages (even more than can be listed on the DPG Registry page).
  • Privacy & security, adhering to best practices in data protection and governance.

What does this mean for the us?

Being recognized as a DPG strengthens our global reach and impact, opening doors for further collaborations with governments, NGOs, and educational institutions looking for robust and free geospatial tools. It also reaffirms our dedication to building an open, inclusive, and innovative GIS ecosystem that serves communities worldwide.

Learn more

You can find QGIS listed in the Digital Public Goods Registry here. We encourage all members of our community to share this great news and continue contributing to the growth of QGIS!

We would like to particularly thank Enrico Ferreguti for taking the initiative and preparing the application for the QGIS project.

by underdark at February 08, 2025 12:05 PM

February 07, 2025

With the QGIS Grant Programme 2024 (Updates #1 & #2), we were able to support 7 enhancement proposals that improve the QGIS project. The following reports summarize the work performed:  

  1. QEP#269 Update older annotation items to new frameworkreport
    This enhancement introduced new annotation types, improved callout options, and a rich text editor for better formatting. Annotations can now link to a “visibility layer,” and older types are automatically upgraded for a cleaner UI. Future improvements may include handling HTML annotations, deprecating the “Form” annotation, and refining the user experience.
  2. QEP#289 Authentication system revision (v1.1)report
    This work enhances the authentication framework by automating password synchronization with the system keychain and generating secure default passwords for new profiles. Users now experience a smoother setup with fewer manual steps, while UI tweaks improve password handling and security. These changes provide a more seamless and secure experience for both users and plugin developers.
  3. QEP#291 Mitigate Abusive Tile Fetching on OpenStreetMap (OSM)report
    This work enhanced network caching by dynamically adjusting cache size based on available disk space, significantly improving tile storage for most users. New safeguards prevent accidental breaches of OpenStreetMap’s tile usage policy by limiting bulk downloads across various tools and warning users when thresholds are exceeded. Additionally, the default OpenStreetMap XYZ layer now uses a 96DPI tile resolution, reducing unnecessary tile requests and improving print layout exports. These changes help ensure responsible data usage while enhancing performance and usability.
  4. QEP#287 PyQGIS linter warningsreport
    This work enhanced QGIS’s Python integration by contributing upstream, directly to SIP. This approach avoids extra build-time complexity. In addition to static linting, support for deprecation messages was added, now active in QGIS (requires Python-SIP 6.9.0 or later). Due to budget constraints and dependency availability, planned updates to the plugin platform needed to be postponed.
  5. QEP#290 Clean up point cloud index and improve its thread safetyreport
    This work enhanced point cloud support by providing shared pointer access to the point cloud index, cleaning up the point cloud index API, unifying local and remote implementations of EPT/COPC providers, and refining hierarchy fetching logic. These updates make point cloud handling more robust and better prepared for future use cases.
  6. QEP#292 Implementing CI Qt6 Windows Builds through vcpkgreport
    This enhancement focused on transitioning QGIS to build with Qt6 using vcpkg, streamlining dependency management and improving the Windows development experience. Continuous integration pipelines now test Qt6 builds, helping identify compatibility issues early. Additional contributions include improved build documentation, enhanced dependency tracking, modernized CMake scripts, and updates to the pull request comment bot. Preliminary work has also begun on macOS support using the same vcpkg system. These efforts lay the groundwork for a smoother Qt6 migration and long-term maintainability.
  7. QEP#248 Authentication System: allow Database storage for authentication DBreport
    This enhancement introduced a new API for managing authentication credentials in QGIS. While its immediate impact on users is limited, it addresses SQLite scaling issues for QGIS Server in cloud environments and lays the foundation for future enhancements. The update includes an abstraction layer for third-party credential storage, support for multiple prioritized encrypted and unencrypted storage options, and improved access control for authentication assets. Documentation has been updated to reflect these changes.

Thank you to everyone who participated and made this round of grants a great success and thank you to all our sustaining members and donors who make this initiative possible!

by underdark at February 07, 2025 04:25 PM

Hoy me estreno en el blog de gvSIG para contaros nuestra participación en el Workshop on Open Source Sharing and Reuse in Local Public Sector Organisations, un evento clave para el debate sobre la reutilización de software libre en organizaciones del sector público local y regional.

Este taller ha sido una gran oportunidad para compartir experiencias y reflexionar sobre cómo se está adoptando y gestionando el software libre en diferentes instituciones. En particular, el debate se ha centrado en la validación de las conclusiones de la investigación llevada a cabo por OSOR (Open Source Observatory) sobre el uso del software libre en el sector público, tomando como referencia cinco proyectos analizados como casos de estudio.

La sesión ha sido altamente interactiva y ha permitido a los participantes aportar sus opiniones sobre temas clave como la gobernanza, la organización, la financiación y la sostenibilidad del software libre en el sector público. La agenda del workshop ha estado estructurada de la siguiente manera:

🔹 Introducción y presentación de participantes
🔹 Presentación de casos de estudio
🔹 Exposición de hallazgos sobre gobernanza y organización
🔹 Debate y feedback sobre gobernanza y organización
🔹 Exposición de hallazgos sobre financiación y sostenibilidad
🔹 Debate y feedback sobre financiación y sostenibilidad
🔹 Conclusiones y cierre

La reutilización del software libre en el sector público es un tema estratégico que puede generar grandes beneficios en términos de eficiencia, reducción de costes y soberanía tecnológica. Sin embargo, también presenta desafíos que requieren una reflexión profunda sobre la manera en que se organizan los proyectos, se gestionan los recursos y se garantiza su sostenibilidad a largo plazo.

Desde gvSIG seguimos comprometidos con estos debates y con la promoción de modelos abiertos y colaborativos en el ámbito de los Sistemas de Información Geográfica y la Infraestructura de Datos Espaciales.

¿Te interesa este tema? ¡Déjanos tus comentarios y sigamos la conversación!

by Amparo Cisneros at February 07, 2025 01:15 PM

February 06, 2025

February 05, 2025

The GeoTools shares the release of GeoTools 28.6 available for Java 8 applications:&nbsp;geotools-2.28.6-bin.zip&nbsp; &nbsp; &nbsp;geotools-2.28.6-doc.zip&nbsp; &nbsp; &nbsp;geotools-2.28.6-userguide.zip&nbsp; &nbsp; &nbsp;geotools-2.28.6-project.zipThis release is also available from the OSGeo Maven Repository and is made to support the upcoming GeoNetwork 4.2.12 release.This release provides

by Jody Garnett (noreply@blogger.com) at February 05, 2025 09:06 PM

February 04, 2025

February 03, 2025

I have been watching the codification of spatial data types into GeoParquet and now GeoIceberg with some interest, since the work is near and dear to my heart.

Writing a disk serialization for PostGIS is basically an act of format standardization – albeit a standard with only one consumer – and many of the same issues that the Parquet and Iceberg implementations are thinking about are ones I dealt with too.

Here is an easy one: if you are going to use well-known binary for your serialiation (as GeoPackage, and GeoParquet do) you have to wrestle with the fact that the ISO/OGC standard for WKB does not describe a standard way to represent empty geometries.

Empty

Empty geometries come up frequently in the OGC/ISO standards, and they are simple to generate in real operations – just subtract a big thing from a small thing.

SELECT ST_AsText(ST_Difference(
	'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))',
	'POLYGON((-1 -1, 3 -1, 3 3, -1 3, -1 -1))'
	))

If you have a data set and are running operations on it, eventually you will generate some empties.

Which means your software needs to know how to store and transmit them.

Which means you need to know how to encode them in WKB.

And the standard is no help.

But I am!

WKB Commonalities

All WKB geometries start with 1-byte “byte order flag” followed by a 4-byte “geometry type”.

enum wkbByteOrder  {
    wkbXDR = 0, // Big Endian
    wkbNDR = 1  // Little Endian
};

The byte order flag signals which “byte order” all the other numbers will be encoded with. Most modern hardware uses “least significant byte first” (aka “little endian”) ordering, so usually the value will be “1”, but readers must expect to occasionally get “big endian” encoded data.

enum wkbGeometryType {
    wkbPoint = 1,
    wkbLineString = 2,
    wkbPolygon = 3,
    wkbMultiPoint = 4,
    wkbMultiLineString = 5,
    wkbMultiPolygon = 6,
    wkbGeometryCollection = 7
};

The type number is an integer from 1 to 7, in the indicated byte order.

Collections

Collections are easy! GeometryCollection, MultiPolygon, MultiLineString and MultiPoint all have a WKB structure like this:

wkbCollection {
    byte    byteOrder;
    uint32  wkbType;
    uint32  numWkbSubGeometries;
    WKBGeometry wkbSubGeometries[numWkbSubGeometries];
}

The way to signal an empty collection is to set its numGeometries value to zero.

So for example, a MULTIPOLYGON EMPTY would look like this (all examples in little endian, spaces added between elements for legibility, using hex encoding).

01 06000000 00000000

The elements are:

  • The byte order flag
  • The geometry type (6 == MultiPolygon)
  • The number of sub-geometries (zero)

Polygons and LineStrings

The Polygon and LineString types are also very easy, because after their type number they both have a count of sub-objects (rings in the case of Polygon, points in the case of LineString) which can be set to zero to indicate an empty geometry.

For a LineString:

01 02000000 00000000

For a Polygon:

01 03000000 00000000

It is possible to create a Polygon made up of a non-zero number of empty linear rings. Is this construction empty? Probably. Should you make one of them? Probably not, since POLYGON EMPTY describes the case much more simply.

Points

Saving the best for last!

One of the strange blind spots of the ISO/OGC standards is the WKB Point. There is an standard text representation for an empty point, POINT EMPTY. But there nowhere in the standard a description of a WKB empty point, and the WKB structure of a point doesn’t really leave any place to hide one.

WKBPoint {
    byte    byteOrder;
    uint32  wkbType; // 1
    double x;
    double y;
};

After the standard byte order flag and type number, the serialization goes directly into the coordinates. There’s no place to put in a zero.

In PostGIS we established our own add-on to the WKB standard, so we could successfully round-trip a POINT EMPTY through WKB – empty points are to be represented as a point with all coordinates set to the IEEE NaN value.

Here is a little-endian empty point.

01 01000000 000000000000F87F 000000000000F87F

And a big-endian one.

00 00000001 7FF8000000000000 7FF8000000000000

Most open source implementations of WKB have converged on this standardization of POINT EMPTY. The most common alternate behaviour is to convert POINT EMPTY object, which are not representable, into MULTIPOINT EMPTY objects, which are. This might be confusing (an empty point would round-trip back to something with a completely different type number).

In general, empty geometries create a lot of “angels dancing on the head of a pin” cases for functions that otherwise have very deterministic results.

  • “What is the distance in meters between a point and an empty polygon?” Zero? Infinity? NULL? NaN?
  • “What geometry type is the interesection of an empty polygon and empty line?” Do I care? I do if I am writing a database system and have to provide an answer.

Over time the PostGIS project collated our intuitions and implementations in this wiki page of empty geometry handling rules.

The trouble with empty handling is that there are simultaneously a million different combinations of possibilities, and extremely low numbers of people actually exercising that code line. So it’s a massive time suck. We have basically been handling them on an “as needed” basis, as people open tickets on them.

Other Databases

  • SQL Server changes POINT EMPTY to MULTIPOINT EMPTY when generating WKB.
    SELECT Geometry::STGeomFromText('POINT EMPTY',4326).STAsBinary()
    
    0x010400000000000000
    
  • MariaDB and SnowFlake return NULL for a POINT EMPTY WKB.
    SELECT ST_AsBinary(ST_GeomFromText('POINT EMPTY'))
    
    NULL
    

February 03, 2025 04:00 PM

February 02, 2025

February 01, 2025

This was also in the display at the National Museum of the American Indian in NYC.
“Over generations, Native Americans harnessed the potential of natural grasses, trees, bushes, and even cactus to breed edible crops. Today four of the top ten crops that feed the world originally came from Native American farmers: corn, potatoes, cassava, and tomatoes.”

by Steven at February 01, 2025 10:00 AM

January 31, 2025

Today, I’m super excited to share with you the announcement that our open source textbook “Geocomputation with Python” has finally arrived in print and is now available for purchase from Routledge.com, Amazon.com, Amazon.co.uk, and other booksellers.

“Geocomputation with Python” (or geocompy for short) covers the entire range of standard GIS operations for both vector and raster data models. Each section and chapter builds on the previous. If you’re just starting out with Python to work with geographic data, we hope that the book will be an excellent place to start.

Of course, you can still find the online version of the book at py.geocompx.org.

The book is open-source and you can find the code on GitHub. This ensures that the content is reproducible, transparent, and accessible. It also lets you interact with the project by opening issues and submitting pull requests.

by underdark at January 31, 2025 05:56 PM

Saw this at the National Museum of the American Indian in New York, it illustrates some of the inventions that we take for granted nowadays which originated in America before colonisation.

“Native people of the Americas changed the world with their scientific discoveries and inventions. Today their innovations continue to influence our daily lives.”

by Steven at January 31, 2025 10:00 AM

January 30, 2025

January 29, 2025

January 28, 2025

January 27, 2025

GeoTools 32.2 released The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 32.2: geotools-32.2-bin.zip geotools-32.2-doc.zip geotools-32.2-userguide.zip geotools-32.2-project.zip This release is also available from the OSGeo Maven Repositoryand is made in conjunction with GeoServer 2.26.2 and GeoWebCache 1.26.2. We are grateful to Jody Garnett (GeoCat)

by Jody Garnett (noreply@blogger.com) at January 27, 2025 07:49 PM