
Dean shared this Loyalty card mapping a coffee place.
Dean shared this Loyalty card mapping a coffee place.
The United nations headquarters building in New York has their world map logo all over the place.
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”.
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á.
An incomplete sketch by Harry Beck, the designer of the iconic London Underground map. The hastily drawn sketch focuses on Southwest London as it intends to show a proposed new layout for the District Line branch to Richmond.
Much of the map is composed of crude pencil sketches, but the relevant areas have been tidied up and straightened with colour pencil.
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.
To Celebrate Saint Valentine’s Day, what better map than Paris, the city of Love, with two lovers?
Painting on an old-school map by C215
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.
The GRASS GIS 8.4.1RC1 release provides more than 70 improvements and fixes with respect to the release 8.4.0. Please support us in testing this release candidate.
The post GRASS GIS 8.4.1RC1 released appeared first on Markus Neteler Consulting.
Spotted in Chinatown, NYC.
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:
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 |
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.
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:
qtm(sthelens, fill="Burglary")
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.
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.
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.
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 )
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.
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.
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:
Comparison_lessThan
.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>
topp:states
layer.
In this example, we have created a style for states with a population of less than one million.
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.
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
.
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:
spatial_intersects
in the Name field.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>
topp:states
layer.The states that intersect with a LineString, determined by the specified coordinates, include Arizona
, New Mexico
, Oklahoma
, Kansas
and Nebraska
.
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.
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>
topp:states
layer.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
.
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.
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.
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.
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.
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).
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.
Being recognized as a Digital Public Good highlights our:
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.
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.
Saw these in the Air and Space Museum, can’t quite remember the story behind them but I think it is to do with satellite communications for internet (somebody correct me please). Regardless, this is a massive globe with lights and lines and I thought it was cool.
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:
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!
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!
At the Brooklyn Library they had an area where there was a rotating display of artwork from and about the city, I particularly liked this map of the Brooklyn neighbourhoods.
“A Map of Brooklyn: a nostalglarama by Richard Rosenblum”
I spotted these ceramic coasters at the Brooklyn Library, now I’m home I wish I had bought them.
by Jody Garnett (noreply@blogger.com) at February 05, 2025 09:06 PM
The Women’s Air Derby was the first official women-only air race in the United States. Humorist Will Rogers referred to it as the Powder Puff Derby, the name by which the race is most commonly known.
Another Pan Am poster, those guys had style.
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 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!
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 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 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.
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.
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.
POINT EMPTY
to MULTIPOINT EMPTY
when generating WKB.
SELECT Geometry::STGeomFromText('POINT EMPTY',4326).STAsBinary()
0x010400000000000000
POINT EMPTY
WKB.
SELECT ST_AsBinary(ST_GeomFromText('POINT EMPTY'))
NULL
There is something exquisite and nostalgic about this old Pan Am logo
There are a few coming up from the National Air and Space Museum in Washington, this place was heaven for map loving air and space nerds like me. This poster dates from the late 1940’s, pretty is an understatement.
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.”
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.
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.”
Elizabeth spotted this collection of maps for sale in Covent Garden recently, lots of interesting old maps.
Doug Greenfield shared this “Support your local growers #MapsintheWild Topsfield Fair, northeastern Massachusetts”
Joe Davies shared another picture from Lyon. The city where I grew up! The photo comes from the underground metro station at Place Jean Jaures, Lyon 7eme.
by Jody Garnett (noreply@blogger.com) at January 27, 2025 07:49 PM