Vous pouvez lire le billet sur le blog La Minute pour plus d'informations sur les RSS !
Canaux
5191 éléments (27 non lus) dans 55 canaux

-
Cybergeo
-
Revue Internationale de Géomatique (RIG)
-
SIGMAG & SIGTV.FR - Un autre regard sur la géomatique
-
Mappemonde (10 non lus)
-
Dans les algorithmes (1 non lus)
-
Imagerie Géospatiale
-
Toute l’actualité des Geoservices de l'IGN
-
arcOrama, un blog sur les SIG, ceux d ESRI en particulier
-
arcOpole - Actualités du Programme
-
Géoclip, le générateur d'observatoires cartographiques
-
Blog GEOCONCEPT FR

-
Géoblogs (GeoRezo.net)
-
Conseil national de l'information géolocalisée
-
Geotribu
-
Les cafés géographiques (1 non lus)
-
UrbaLine (le blog d'Aline sur l'urba, la géomatique, et l'habitat)
-
Icem7
-
Séries temporelles (CESBIO)
-
Datafoncier, données pour les territoires (Cerema)
-
Cartes et figures du monde (1 non lus)
-
SIGEA: actualités des SIG pour l'enseignement agricole
-
Data and GIS tips
-
Neogeo Technologies (5 non lus)
-
ReLucBlog
-
L'Atelier de Cartographie
-
My Geomatic
-
archeomatic (le blog d'un archéologue à l’INRAP)
-
Cartographies numériques (8 non lus)
-
Veille cartographie
-
Makina Corpus (1 non lus)
-
Oslandia
-
Camptocamp
-
Carnet (neo)cartographique
-
Le blog de Geomatys
-
GEOMATIQUE
-
Geomatick
-
CartONG (actualités)
opensource
-
21:10
gvSIG Batoví: Nueva edición Curso – Concurso Geoalfabetización mediante la utilización de Tecnologías de la Información Geográfica
sur Planet OSGeo¡Vamos por el séptimo año!
El Curso – Concurso Geoalfabetización mediante la utilización de TIGs se desarrollará entre el 3 de junio y el 7 de noviembre y es organizado por la Dirección Nacional de Topografía (MTOP), la Inspección Nacional de Geografía y Geología (ANEP-DGES), Ceibal y la Universidad Politécnica de Madrid (España). Este año la iniciativa cuenta con la colaboración de la Dirección General de Educación Técnico-Profesional (UTU), la Asociación Nacional de Profesores de Geografía (ANPG) y la Universidad Central Marta Abreu de Las Villas (Cuba).
La iniciativa consta de 2 partes: primero: un curso denominado Tecnologías de la Información Geográfica y gvSIG Batoví dirigido a docentes de Enseñanza Media y Técnico-Profesional de Geografía y áreas relacionadas con el conocimiento geográfico, ambiental y social. La capacitación se desarrollará del 3 al 28 de junio en modalidad b-learning (plataforma + taller por videoconferencia).
Se entregará una certificación avalada por las instituciones organizadoras del curso, en la cual se reconocerá la participación satisfactoria de los cursillistas en la capacitación brindada (30 horas) y en el concurso posterior.
Para acceder a la certificación los inscriptos deberán completar el recorrido de los temas en la plataforma, asistir a los 3 días de taller, entregar las actividades propuestas y deberán también haber participado del concurso posterior.
Período de inscripción: del 27 de mayo al 2 de junio.
La segunda parte consiste en un concurso denominado Proyectos con Estudiantes y gvSIG Batoví. Los equipos de trabajo estarán integrados por estudiantes (de 3 a 5 alumnos) y al menos un docente de referencia (máx. 3), el cual debió participar en alguna edición del curso. Cada equipo deberá presentar un proyecto de trabajo que identifique y aborde una problemática de interés local, que posea una dimensión territorial y se enmarque en alguno de los Objetivos de Desarrollo Sostenible (ODS) 2030 de la Organización de las Naciones Unidas. Cada proyecto contará con un tutor que le proporcionará asesoría técnica y pedagógica.
En cuanto a la premiación, se seleccionarán 3 proyectos finalistas y de ellos el ganador del concurso. Los ganadores recibirán los premios propuestos por la organización y el resto de los equipos un certificado por su participación.
Dudas o consultas: batovi@ceibal.edu.uy
convocatoria-curso-tig-y-barovi-2024Descarga -
11:00
Mappery: Ho Chi Minh by C215
sur Planet OSGeoRevolutionary leader Ho Chi Minh gazes out from a vintage map of Vietnam. A symbol of resilience and national pride
C215, Christian Guemy’s website c215.fr
MapsintheWild Ho Chi Minh by C215
-
20:24
GeoTools Team: GeoTools 31.1 Released
sur Planet OSGeo GeoTools 31.1 released The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 31.1: geotools-31.1-bin.zip geotools-31.1-doc.zip geotools-31.1-userguide.zip geotools-31.1-project.zip This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.25.1 and GeoWebCache 1.25.1. Thanks to Jody Garnett -
14:00
Fernando Quadro: O papel do Machine Learning no GIS
sur Planet OSGeoNo domínio dos Sistemas de Informação Geográfica (GIS), o Machine Learning não é apenas uma palavra da moda, é uma força transformadora. É a chave para desbloquear todo o potencial dos dados geoespaciais, transformando conjuntos de dados vastos e complexos em insights acionáveis. Vamos nos aprofundar nos tipos de algoritmos de machine learning e suas aplicações em contextos geoespaciais.
Aprendizagem supervisionada: A aprendizagem supervisionada é semelhante a ter um guia experiente no deserto de dados. Com conjuntos de dados rotulados, os algoritmos aprendem a prever resultados com base em exemplos anteriores. É perfeito para:
Mapeamento de Habitat de Espécies: Prever onde certas espécies podem prosperar.
Categorização da Cobertura do Solo: Classificação de áreas com base na vegetação, desenvolvimento urbano ou corpos d’água.
Previsão Climática: Estimativa de padrões futuros de temperatura e precipitação.
Aprendizagem não supervisionada: Algoritmos de aprendizagem não supervisionados são os exploradores intrépidos, encontrando estruturas ocultas em territórios desconhecidos de dados não rotulados. Eles se destacam em:
Segmentação de imagens: Divisão de milhões de imagens de satélite em clusters significativos.
Detecção de anomalias: Identificação de padrões incomuns que possam indicar mudanças ambientais ou desenvolvimento urbano.
Aprendizado profundo: O aprendizado profundo se aprofunda nos dados, usando redes neurais em camadas para processar informações de uma forma que imita o cérebro humano. Sua habilidade é evidente em:
Classificação de Imagens: Distinguir entre diferentes usos do solo em imagens de satélite.
Detecção de Objetos: Identificação e localização de objetos como veículos ou edifícios em fotos aéreas.
Análise de Séries Temporais: Monitoramento de mudanças ao longo do tempo, como desmatamento ou expansão urbana.
Algoritmos Comuns: Os algoritmos mais comumente usados em análise geoespacial incluem:
Random Forest: um método de conjunto robusto, ótimo para tarefas de classificação e regressão.
Regressão Linear: Ideal para prever variáveis contínuas, como tendências de temperatura.
Regressão Logística e Árvores de Decisão: Útil para classificação binária, como áreas propensas a inundações.
K-Nearest Neighbors: Um método simples, mas eficaz para classificação com base na proximidade.
Naïve Bayes: Uma abordagem probabilística frequentemente usada para classificação de texto e filtragem de spam.
K-Means Clustering: Um algoritmo não supervisionado que agrupa dados em k clusters distintos.
À medida que continuamos a aproveitar esses algoritmos, não estamos apenas mapeando o mundo, estamos moldando-o. O futuro da análise geoespacial está aqui e é inteligente, dinâmico e incrivelmente emocionante.
Gostou desse post? Conte nos comentários
-
11:00
Mappery: What matters is Love by C215
sur Planet OSGeoA masked Parisian embrace painted over a map of the City of Lights. C215 reminds us: “l’important c’est d’aimer” (what matters is love).
C215, Christian Guemy’s website c215.fr
MapsintheWild What matters is Love by C215
-
8:01
GeoSolutions: Building and Consuming Urban Digital Twins with Open-Source Tools
sur Planet OSGeoYou must be logged into the site to view this content.
-
6:56
[Equipe Oslandia] Jacky, ingénieur SIG / développeur Python C++
sur OslandiaChaque mois, nous avons le plaisir de vous présenter un membre de l’équipe, aujourd’hui c’est Jacky qui a répondu à nos questions
Jacky a effectué 7 ans de sa scolarité à la maison lui permettant de consacrer du temps à des activités plus « libres » que le cadre strict de l’enseignement traditionnel. Il découvre très jeune l’informatique, la programmation mais apprend aussi le braille, s’adonne à la pêche, à l’astronomie, à la danse ou à la musique. C’est en candidat libre qu’il obtient son Bac Scientifique. Il poursuit ses études avec un DUT Mesures Physiques, en alternance chez Schneider Electric, et un diplôme d’Ingénieur Électronique et Informatique industrielle à Polytech Grenoble en alternance chez STMicroelectronics.
Il passe 3 ans chez ST au sein du service R&D avant de rejoindre en tant qu’ingénieur / chercheur le CEA Leti et plus précisément le service lithographie à faisceau d’électrons où il travaille à anticiper la déformation sur le silicium (EBPC – Electron Beam Proximity Correction). Il reste 3 ans au CEA.
« Je voulais sortir du côté grosse entreprise, j’ai été embauché chez Unistellar, une start-up qui préparait son Kickstarter. J’ai travaillé sur son téléscope intelligent (avec traitement d’images en direct) connecté piloté par le smartphone et plus précisément sur la stabilisation du code embarqué, afin de créer le prototype assez avancé pour trouver des investisseurs »
Pour des raisons familiales, Jacky rejoint Aix en Provence et commence à travailler pour la société du Canal de Provence pour renforcer l’équipe de développeurs QGIS. Il découvre les SIG et QGIS !
« Au CEA, je travaillais dans le traitement géométrique et chez Unistellar également, je suis passé de l’infiniment petit à l’infiniment grand, pour être à l’échelle terrestre aujourd’hui. Je retrouve des traitements similaires au final. »
C’est sa collègue du Canal de Provence qui lui fait connaitre Oslandia à travers des contributions QGIS. Jacky est embauché chez Oslandia en 2021 au poste d’ingénieur SIG / développeur Python C++.
« On peut dire que je suis parti en éclaireur, Gwendoline, ma collègue nous a rejoint 6 mois après mon arrivée. »
Jacky travaille au développement de modules Python pour QGIS et depuis 6 mois, sur le développement QGIS cœur en C++.
Ses projets emblématiques- Avec L’INRAE : plugin QGIS Python d’aide à la décision pour la création de réseaux d’assainissement – [Plus d’infos]
- Avec l’agence spatiale canadienne : plugin GQIS python pour le suivi de vols de ballons stratosphériques – [Plus d’infos]
Python et C++
Sa philosophieTout est relatif !
Oslandia en 1 motPartage !
-
2:51
GeoTools Team: GeoTools 30.3 released
sur Planet OSGeo The GeoTools team is pleased to the release of the latest stable version of GeoTools 30.3:geotools-30.3-bin.zip geotools-30.3-doc.zip geotools-30.3-userguide.zip geotools-30.3-project.zip This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.24.3. The release was made by Andrea Aime (Geosolutions). -
2:00
GeoServer Team: GeoServer 2.25.1 Release
sur Planet OSGeoGeoServer 2.25.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.25.1 is made in conjunction with GeoTools 31.1, and GeoWebCache 1.25.1.
Thanks to Jody Garnett (GeoCat) for making this release.
Security ConsiderationsThis release addresses security vulnerabilities and is considered an essential upgrade for production systems.
See project security policy for more information on how security vulnerabilities are managed.
Raster Attribute Table ExtensionA new extension is available that takes advantage of the GDAL Raster Attribute Table (RAT). This data structure provides a way to associate attribute information for individual pixel values within the raster. This provides a table that links each cell value in the raster to one or more attributes on the fly.
Thanks to Andrea Aime (GeoSolutions) for the development and NOAA for sponsoring this new capability. Please see the user guide Raster Attribute Table support for more information.
- GEOS-11376 Graduate Raster Attribute Table to extension
New Feature:
- GEOS-11267 CSW ISO extension multiple mappings should also have multiple queryable mappings
- GEOS-11376 Graduate Raster Attribute Table to extension
Improvement:
- GEOS-11306 Java 17 does not support GetFeature lazy JDBC count(*)
- GEOS-11311 Show a full stack trace in the JVM stack dump panel
- GEOS-11342 STAC should exclude items when the collection in path is wrong
- GEOS-11359 Update MapML viewer to release 0.13.2
-
GEOS-11369 Additional authentication options for cascaded WMS WMTS data stores - GEOS-11377 RAT module: allow to reload/recompute the RAT
- GEOS-11400 About Page Layout and display of build information
- GEOS-11401 Introduce environmental variables for Module Status page
Bug:
- GEOS-11202 CAS extension doesn’t use global “proxy base URL” setting for service ticket
- GEOS-11236 WFS 2.0.0/GetFeature - Shapefile - “We have had issues trying to flip axis”
- GEOS-11331 OAuth2 can throw a “ java.lang.RuntimeException: Never should reach this point”
- GEOS-11332 Renaming style with uppercase/downcase empty the sld file
- GEOS-11382 The interceptor “CiteComplianceHack” never gets invoked by the Dispatcher Servlet
- GEOS-11385 Demo Requests functionality does not honour ENV variable PROXY_BASE_URL
- GEOS-11392 ConcurrentModificationException while using proxy-base-ext
Task:
- GEOS-11360 Upgrade Apache POI from 4.1.1 to 5.2.5
- GEOS-11362 Upgrade Spring libs from 5.3.32 to 5.3.33
- GEOS-11374 Upgrade Spring version from 5.3.33 to 5.3.34
- GEOS-11375 GSIP 224 - Individual contributor clarification
- GEOS-11388 Update ImageIO-EXT to 1.4.10
- GEOS-11393 Upgrade commons-io from 2.12.0 to 2.16.1
- GEOS-11395 Upgrade guava from 32.0.0 to 33.2.0
- GEOS-11397 App-Schema Includes fix Integration Tests
- GEOS-11402 Upgrade PostgreSQL driver from 42.7.2 to 42.7.3
- GEOS-11403 Upgrade commons-text from 1.10.0 to 1.12.0
- GEOS-11404 Upgrade commons-codec from 1.15 to 1.17.0
For the complete list see 2.25.1 release notes.
Community UpdatesCommunity module development:
- GEOS-11040 Could not get a ServiceInfo for service Features thus could not check if the service is enabled
- GEOS-11330 OAuth2 kid verification should be optional
- GEOS-11339 Introducing the Features Autopopulate Community Plugin
- GEOS-11340 WFS Freemarker HTML Outputformat
- GEOS-11345 STAC Conformance URIs need to be updated to v1.0.0
- GEOS-11348 JMS cluster does not allow to publish style via REST “2 step” approach
- GEOS-11358 Feature-Autopopulate Update operation does not apply the Update Element filter
- GEOS-11381 Error in OIDC plugin in combination with RoleService
- GEOS-11394 OGC APIs cannot handle time extent when the source data type is java.sql.Date
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.25 SeriesAdditional information on GeoServer 2.25 series:
-
2:00
GeoServer Team: GeoServer 2.25.1 Release
sur Planet OSGeoGeoServer 2.25.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.25.1 is made in conjunction with GeoTools 31.1, and GeoWebCache 1.25.1.
Thanks to Jody Garnett (GeoCat) for making this release.
Security ConsiderationsThis release addresses security vulnerabilities and is considered an essential upgrade for production systems.
See project security policy for more information on how security vulnerabilities are managed.
Raster Attribute Table ExtensionA new extension is available that takes advantage of the GDAL Raster Attribute Table (RAT). This data structure provides a way to associate attribute information for individual pixel values within the raster. This provides a table that links each cell value in the raster to one or more attributes on the fly.
Thanks to Andrea Aime (GeoSolutions) for the development and NOAA for sponsoring this new capability. Please see the user guide Raster Attribute Table support for more information.
- GEOS-11376 Graduate Raster Attribute Table to extension
New Feature:
- GEOS-11267 CSW ISO extension multiple mappings should also have multiple queryable mappings
- GEOS-11376 Graduate Raster Attribute Table to extension
Improvement:
- GEOS-11306 Java 17 does not support GetFeature lazy JDBC count(*)
- GEOS-11311 Show a full stack trace in the JVM stack dump panel
- GEOS-11342 STAC should exclude items when the collection in path is wrong
- GEOS-11359 Update MapML viewer to release 0.13.2
-
GEOS-11369 Additional authentication options for cascaded WMS WMTS data stores - GEOS-11377 RAT module: allow to reload/recompute the RAT
- GEOS-11400 About Page Layout and display of build information
- GEOS-11401 Introduce environmental variables for Module Status page
Bug:
- GEOS-11202 CAS extension doesn’t use global “proxy base URL” setting for service ticket
- GEOS-11236 WFS 2.0.0/GetFeature - Shapefile - “We have had issues trying to flip axis”
- GEOS-11331 OAuth2 can throw a “ java.lang.RuntimeException: Never should reach this point”
- GEOS-11332 Renaming style with uppercase/downcase empty the sld file
- GEOS-11382 The interceptor “CiteComplianceHack” never gets invoked by the Dispatcher Servlet
- GEOS-11385 Demo Requests functionality does not honour ENV variable PROXY_BASE_URL
- GEOS-11392 ConcurrentModificationException while using proxy-base-ext
Task:
- GEOS-11360 Upgrade Apache POI from 4.1.1 to 5.2.5
- GEOS-11362 Upgrade Spring libs from 5.3.32 to 5.3.33
- GEOS-11374 Upgrade Spring version from 5.3.33 to 5.3.34
- GEOS-11375 GSIP 224 - Individual contributor clarification
- GEOS-11388 Update ImageIO-EXT to 1.4.10
- GEOS-11393 Upgrade commons-io from 2.12.0 to 2.16.1
- GEOS-11395 Upgrade guava from 32.0.0 to 33.2.0
- GEOS-11397 App-Schema Includes fix Integration Tests
- GEOS-11402 Upgrade PostgreSQL driver from 42.7.2 to 42.7.3
- GEOS-11403 Upgrade commons-text from 1.10.0 to 1.12.0
- GEOS-11404 Upgrade commons-codec from 1.15 to 1.17.0
For the complete list see 2.25.1 release notes.
Community UpdatesCommunity module development:
- GEOS-11040 Could not get a ServiceInfo for service Features thus could not check if the service is enabled
- GEOS-11330 OAuth2 kid verification should be optional
- GEOS-11339 Introducing the Features Autopopulate Community Plugin
- GEOS-11340 WFS Freemarker HTML Outputformat
- GEOS-11345 STAC Conformance URIs need to be updated to v1.0.0
- GEOS-11348 JMS cluster does not allow to publish style via REST “2 step” approach
- GEOS-11358 Feature-Autopopulate Update operation does not apply the Update Element filter
- GEOS-11381 Error in OIDC plugin in combination with RoleService
- GEOS-11394 OGC APIs cannot handle time extent when the source data type is java.sql.Date
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.25 SeriesAdditional information on GeoServer 2.25 series:
-
2:00
Camptocamp: Camptocamp Sponsors Two PostgreSQL Events in June: pgday.fr and pgday.ch
sur Planet OSGeoPièce jointe: [télécharger]
As a company committed to supporting our clients in deploying, optimizing, monitoring, securing, and utilizing PostgreSQL, we have decided to extend our support to the PostgreSQL community by sponsoring these conferences at the "supporters" level. -
2:00
Camptocamp: Camptocamp Sponsors Two PostgreSQL Events in June: pgday.fr and pgday.ch
sur Planet OSGeoPièce jointe: [télécharger]
As a company committed to supporting our clients in deploying, optimizing, monitoring, securing, and utilizing PostgreSQL, we have decided to extend our support to the PostgreSQL community by sponsoring these conferences at the "supporters" level. -
2:00
Camptocamp: Camptocamp Sponsors Two PostgreSQL Events in June: pgday.fr and pgday.ch
sur Planet OSGeoPièce jointe: [télécharger]
As a company committed to supporting our clients in deploying, optimizing, monitoring, securing, and utilizing PostgreSQL, we have decided to extend our support to the PostgreSQL community by sponsoring these conferences at the "supporters" level. -
2:00
Camptocamp: Camptocamp Sponsors Two PostgreSQL Events in June: pgday.fr and pgday.ch
sur Planet OSGeoPièce jointe: [télécharger]
As a company committed to supporting our clients in deploying, optimizing, monitoring, securing, and utilizing PostgreSQL, we have decided to extend our support to the PostgreSQL community by sponsoring these conferences at the "supporters" level. -
14:00
Fernando Quadro: Geoprocessamento na Saúde
sur Planet OSGeoA localização de eventos de saúde no espaço geográfico com base em mapas não é recente. Em 1854, o médico John Snow investigou no bairro de Soho, em Londres, um surto de cólera. Ele mapeou com base nos croquis dos quarteirões, as casas atingidas e relacionou com as pessoas que beberam água de uma fonte na Broad Street.
Logo, percebeu que aquele surto em particular ocorrera em torno de uma bomba de água compartilhada que a maioria dos habitantes usava para coletar água para beber e lavar. Essa foi a primeira vez que um mapa foi usado para melhor compreensão de uma doença e estabelecer medidas de controle.
Várias são as possibilidades do uso do geoprocessamento na saúde:
Serviços de saúde,
Saúde ambiental,
Epidemiologia de doenças crônicas não transmissíveis,
Epidemiologia de doenças transmissíveis,
Identificação de áreas de risco,
Entre outros…
A melhora e o aumento na disponibilidade de bases de dados e dos SIG trouxeram ganhos importantíssimos para aplicação do geoprocessamento na área da saúde. Podemos citar os Sistemas de Informação em Saúde que abarcam dados sobre nascimentos, óbitos e doenças de notificação compulsória, entre eles:
Sistema de Informação de Mortalidade (SIM),
Sistema de Nascidos Vivos (SINASC) ,
Sistema de Informação de Agravos de Notificação (SINAN).
As possibilidades de técnicas disponíveis em SIGs robustos, permitem análises que são úteis na identificação de áreas de risco para determinados agravos, bem como na análise destes que busquem relação com variáveis ambientais extraídas de informações sobre uso e ocupação do solo ou de variáveis climáticas, extraídas de produtos de sensoriamento remoto e de métodos de reanálise para o monitoramento climático; ou na combinação de variáveis, ambientais, climáticas socioeconômicas a partir do uso de modelos estatísticos espaciais que permite tratar a heterogeneidade espacial e espaço temporal, levando em conta tanto a vizinhança (a dependência espacial) como a existência de estruturas hierárquicas de dados em questão.
Em resumo, a aplicação do geoprocessamento e das técnicas de análise espacial associadas ao acesso livre e gratuito de SIGs e de inúmeras fontes de dados, vem abrindo oportunidades de uso na área de saúde pública, não somente para pesquisadores em seus estudos, mas especialmente para os profissionais que atuam na área da saúde.
Gostou desse post? Conte nos comentários
-
11:00
Mappery: Antoine de Saint Exupery by C215
sur Planet OSGeoFrench author Antoine de Saint-Exupéry, known for “The Little Prince,” soars over his homeland on a vintage map of France. Where will imagination take you today?
C215, Christian Guemy Website : c215.fr
MapsintheWild Antoine de Saint Exupery by C215
-
2:00
Camptocamp: NexSIS - the Go Live!
sur Planet OSGeoPièce jointe: [télécharger]
At the start of the NexSIS project in 2019, the Digital Agency for Civil Security (ANSC) chose to entrust the development of the cartographic features of its applications to the teams at Camptocamp. -
2:00
Camptocamp: NexSIS - the Go Live!
sur Planet OSGeoPièce jointe: [télécharger]
At the start of the NexSIS project in 2019, the Digital Agency for Civil Security (ANSC) chose to entrust the development of the cartographic features of its applications to the teams at Camptocamp. -
14:00
Fernando Quadro: Curso Combo PostgreSQL, PostGIS e GeoServer
sur Planet OSGeoNeste mês de maio a Geocursos está com inscrições abertas para seu Curso Combo com PostgreSQL, PostGIS e GeoServer, uma formação completa, saindo do zero em banco de dados (PostgreSQL/PostGIS), passando pela linguagem SQL, análises espaciais no PostGIS até a publicação completa de seus mapas na internet com o GeoServer.
O mercado de trabalho está cada vez mais competitivo, e o conhecimento em banco de dados (PostgreSQL/PostGIS) e servidor de mapas (GeoServer) tem sido cada vez mais um pré-requisito para qualquer profissional na área do Geoprocessamento.
Pensando nisso, a Geocursos está disponibilizando um cupom de R$ 270 reais de desconto pra você, basta ir no nosso WhatsApp e dizer “QUERO DESCONTO“.
Você ficou interessado?
-
11:00
Mappery: Africa Lion by C215
sur Planet OSGeoFor our second episode, I chose this powerful image of a lion standing proudly over a map of Africa. It evokes the continent’s rich wildlife and the lion’s reign as the apex predator in the savannas and grasslands.
C215, Christian Guemy’s English website c215.fr
MapsintheWild Africa Lion by C215
-
7:19
Direction de la Sûreté SNCF x accompagnement QGIS et QGIS Server
sur OslandiaLa Direction de la Sûreté, rattachée à la Direction Générale, est transverse au groupe SNCF et opère des missions de sécurisation des biens et des personnes. En appui de ses missions, la Direction de la Sûreté s’est dotée d’un système d’hypervision qui comporte une visualisation cartographique des équipements, personnels et évènements.
Afin de garantir le bon fonctionnement du système d’hypervision, la Direction a choisi de se doter d’outils et serveurs cartographiques indépendants de l’hyperviseur lui-même, et pour ce faire a choisi notre accompagnement autour de QGIS Server.
Oslandia propose en effet une maintenance forfaitaire qui garantit à la SNCF un fonctionnement inaltéré de son hyperviseur.
Contributeur essentiel de la solution open source QGIS, Oslandia dispose de la plus grande équipe française de développeurs experts QGIS et propose une offre de support unique en France [https:]] !
-
17:07
Free and Open Source GIS Ramblings: New Trajectools 2.1 and MovingPandas 0.18 releases
sur Planet OSGeoToday marks the 2.1 release of Trajectools for QGIS. This release adds multiple new algorithms and improvements. Since some improvements involve upstream MovingPandas functionality, I recommend to also update MovingPandas while you’re at it.
If you have installed QGIS and MovingPandas via conda / mamba, you can simply:
conda activate qgis mamba install movingpandas=0.18
Afterwards, you can check that the library was correctly installed using:
import movingpandas as mpd
mpd.show_versions()Trajectools 2.1
The new Trajectools algorithms are:
- Trajectory overlay — Intersect trajectories with polygon layer
- Privacy — Home work attack (requires scikit-mobility)
- This algorithm determines how easy it is to identify an individual in a dataset. In a home and work attack the adversary knows the coordinates of the two locations most frequently visited by an individual.
- GTFS — Extract segments (requires gtfs_functions)
- GTFS — Extract shapes (requires gtfs_functions)
- These algorithms extract public transport routes (GTFS shapes) and route segments between stops (GTFS segments) from GTFS ZIP files using gtfs_functions.Feed.shapes and .segments, respectively.
Furthermore, we have fixed issue with previously ignored minimum trajectory length settings.
Scikit-mobility and gtfs_functions are optional dependencies. You do not need to install them, if you do not want to use the corresponding algorithms. In any case, they can be installed using mamba and pip:
MovingPandas 0.18mamba install scikit-mobility pip install gtfs_functions
This release adds multiple new features, including
- Method chaining support for add_speed(), add_direction(), and other functions
- New TrajectoryCollection.get_trajectories(obj_id) function
- New trajectory splitter based on heading angle
- New TrajectoryCollection.intersection(feature) function
- New plotting function hvplot_pts()
- Faster TrajectoryCollection operations through multi-threading
- Added moving object weights support to trajectory aggregator
-
11:00
Mappery: Aime Cesaire by c215
sur Planet OSGeoThis week, we start a series with the artist Christian Guemy. C215, Christian Guemy’s artistic pseudonym, is a French street artist renowned for his unique blend of historical figures and vintage map boards. By transforming these weathered maps into canvases, C215 breathes new life into forgotten objects while leaving a powerful commentary on the passage of time and the enduring legacy of influential figures.
A Fusion of Past and Present
C215’s signature style involves meticulously stencilling portraits of iconic individuals—activists, scientists, artists, and more—directly onto the aged surfaces of map boards. These maps, often discarded or forgotten, become powerful symbols of the past. By juxtaposing these historical figures with the faded geography, C215 compels viewers to contemplate the connection between the past, present, and future.
A Street Art Pioneer
C215 is considered a pioneer of the French street art movement. He emerged in the early 2000s, bringing his art form to the streets of Paris and beyond. His work can be found adorning walls, buildings, and even abandoned spaces throughout Europe and across the globe.
More Than Just Portraits
While portraits are a defining element of C215’s art, his work delves into social commentary. He has used his stencils to address issues of war, poverty, and environmental degradation. The weathered maps themselves become a metaphor for the fragility of our world and the need to learn from the past.
C215’s art transcends the boundaries of traditional street art. By using vintage map boards as his canvas, he creates a powerful dialogue between past and present, reminding us of the enduring impact of history’s figures and the importance of learning from their legacies.
For further exploration, you can search online for:
- Images of C215’s street art
- Interviews with C215
C215 website is c215.fr (link to the English version).
MapsintheWild Aime Cesaire by c215
-
11:00
Mappery: Planet Gummi
sur Planet OSGeo -
11:00
Mappery: Enter through the Mappy Doors
sur Planet OSGeoReinder sent this pic of the entrance to the Dutch National Archive, he said “It’s hard to see – but these glass doors in the Dutch National Archives in The Hague do contain a cartographic image of the Netherlands”.
Instead of through the looking glass, we have through the cartograph ?
MapsintheWild Enter through the Mappy Doors
-
12:00
Mappery: OS Picnic Blanket
sur Planet OSGeoWhen your Canadian friends have just arrived in London and have settled in. I must admit I am still a bit jealous of their blanket.
MapsintheWild OS Picnic Blanket
-
23:41
Martin Davis: JTS Topological Relationships - the Next Generation
sur Planet OSGeoThe most fundamental and widely-used operations in the JTS Topology Suite are the ones that evaluate topological relationships between geometries. JTS implements the Dimensionally-Extended 9 Intersection Model (DE-9IM), as defined in the OGC Simple Features specification, in the RelateOp API.
DE-9IM matrix for overlapping polygons
The RelateOp algorithm was the very first one implemented during the initial JTS development, over 20 years ago. At that time it was an appealing idea to implement a general-purpose topology framework (the GeometryGraph package), and use it to support topological predicates, overlay, and buffering. However, some disadvantages of this approach have become evident over time:
- the need to create a topological graph structure limits the ability to improve performance. This has led to the implementation of PreparedGeometry - but that adds further complexity to the codebase, and supports only a limited set of predicates.
- a large number of code dependencies make it hard to fix problems and improve semantics
- constructing a full topology graph increases exposure to geometric robustness errors
- GeometryCollections are not supported (initially because the OGC did not define the semantics for this, and now because adding this capability is difficult)
The importance of this functionality is especially significant since the same algorithm is implemented in GEOS. That codebase is used to evaluate spatial queries in popular spatial APIs such as Shapely and R-sf, and numerous systems such as PostGIS, DuckDB, SpatialLite, QGIS, and GDAL (to name just a few). It would not be surprising to learn that the RelateOp algorithm is executed billions of times per day across the world's CPUs.During the subsequent years of working on JTS I realized that there was a better way to evaluate topological relationships. It would required a ground-up rewrite, but would avoid the shortcomings of RelateOp and provide better performance and a more tractable codebase. Thanks to my employer Crunchy Data I have finally been able to make this idea a reality. Soon JTS will provide a new algorithm for topological relationships called RelateNG.
Key Features of RelateNGThe RelateNG algorithm incorporates a broad spectrum of improvements over RelateOp in the areas of functionality, robustness, and performance. It provides the following features:
- Efficient short-circuited evaluation of topological predicates (including matching custom DE-9IM matrix patterns)
- Optimized repeated evaluation of predicates against a single geometry via cached spatial indexes (AKA "prepared mode")
- Robust computation (only point-local geometry topology is computed, so invalid topology does not cause failures)
- GeometryCollection inputs containing mixed types and overlapping polygons are supported, using union semantics.
- Zero-length LineStrings are treated as being topologically identical to Points.
- Support for BoundaryNodeRules.
The main entry point is the RelateNG class. It supports evaluating topological relationships in three different ways:
- Evaluating a standard OGC named boolean binary predicate, specified via a TopologyPredicate instance. Standard predicates are obtained from the RelatePredicate factory functions intersects, contains, overlaps, etc.
- Testing an arbitrary DE-9IM relationship by matching an intersection matrix pattern (e.g. "T**FF*FF*", which is the pattern for a relation called Contains Properly).
- Computing the full value of a DE-9IM IntersectionMatrix.
Here is an example of matching an intersection matrix pattern, in stateless mode:boolean isMatched = RelateNG.relate(geomA, geomB, "T**FF*FF*");
Here is an example of setting up a geometry in prepared mode, and evaluating a named predicate on it:RelateNG rng = RelateNG.prepare(geomA);
Rolling It Out
for (Geometry geomB : geomSet) {
boolean predValue = rng.evaluate(geomB, RelatePredicate.intersects());
}It's exciting to launch a major improvement on such a core piece of spatial functionality. The Crunchy spatial team will get busy on porting this algorithm to GEOS. From there it should get extensive usage in downstream projects. We're looking forward to hearing feedback from our own PostGIS clients as well as other users. We're always happy to be able to reduce query times and equally importantly, carbon footprints.
In further blog posts I'll describe the RelateNG algorithm design and provide some examples of performance metrics.
Future IdeasThe RelateNG implementation provides an excellent foundation to build out some interesting extensions to the fundamental DE-9IM concept.
Extended PatternsThe current DE-9IM pattern language is quite limited. In fact, it's not even powerful enough to express the standard named predicates. It could be improved by adding features like:
- disjunctive combinations of patterns. For example, touches is defined by "FT******* | F**T***** | F***T****"
- dimension guards to specify which dimensions a pattern applies to. For example, overlaps is defined by "[0,2] T*T***T** | [1] 1*T***T**"
- while we're at it, might as well support dotted notation and spaces for readability; e.g. "FT*.***.***"
A challenge with implementing algorithms over a wide variety of spatial types and use cases is how to provide general-purpose code which matches (or exceeds) the efficiency of more targeted implementations. RelateNG analyzes the input geometries and the predicate under evaluation to tune strategies to reduce the amount of work needed to evaluate the DE-9IM. It may be that profiling specific use cases reveals further hotspots in the code which can be improved by additional optimizations.
Curve SupportGEOS has recently added support for representing geometries with curves. The RelateNG design is modular enough that it should be possible to extend it to allow evaluating relationships for geometries with curves.
-
14:00
Fernando Quadro: O Poder da Consulta Geoespacial
sur Planet OSGeoA consulta geoespacial, ou SQL espacial, está revolucionando a maneira como conduzimos operações de Sistemas de Informações Geográficas (GIS). Ao aproveitar funções e recursos espaciais em bancos de dados SQL, podemos analisar e obter insights valiosos de dados espaciais de maneira transparente.
Uma das principais vantagens do SQL espacial é a sua capacidade de encontrar relações entre geometrias. Seja para determinar proximidade, sobreposição ou contenção, o SQL espacial nos permite desbloquear conexões significativas em conjuntos de dados espaciais. Esta funcionalidade é crucial para diversas aplicações, desde planejamento urbano até monitoramento ambiental e muito mais.
Além disso, a integração de SQL espacial em processos de back-end enriquece nosso código com poderosos recursos analíticos. Ao aplicar a análise espacial diretamente em nossas consultas de banco de dados, simplificamos os fluxos de trabalho e aumentamos a eficiência da tomada de decisões baseada em dados.
No mundo atual orientado por dados, dominar o SQL espacial abre portas para um mundo de possibilidades em GIS e muito mais. Você está pronto para aproveitar todo o potencial da análise de dados espaciais?
Gostou desse post? Conte nos comentários
-
11:00
Mappery: Levis go Mappy
sur Planet OSGeoMarc-Tobias spotted these designery jeans on his travels in Japan. They are sort of must-have for map loving jeans wearers, you can buy them here
MapsintheWild Levis go Mappy
-
11:00
Mappery: Missions of Mexico
sur Planet OSGeoWalter Schwartz sentg us this, he said “Northwestern Mexico, where Baja, Sonora, and Sinaloa provinces are found, has been home to a *lot* of missions since at least 1591. I counted around 100 established in the 1600s and 1700s alone. This picto-map is in the pictured church, La Mision de San Ignacio in the town of San Ignacio, Baja California Sur, Mexico.
MapsintheWild Missions of Mexico
-
20:04
GeoSolutions: GeoSolutions Presenting at UN Maps Conference 2024
sur Planet OSGeoYou must be logged into the site to view this content.
-
15:21
Oslandia: (Fr) Direction de la Sûreté SNCF x accompagnement QGIS et QGIS Server
sur Planet OSGeoSorry, this entry is only available in French.
-
14:00
Fernando Quadro: Geoprocessamento e IA no combate à dengue
sur Planet OSGeoUm software capaz de identificar, a partir de imagens aéreas, caixas d’água sobre telhados ou lajes e piscinas em áreas abertas foi desenvolvido por pesquisadores brasileiros com o auxílio de ferramentas de Inteligência Artificial. A proposta é usar esse tipo de imagem como indicador de zonas especialmente vulneráveis a infestações do mosquito Aedes aegypti, transmissor de doenças como dengue, zika e chikungunya. Além disso, a estratégia desponta como potencial alternativa para um mapeamento socioeconômico dinâmico das cidades – um ganho para diferentes políticas públicas.
A pesquisa, apoiada pela Fapesp, foi conduzida por profissionais da USP, da Universidade Federal de Minas Gerais (UFMG) e da Superintendência de Controle de Endemias (Sucen) da Secretaria de Estado da Saúde de São Paulo.
Entre outras coisas, o grupo almeja incorporar outros elementos para serem detectados nas imagens e quantificar as taxas reais de infestação do Aedes aegypti em uma dada região para refinar e validar o modelo. “Nós esperamos criar um fluxograma que possa ser aplicado em diferentes cidades para encontrar áreas de risco sem a necessidade de visitas domiciliares, prática que gasta muito tempo e dinheiro público”.
Apesar de as fotos aéreas de Campinas terem sido obtidas com um drone, espera-se que, no futuro, a estratégia testada nessa pesquisa recorra apenas às imagens de satélite.
No estudo em Belo Horizonte, as imagens de satélite foram empregadas com sucesso – elas precisam de alta resolução para que o computador consiga identificar os padrões.
Embora esse tipo de metodologia pareça custoso, ele gera uma potencial economia ao dispensar a necessidade de visitas presenciais para mapear, casa por casa, áreas suscetíveis à dengue. Em vez disso, os agentes de saúde aproveitariam as informações obtidas remotamente – e processadas com a Inteligência Artificial – para se dirigir aos locais prioritários com mais assertividade.
-
11:00
Mappery: Aerial Ping Pong
sur Planet OSGeoDerick Rethams spotted this beer mat in his local pub in Maida Vale. For those of you who are interested
Southern Hemisphere IPA Northern Monk Collaboration. Motueka and Wai-Iti hops bring notes of lime, stone fruits and citrus, alongside a lofty dry hopping of Eclipse and Nectaron for a vibrant mix of orange, tropical fruit and a touch of pine to finish.
[https:]MapsintheWild Aerial Ping Pong
-
11:00
Mappery: Stanfords Discovered
sur Planet OSGeoMy friend Elizabeth just discovered Stanfords store in Covent Garden, she couldn’t resist sending me a pic but asking me “do you know about this place?” really?!?
This isn’t the first time we have featured Stanfords here but it really is the place of pilgrimage for map lovers visiting London.
MapsintheWild Stanfords Discovered
-
6:48
OPENGIS.ch: QGIS DXF Export enhancements
sur Planet OSGeoAt OPENGIS.CH, we’ve been working lately on improving the DXF Export QGIS functionality for the upcoming release 3.38. In the meantime, we’ve also added nice UX enhancements for making it easier and much more powerful to use!
Let’s see a short review.
DXF Export app dialog and processing algorithm harmonizedYou can use either the app dialog or the processing algorithm, both of them offer you equivalent functionality. They are now completely harmonized!
Export settings can now be exported to an XML fileYou can now have multiple settings per project available in XML, making it possible to reuse them in your workflows or share them with colleagues.
Load DXF settings from XML. All settings are now well remembered between dialog sessionsQGIS users told us there were some dialog options that were not remembered between QGIS sessions and had to be reconfigured each time. That’s no longer the case, making it easier to reuse previous choices.
“Output layer attribute” column is now always visible in the DXF Export layer treeWe’ve made sure that you won’t miss it anymore.
Possibility to export only the current map selection
Filter features to be exported via layer selection, and even combine this filter with the existing map extent one.
Empty layers are no longer exported to DXF
When applying spatial filters like feature selection and map extent, you might end up with empty layers to be exported. Well, those won’t be exported anymore, producing cleaner DXF output files for you.
Possibility to override the export name of individual layersIt’s often the case where your layer names are not clean and tidy to be displayed. From now on, you can easily specify how your output DXF layers should be named, without altering your original project layers.
Override output layer names for DXF export.We’ve also fixed some minor UX bugs and annoyances that were present when exporting layers to DXF format, so that we can enjoy using it. Happy DXF exporting!
We would like to thank the Swiss QGIS user group for giving us the possibility to improve the important DXF part of QGIS
-
2:00
Paul Ramsey: Cancer 9
sur Planet OSGeoScanxiety.
This is where I am right now. Scanxiety.
Each stage of the cancer experience is marked by a particular set of tests, of scans.
I actually managed to get through my first set of scans surprisingly calmly. After getting diagnosed (“there’s some cancer in you”), they send you for “staging”, which is an MRI and CT scan.
These scans both involve large, Star Trek seeming machines, which make amazing noises, and in the case of the CT machine I was put through was decorated with colorful LED lights by the manufacturer (because it didn’t look whizzy enough to start with?).
I kind of internalized the initial “broad-brush” staging my GI gave me, which was that it was a tumor caught early so I would be early stage, so I didn’t worry. And it turned out, that was a good thing, since the scans didn’t contradict that story, and I didn’t worry.
The CT scan, though, did turn up a spot on my hip bone. “Oh, that might be a bone cancer, but it’s probably not.” Might be a bone cancer?!?!?
How do you figure out if you have “a bone cancer, but it’s probably not”? Another cool scan, a nuclear scan, involving being injected with radioactive dye (frankly, the coolest scan I have had so far) and run through another futuristic machine.
This time, I really sweated out the week between the scan being done and the radiology coming back. And… not bone cancer, as predicted. But a really tense week.
And now I’m in another of those periods. The result of my major surgery is twofold: the piece of me that hosted my original tumor is now no longer inside of me; and, the lymph nodes surrounding that piece are also outside of me.
They are both in the hands of a pathologist, who is going to tell me if there is cancer in the lymph nodes, and thus if I need even more super unpleasant attention from the medical system in the form of several courses of chemotherapy.
The potential long term side effects of the chemotherapy drugs used for colorectal cancers include permanent “peripheral neuropathy”, AKA numbness in the fingers and toes. Which could put a real crimp in my climbing and piano hobbies.
So as we get closer to getting that report, I am experiencing more and more scanxiety.
If I escape chemo, I will instead join the cohort of “no evidence of disease” (NED) patients. Not quite cured, but on a regular diet of blood work, scans, and colonoscopy, each one of which will involve another trip to scanxiety town. Because “it has come back” starts as a pretty decent probability, and takes several years to diminish to something safely unlikely.
Yet another way that cancer is a psychological experience as well as a physical one.
Talk to you again soon, inshalla.
-
11:00
Mappery: Ortelius and his Globe
sur Planet OSGeoReinder shared this pic of Ortelius and his globe by Rubens from his visit to the Plantin-Moretus museum in Antwerp, Belgium.
Nice detail
MapsintheWild Ortelius and his Globe
-
12:00
Mappery: One World cafe, and more
sur Planet OSGeoWalking around Parson Green, I discovered this cafe and wine bar, which also sells furniture and cookware. It was too late on a Sunday evening to try it. And the extensive use of the world maps without missing Madagascar and New Zealand is worth a post.
MapsintheWild One World cafe, and more
-
3:32
Alexandre Neto: Create a PyQGIS Development Environment Using Conda and VScode
sur Planet OSGeoAs a self-taught PyQGIS developer, one of my main hurdles has always been to prepare the development environment for PyQGIS. An environment that allow me to run PyQGIS scripts, helps me code faster by providing PyQGIS highlighting and autocompletion, enables me to debug my plugins and scripts as they run, etc… I have been a user (and even a… “cof cof”… maintainer) of the QGIS packages for conda provided by the conda-forge community. -
18:46
GeoSolutions: GeoSolutions Presenting at Geospatial World Forum 2024
sur Planet OSGeoYou must be logged into the site to view this content.
-
12:00
Mappery: David Hockney Immersive experience
sur Planet OSGeoThese shots were taken at Lightroom, London’s David Hockney immersive experience.
The show comes back on 17 June 2024.
MapsintheWild David Hockney Immersive experience
-
7:07
[1’Tech by Oslandia] TCO
sur OslandiaLe TCO = Total Cost of Ownership = Coût Total de Possession
Dans l’analyse des investissements logiciels, le TCO est un élément clé à prendre en compte. Il s’agit en effet de considérer tous les coûts rattachés à la possession d’un logiciel, qu’ils soient directs ou indirects. Cela va bien au delà du simple prix d’achat en licences du produit ou du service.
Si l’industrie s’est particulièrement emparée du concept de TCO pour réaliser ses choix stratégiques, il est indispensable de l’évaluer également dans le cadre de projets informatiques. On comptabilise dans le TCO l’achat initial du logiciel mais aussi la maintenance des composants, les coûts d’utilisation et de gestion, d’évolution, la formation, et également les coûts de sortie, souvent négligés !
On constate qu’une infrastructure informatique basée sur des logiciels OpenSource se distingue généralement par un TCO plus réduit qu’avec ses équivalents propriétaires. Ou plutôt que pour un TCO équivalent, les services rendus par une infrastructure OpenSource sont de meilleure qualité, car on y inclut les services à haute valeur ajoutée comme l’adaptation fine aux cas d’utilisation spécifiques, la formation ou la garantie de maintenance.
-
6:41
Transitec, observatoire de la mobilité
sur OslandiaTransitec, bureau d’étude indépendant spécialisé dans les problématiques de mobilité depuis 1954, a souhaité mettre en place un outil interne, baptisé Primo, pour construire automatiquement des cartographies types sur des territoires correspondant à des regroupements de communes, en France Métropolitaine. Cet outil couvre les thématiques du transport et des déplacements. Il est basé sur une base de données PostgreSQL et sur un plugin QGIS, connecté à la base.
L’utilisateur choisit un territoire, par exemple un ensemble de départements, d’Établissements Publics de Coopération Intercommunale (EPCI) ou de communes.
Le plugin construit alors automatiquement des indicateurs et les cartographies. Ils portent sur les thématiques suivantes :
- la population ;
- l’emploi ;
- le logement ;
- les mobilités professionnelles ;
- les mobilités scolaires ;
- le réseau routier et les équipements cyclables.
Primo est utilisé par Transitec France, par une dizaine de salariés. Il permet de gagner du temps sur la production des cartes nécessaires pour alimenter les diagnostics territoriaux, utilisés dans des travaux de planification urbaine, dont la nature varie peu d’un projet à l’autre.
Il est basé sur des données ouvertes, librement accessibles sur Internet :
- données de périmètres administratifs ;
- données de population carroyées d’origine fiscale, mises en forme par l’Insee ;
- données du recensement de la population de l’Insee ;
- données du répertoire Sirene des entreprises et établissements ;
- données OpenStreetMap (OSM).
Un ensemble de scripts Python permet l’import automatisé de ces données mises en forme dans la base de données PostgreSQL – PostGIS.
Le développement a commencé à l’été 2023, pour une utilisation effective en février 2024.
-
7:48
Oslandia sur le Sustainable High City Tech 2024 // SusHi-Tech à Tokyo !
sur OslandiaLa candidature d’Oslandia pour exposer sur l’espace Île-de-France du Pavillon French Tech sur le salon Sustainable High City Tech 2024 (SusHi-Tech) à Tokyo les 15 et 16 mai 2024 a été retenue !
Oslandia fait partie des 5 entreprises retenues pour représenter la France sur le SusHi-Tech, un événement international qui pour objectif de créer de « nouvelles rencontres » avec des écosystèmes nationaux et internationaux afin de résoudre les problèmes urbains mondiaux.
Sébastien Guimmara sera au Japon sur cet évènement de grande ampleur qui accueillera plus de 40 000 personnes.
C’est une formidable opportunité de mettre en lumière nos expertises et expériences sur les technologies BIM/SIG et de présenter Piero, l’application Web 3D BIM/SIG open source
Photos à venir … restez connectés
Programme porté par SusHi Tech Tokyo 2024 Global Startup Program Official Account et Business France.
-
7:23
Contributing, not only code : Oslandia @ Journées QGIS-Fr 2024
sur OslandiaÉditeur open source QGIS depuis 2011, Oslandia contribue aussi activement à la communauté qui l’entoure !
Cette année encore, Oslandia était présent aux Rencontres utilisateurs QGIS francophone 2024 qui avaient lieu à Grenoble fin mars, avec notamment la participation d’une belle partie de l’équipe.Certains membres de l’équipe comme Loïc Bartoletti ou Sylvain Beorchia étaient sur le pont en amont de ces deux jours pour l’organisation. Loïc a notamment organisé la journée de la veille avec les contributeurs ; de son côté Sylvain produit l’ensemble des visuels (affiches, logos, etc.).
Sur les 2 jours, nous étions 10 membres de l’équipe présents tant à animer des ateliers en mode solo, en duo, avec nos clients et nos partenaires, qu’à participer au programme de conférences mais aussi présents pour faciliter des échanges entre les utilisateurs, les mettre en relation, animer la communauté !
Ce que nous avons envie de partager à travers cette petite brève : l’engagement open source d’Oslandia ne se mesure pas seulement en nombre de lignes de code mais aussi en temps, en idées et en participation à des événements comme les Journées QGIS-Fr !
Nous serons bien sûr présents l’année prochaine et sur de nombreuses autres événements OSGeoRestez connectés, inscrivez-vous à notre newsletter ! [Voir la Newsletter Avril 2024] N’oubliez pas que vous aussi pouvez contribuer, l’OSGeo-FR cherche toujours des bonnes volontés !
-
7:00
[Equipe Oslandia] Quy Thy, ingénieur SIG
sur OslandiaChaque mois, nous avons le plaisir de vous présenter un membre de l’équipe, aujourd’hui c’est Quy Thy qui a répondu à nos questions
Ingénieur de l’ENSG -Ecole Nationale des Sciences Géographiques, une école qui forme les géomaticiens, Quy Thy poursuit son cursus avec une thèse au laboratoire LASTIG de l’IGN sur la détection du vandalisme cartographique. Elle a pour objectif de réaliser une étude des jeux de données collaboratives sur OSM et d’identifier des potentielles erreurs volontaires, notamment grâce au machine learning, une technologie encore peu utilisée dans le domaine cartographique.
[Lire son article de vulgarisation sur Geotribu]
Après sa thèse, elle effectue 1 an de post-doc dans le laboratoire IFSTTAR – Institut français des sciences et technologies des transports, de l’aménagement et des réseaux où elle développe un plugin QGIS pour aider au déblaiement des déchets suite à un ouragan à Saint-Martin et aux Antilles.
« J’ai connu Oslandia pendant ma thèse sur le carto-vandalisme, j’étudiais les données mais également les contributeurs OSM, et Oslandia avait publié des travaux sur la classification automatique de ces derniers. J’ai gardé l’entreprise dans ma tête et comme je n’avais pas envie de continuer dans le monde de la recherche, j’ai postulé ! »
Quy Thy est ingénieur SIG chez Oslandia depuis 2021
Ses projets emblématiquesQuy Thy a contribué à la mise en place de la Géoplateforme de l’IGN, une infrastructure publique qui permet aux utilisateurs de s’échanger des données, les partager, les héberger et d’accéder aux services de l’IGN comme « Remonter le temps » jusqu’ici accessible sur Géoportail. L’objectif est de migrer ces services sur la Géoplateforme. « J’ai développé des script permettant de vérifier les données qui entrent et de les traiter pour les mettre en base de données »
Quy Thy a également travaillé sur le Projet STC – Suivi des Trains Commerciaux pour la SNCF dont l’objectif est de détecter les déformations sur les rails, à partir de capteurs placés sur les trains.
Ses technologies de prédilection
« Les capteurs remontent beaucoup de données, nous avons intégré un programme développé en Python avec les librairies Pandas et Numpy qui permettent d’identifier les anomalies et de préconiser des actions de maintenance « .Python, SQL
Sa philosophiePlus que le côté technique, j’aime me dire que les projets réalisés servent un objectif utile et pertinent pour l’humain. Ce que je fais répond à un besoin, je me sens utile.
Oslandia en 1 motOuverture au sens open source mais aussi ouverture à d’autres valeurs notamment sur le fonctionnement de l’entreprise !
-
11:00
Mappery: Cookie Cutter (literally)
sur Planet OSGeoErik spotted this in a thrift shop.
“Best thrift store find of the year: #MapsintheWild cookie cutter (or: clip irl function). I’ll accept the #mapswithoutnewzealand issue. Wouldn’t be more than a crumb anyway!”
MapsintheWild Cookie Cutter (literally)
-
11:00
Mappery: Arab Islands in Reflection
sur Planet OSGeoStan Carey shared this mirror map.
“Mirrors in the shape of the Aran Islands at Connemara Airport, alongside Tim Robinson’s map for lo-fi comparison (below)”
MapsintheWild Arab Islands in Reflection
-
2:00
Paul Ramsey: Cancer 4
sur Planet OSGeoCancer is a mind fuck.
I mean, it’s a body fuck too, obviously, but the early experience for me has been of weird gyrations of mental health and mood with each passing day.
The first thing I did was the first thing everyone does – look up all the different probabilities of five year survival, because that’s what is at the top of the Google search.
With a stage two diagnosis (hard to know if that’s actually what I have, though) Google says I have a 10% chance of dying over the next five years.
That feels like… a lot? A scary amount.
But wait, here’s an fact – my odds of dying just in the ordinary course of affairs over the next five years are about 4.5%.
Does that stop me from being 1000% more terrified, on a daily basis, since receiving my diagnosis? No it does not.
A good deal of that terror, I think, is that cancer promises a patient a long and painful interaction with a medical system that has only destructive rear-guard actions at hand to stop it. Cut things out; kill it with poison; zap it with radiation. These procedures all leave a body worse for wear, and if they don’t work… they bring you back and do some more of them.
My great grandfather died while rolling a ball on the lawn bowling green in his late 80s. Massive stroke, he died doing something he loved and was dead before he hit the ground. Floyd Ramsey hit the mortality jackpot.
Naturally, I would also like to hit that jackpot. Cancer says, “not so fast, you might have a different life experience ahead of you”.
It would be a little too pat to say that getting a diagnosis starts you off on the stages of grief, because that implies some orderly process to the mental evolution. I am not progressing linearly through the stages of grief, so much as visiting them randomly, over and over, in an emotional shuffle mode.
Some days are denial days. Some days are acceptance days. Some days are bargaining days.
I told my councillor last week that “I only feel OK to the extent that I am dissociative”, and that seems to still hold true. I am at my most together when I have fully distracted myself from the diagnosis. I’m not sure if this counts as “taking one day at a time”. Probably not.
Talk to you again soon, on the other side, inshalla.
-
11:00
Mappery: Floor Puzzle Map
sur Planet OSGeoErik shared this great puzzle map.
“100 years of #RotaryInternational in the Netherlands celebrated with a biking marathon for charity through the country. Today”
MapsintheWild Floor Puzzle Map
-
11:00
Mappery: Peaks Island Cooler
sur Planet OSGeoDoug shared this “Map of Peaks Island keeping my hands warm and my beer cool.”
MapsintheWild Peaks Island Cooler
-
7:00
[Témoignage client] Émilie Bigorne, géomaticienne EPTB Loire
sur OslandiaÉmilie Bigorne est géomaticienne au sein de l’EPTB Loire, syndicat mixte qui couvre le bassin de la Loire et ses affluents.
L’EPTB Loire emploie environ 70 agents et fédère 50 collectivités adhérentes (Région, Départements et EPCI). L’organisme a en charge plusieurs missions : la gestion des ouvrages de protection contre les inondations, la gestion des digues des collectivités territoriales, la mise en oeuvre de programmes de prévention des inondations et le suivi et la gestion de la ressource en eau.
Administratrice de la base de données PostgreSQL / PostGIS, Émilie Bigorne garantit l’intégrité des données et fournit des outils aux agents dans le cadre de leurs missions.» J’ai travaillé avec Oslandia sur deux projets. En 2019, je me suis fait accompagner avec un audit de la base de donnée mise en place. Oslandia a pu me fournir des recommandations pour l’amélioration de la fluidité, des accès et de la configuration générale. Ils m’ont également donné des conseils dans le cadre du changement de version de PostgreSQL.
En 2023, nous avons collaboré pour mettre en place l’outil « QGIS Deployment Toolbet« . Au vu de l’augmentation des effectifs, je n’arrivais plus à maintenir QGIS sur les postes de travail. La mise en place de cet outil me permet aujourd’hui l’installation automatisée de QGIS ainsi que l’installation de raccourcis personnalisés en fonction du périmètre d’action géographique et des missions de chaque agent. Le paramétrage se fait automatiquement, y compris sur les postes de travail des agents qui ne sont pas présents sur le site d’Orléans.
QGIS Deployment Toolbet simplifie mon quotidien et celui des utilisateurs, c’est un gain de temps et d’énergie. Nous avons par ailleurs une meilleure utilisation de la base de données avec des outils plus maintenables.
Je ne passe plus mon temps à installer QGIS sur les postes des utilisateurs !
La collaboration avec Oslandia s’est vraiment très bien passée. A chaque étape, les personnes en face de moi étaient disponibles. J’ai appris énormément de choses sur QGIS et sa configuration, des petites choses annexes à ce qui était demandé initialement.
Les équipes ont su m’écouter pour répondre à mes besoins et être forces de proposition. Oslandia consacre du temps à la communauté libre, je trouve que c’est hyper intéressant, on sent un vrai intérêt pour le libre. Je suis également dans cet état d’esprit de partage de connaissances ! »
Plus d’informations sur QGIS Deployment Toolbet :
-
2:00
Paul Ramsey: Cancer 3
sur Planet OSGeoA common refrain on my Facebook cancer support groups is that the first months after diagnosis can be among the most stressful. You know the least about the actual extent of your condition, but you simultaneously know for sure that your life is going to change a great deal, starting now.
It is also the first time for grieving.
In the worst case it is grieving actual mortality, the very real threat of the end. But even in a relatively low impact diagnosis like my (current) one, there is grief. It is the grief of lost futures, lost plans, lost self-image.
I am a person who runs and climbs and rows and goes on long walks and travels and teaches and speaks publicly. At least, I was. If all goes according to plan, there will eventually be a new me, who does some or many of those things. Maybe not all of them anymore, there is no predictability or control.
Last Christmas I took my family to Rome over the holidays. “No time like the present!” I said, little knowing how apt that would be. I’m glad for everything I have done with my family. Climbing mountains, scaling cliffs, travelling afar, and even the predictable summer trips to the beach.
Some of these adventures were quite hard, and in the moment I wondered to myself “what the heck were you thinking?” In the end, I regretted none of it, and we all have lifelong memories we share.
Before she was killed by cancer, Amy Ettinger wrote:
I’ve always tried to say yes to the voice that tells me I should go out and do something now, even when that decision seems wildly impractical … Money always comes back, but if you miss out on an experience, the opportunity may never come back.
I am trying to pack as much climbing, and eating out, and walks to the cafe, and evening date nights into my life as I can, before the start of treatment. It’s too late for anything big, but these are little things that bring me joy that may become harder to do, after.
My surgery date is set now, and the procedure will mark an abrupt decline and then the start of a long slow climb back up to whatever “new normal” my body can fashion from my reconfigured plumbing. Some people have great results, some people have terrible ones.
As always, there’s no way to know, the grey area is omnipresent, which is perhaps why I sound so morose.
Talk to you again soon, inshalla.
-
23:28
Sean Gillies: Bear training weeks 1-8
sur Planet OSGeoThe first quarter of my season has been challenging. I've had to deal with injuries and other niggles, and I'm just starting to feel better when I run. Moving forward on fitness while not being able to run very much has been an interesting problem to work on.
As I mentioned in Preason running I started my 8 week block of interval workouts with nagging knee pain. This pain continued for 6 weeks. I dealt with it by alternating outdoor runs with low-impact sessions on an elliptical or stair-stepper machine. I did one outdoor session of hill intervals and one indoor session of stair-stepper intervals every week. By the end of the block, I was doing 36 minutes of hard uphill running, and 4 hours of easier running or stepping in a week. It's not where I want to be. At least I didn't have to skimp on the hard intervals. I'm satisfied with doing as much hard running as my knee allowed, and enjoy feeling more fit.
At the end of last year, I was determined to get some physical therapy and rehabilitate my ankles and feet. I've been visiting a local clinic once a month and have been diligent about doing the recommended exercises. The therapist says that I have good range of motion in my ankles, though there is an imbalance; my right ankle has excellent mobility while the left is only better than average. My bigger problem, in the therapist's view, was that my toes and feet are weak. I needed to build muscle so that I can do toe stands easily and lift my arches. So, I've been going to the gym to build muscle three times a week. I do sets of back squats (5 x 5) for overall strength, and then do sets (3 x 10) of single-leg calf raises on a step with a kettlebell, single-leg squats with toe taps using a barbell and band around my thighs, and single-leg deadlifts with dumbbells. The Three Amigos, as I've been calling these single-leg exercises, have been working for me. My feet and lower legs are stronger and their imbalances are getting ironed out. I feel almost equally good with the deadlifts now, wobbling just one time out of ten, at most, on my left leg. The therapist has me progressing to single-leg jumping now, and I'm feeling better balance with the new exercises, too.
Consistent strength training, conservative running, and changing the way I sit at work seem to have let my knee recover. I'm standing, sitting on a stool, and reclining more when I work, using a conventional office chair less, and at maximum height when I do.
A radiology visit in December revealed that I'm developing a bone spur on my right heel. I wonder if this is yet another symptom of imbalance in my feet and legs, more stress on my right foot caused by favoring my weaker left? I'm getting some consultation on this and meanwhile am icing regularly. Two weeks ago I had to stop running for 3 days to treat aggravation of my right sciatic nerve. It was a good reminder to be more diligent about stretching and foam rolling. Otherwise, I'm doing pretty well. Heart palpitations are behind me. I'm eating and sleeping well, keeping sinus infections at bay, and enjoying longer days and generally nice spring weather.
I'm grateful to be able to continue training and am looking forward to a productive block of tempo running.
-
12:00
Mappery: Can you guess where this fingerpost is?
sur Planet OSGeoHarel Dan shared this pic with me. Can you guess where it is? Scroll down to find out.
Harel explained “The uniquely American passion for copying other placenames from every corner of the world, led to there being all these places within a few hundred miles of each other in the state of Maine. Someone was clever enough to make a tourist trap out of it.”
MapsintheWild Can you guess where this fingerpost is?
-
12:00
Mappery: Compass Coffee
sur Planet OSGeoAnother one from Erik’s US trip
I know that some will complain about the cardinal points not being a map but we have had them before and if you want to go ultra geek you could probably visualise a country outline in a weird projection in the coffee.
MapsintheWild Compass Coffee
-
2:00
Paul Ramsey: Cancer 2
sur Planet OSGeoBefore I joined the population of fellow cancer travellers, I had the same simple linear understanding of the “process” that most people do.
You get diagnosed, you get treatment, it works or it doesn’t.
What I didn’t appreciate (and this will vary from cancer to cancer, but my experience is with colorectal) is how little certainty there is, and how wide the grey areas are.
Like, in my previous post, I said I was “diagnosed” with cancer. Which maybe made you think I have it. But that’s not how it works. I had a colonoscopy, and a large polyp was removed, and that polyp was cancerous, and a very small part of it could not be excised. So it’s still in me.
Do I have cancer? Maybe! I have a probability of having live cancer cells in me that is significantly higher than zero. But not as high as one.
How bad is what I have? This is also a game of probabilty. Modern technology can shave off the edges of the distribution, but it can’t quite nail it down.
A computed tomography (CT) scan didn’t show any other tumors in my body, so that means I probably don’t have “stage 4” (modulo the resolution of the scan), which is mostly incurable (though it can be manageable), where the cancer has managed to spread outside the colon.
An MRI didn’t show any swollen lymph nodes, which means I maybe do not have “stage 3”, which requires chemotherapy, because the cancer has partially escaped the colon. But MRI results are better at proving rather than disproving nodal involvement and people report having surgical results that run counter to the MRI all the time.
That leaves me (theoretically) at “stage 2”, looking at a surgical “cure” that involves removing the majority of my rectum and a bunch of lymph nodes. At that point (after the major life-altering surgery!) the excised bits are sent to a pathologist, and the probability tree narrows a little more. Either the pathologist finds cancer in the nodes (MRI was wrong), and I am “upstaged” to stage 3 and sent to chemotherapy, or she doesn’t and I remain a stage 2 and move to a program of monitoring.
In an exciting third possibility, the pathologist finds no cancer in the lymph nodes or the rectum, which means I will have had major life-altering surgery to remove… nothing dangerous. My surgeon says I should find this a happy result (no cancer!) which is probably because he’s seen so many unhappy results, but it’s a major surgery with life-long side effects and I would do almost anything to not have to have it.
Amazingly, despite our modern technology there’s just no way to know for sure if there are still live cancer cells in me short of taking the affected bits out and doing the pathology. Or waiting to see if something grows back, which is to flirt with a much worse prognosis.
Monitoring will be regular blood tests, annual scans and colonoscopies for several years, as the probability of recurrence slowly and asymptotically moves toward (but never quite arrives at) zero. And all those tests and procedures have their own error rates and blind spots.
There are no certainties. All the measuring and cutting and chemicals, and I will still have not driven the cancer entirely out, it will stubbornly remain as a probability, a non-zero ghost haunting me every year of the rest of my hopefully long life.
And of course worth mentioning, I am getting the snack-sized, easy-mode version of this experience! People in stage three or stage four face a probability tree with a lot more “and then you probably die in a few years” branches, and the same continuous reevaluation of that tree, with each new procedure and scan, each new discovery of progression or remission.
Talk to you again soon, inshalla.
-
11:00
Mappery: The Pieces of London
sur Planet OSGeoWe all love a map jigsaw, well at least Harry Woods and I do. Here’s Harry making a jigsaw map of London that was made from OpenStreetMap.
I guess you could make a jigsaw of your favourite location, could be one for my friends at SplashMaps.
MapsintheWild The Pieces of London
-
21:24
gvSIG Batoví: Participante en concurso Proyectos de Geografía con estudiantes y gvSIG Batoví seleccionado para el programa ICT Training for Colombian Teachers 2024
sur Planet OSGeologo del proyecto
Es con gran placer que informamos que el equipo ganador por Colombia de la edición 2023 del concurso Proyectos con Estudiantes y gvSIG Batoví fue seleccionado para el Programa de entrenamiento en el uso pedagógico de las TIC – Convocatoria 2024
Como resultado, el proyecto viaja a Corea del Sur.
Postulación al programa ICT Training for Colombian Teachers 2024: Estrategia desarrollo sostenible, turismo y cartografia en Choachí.Nos llena de orgullo saber que la iniciativa del Curso – Concurso Geoalfabetización mediante la utilización de Tecnologías de la Información Geográfica (que en el año 2023 tuvo por primera vez participantes fuera de Uruguay) permita que un proyecto desarrollado en Colombia (y que ameritó haber sido declarado ganador del concurso) dé a conocer la experiencia aún más internacionalmente.
el equipo colombiano ganador con los diplomas del concurso Proyectos de Geografía con estudiantes y gvSIG Batoví
Felicitamos a la profesora Astrid Corredor por el logro obtenido. Estos resultados son los que nos convencen cada día de continuar con la iniciativa del curso-concurso para seguir difundiendo el uso de las Tecnologías Libres de Información Geográfica como herramientas de enseñanza y de generación de conocimiento.
vista del municipio de Choachí desde el páramo
-
14:37
Les nouveautés Giro3D 0.35
sur OslandiaGiro3D est une bibliothèque Javascript de visualisation de données géospatiales sur le Web. Notamment utilisée par l’application Piero, elle est compatible avec de nombreuses sources de données rasters et vecteurs, ainsi que 3D comme les nuages de points.
La version 0.35 apporte de nombreuses évolutions, et notamment d’importantes améliorations de performance utiles pour les scènes complexes combinant de nombreuses sources de données.
Améliorations de performancesCes améliorations touchent principalement à l’affichage des données rasters (couleur ou élevation) sur l’entité Map:
- Réduction de l’usage mémoire des tuiles de Map
- Réduction de la latence d’affichage des images sur la Map
- Réduction du nombres de requêtes HTTP nécessaires
- Augmentation de la vitesse de traitement des tuiles
Voir l’exemple interactif
Les entités Map et les nuages de points supportent maintenant le brouillard THREE.js, permettant de donner des effets atmosphériques à vos scènes.
Brouillard dans Giro3D
Le graticule géographiqueVoir l’exemple dédié
L’entité Map permet désormais d’afficher un graticule géographique entièrement paramétrable sur sa surface:
- réglage du pas en X et en Y
- origine du repère
- couleur
- opacité
- épaisseur des traits
Le graticule avec un pas de 500 mètres.
GeoTIFF YCbCr et masques de transparenceVoir l’exemple interactif
Les images GeoTIFF peuvent embarquer des masques de transparence. Ils sont désormais supportés dans Giro3D.
Il est maintenant possible d’afficher des images GeoTIFF dans l’espace colorimétrique YCbCr. Cet espace colorimétrique, couplé à la compression JPEG, permet de réduire considérablement la taille des images couleur GeoTIFF (par rapport à des compressions comme LZW ou DEFLATE).
Une image GeoTIFF compressée en JPEG, utilisant l’espace colorimétrique YCbCr et un masque de transparence. La bordure verte indique la limite de l’image, et n’est pas visible par défaut.
-
11:00
Mappery: Great Lakes Drainage Basin Map Umbrella
sur Planet OSGeoMatt Malone was one happy geographer when he got this umbrella for Christmas.
MapsintheWild Great Lakes Drainage Basin Map Umbrella
-
11:00
Mappery: As Strong as Worcester Sauce
sur Planet OSGeoHarry Wood spotted this on the Archway Road in north London. I’m guessing that this is a removal van with some strong people but the connection to Worcester Sauce baffles me
MapsintheWild As Strong as Worcester Sauce
-
7:00
Étude EDF Indoor – déplacements & guidage en intérieur et réalisation d’un prototype
sur OslandiaEDF a sollicité les équipes d’Oslandia pour la réalisation d’une étude puis une preuve de concept sous forme de logiciel prototype. L’étude comprend un rapport et des préconisations sur la cartographie indoor, l’analyse des déplacements et le guidage à l’intérieur de bâtiments et plus spécifiquement de centrales nucléaires. Le prototype concerne le calcul d’itinéraires.
ContexteLes centrales nucléaires sont des bâtiments complexes comprenant des zones pouvant être temporairement fermées à la circulation et / ou présentant une dangerosité pour le personnel. Les déplacements à l’intérieur de ces bâtiments nécessitent donc des calculs d’itinéraires, réalisés actuellement avant l’intervention. EDF R&D souhaite disposer d’une application mobile pour optimiser les déplacements de ses personnels de façon dynamique, et garantir leur sécurité.
L’étude OslandiaCette étude a permis de définir une architecture globale de la solution ainsi que différentes préconisations et scénarii concernant la technologie utilisée pour développer l’application mobile.
Oslandia a proposé un modèle relationnel de données correspondant au besoin fonctionnel et compatible avec le standard IndoorGML, puis une proposition d’architecture logicielle globale de la solution, des différents flux applicatifs et les considérations de sécurité des données.
Enfin, plusieurs scénarii basés sur des technologies différentes sont envisagés pour le développement de l’application mobile (QFIELD, OSMAND, application spécifique), avec pour chacun les avantages et inconvénients de la solution.
Le prototype : calcul d’itinérairesSuite à l’étude, une demande de réalisation de POC (Proof Of Concept) a été commandée par EDF. Ce prototype concerne le calcul du graphe de déplacement et des itinéraires. Pour le calcul du graphe, les technologies PostgreSQL et PostGIS ont été utilisées. Concernant les calculs d’itinéraires, l’extension pgRouting de PostgreSQL a été mise en œuvre.
Les étapes :- Nettoyage des données (topologie)
- Extraction des sols et des murs par niveau
- Découpage des sols en cellules à l’aide de l’algorithme de Voronoï
- Ajout des ascenseurs, escaliers et crinolines pour la navigation entre les niveaux
- Calcul du graphe de déplacement
- Calcul des itinéraires avec pgRouting
- Fermeture des zones à forte radioactivité
- Navigation entre différents équipements
- Ajout de barrières infranchissables (zone de chantiers,…)
- Possibilité d’utiliser des sols à des altitudes différentes dans un même étage (passerelles, escalier vers une plateforme surélevée).
Voilà une vidéo de démo du prototype : Conclusion
Ce travail a permis de valider la faisabilité d’une application mobile permettant d’optimiser les déplacements dans les environnements contraints et dangereux gérés par EDF. Le travail d’Oslandia sur un traitement de la donnée intelligent et des algorithmes adaptés ont levé les verrous sur la faisabilité fonctionnelle de l’optimisation des déplacements pour la sécurité des personnes.
Le travail réalisé avec une modalité étude et le prototype ont montré une forte efficacité et une concrétisation des préconisations.
Le chemin est désormais libre et optimisé pour la réalisation d’une application complète.
-
18:00
Paul Ramsey: Cancer 1
sur Planet OSGeoA little over a month ago, three days after my 53rd birthday, I received a diagnosis of rectal cancer. Happy birthday to me.
Since then, I have been wrestling with how public to be about it. I have a sense that writing is good for me. But it also keeps like milk. I wrote most of this a couple weeks ago and my head space has already evolved.
So writing like this is mostly a work of self-absorption (I’m sure you can forgive me) but hopefully it also helps to raise awareness amongst the cohort of people who might know me or read this.
Colorectal cancer rates are going up, and the expected age of occurance is going down. Please get screened. No matter your age, ask your clinician for a “FIT test”. If you’re over 45, just ask for a colonoscopy, the FIT test isn’t perfect.
I have a pretty good prognosis, mostly because my case was caught by screening, not by experiencing symptoms bad enough to warrant a trip to the doctor. Most of the people who get diagnosed after showing symptoms have it worse than I, and will have a longer, harder road to recovery. Get screened.
Our language of cancer borrows a bit from the language of contagion. I “got” cancer. It’s not quite a neutral description, there’s a hint of agency in there, maybe I did something wrong? This article drives me crazy, the author “went vegan and became a distance runner” after his father died of colorectal cancer.
Sorry friend, cancer is not something you “get”, and it’s not something you can opt out of with clean living. It’s something that happens to you. Take it from this running, cycling, ocean rowing, rock climbing, healthy eater – driving down the marginal probability of cancer (and heart disease (and depression (and more))) with exercise and diet is its own reward, but you are not in control. When cancer wants you, it will come for you.
This is why you should get screened (right?). It’s the one way to proactively protect yourself. The amazing thing about a colonoscopy is, not only can it detect cancer, but it also prevent it, by removing pre-cancerous polyps. It’s possible that screening could have prevented my case, if I had been screened a few years earlier.
I am now a denizen of numerous Facebook fora for fellow travellers along this life path, and one of the posts last week asked “what do you think cancer taught you”? I am a little too early on the path to write an answer myself, but one woman’s answer struck me.
She said it taught her that control is an illusion.
Before, I had plans. I could tell you I was going to go places, and do things, and when I was going to do them, next month, next season, next year. I was in control. Now, I can tell you what I will be doing next week. Perhaps. The rest is in other hands than mine.
Talk to you again soon, inshalla.
-
11:00
Mappery: The World in a Coffee Shop
sur Planet OSGeoIrdi spotted this in the STOA coffee shop in Tirana. I’m not sure what the map is showing, but it’s fun
MapsintheWild The World in a Coffee Shop
-
11:00
Mappery: The Luggage That You Just Have to Have
sur Planet OSGeoRaf spotted this beautiful luggage in a store in Takeshita Street in Tokyo
MapsintheWild The Luggage That You Just Have to Have
-
7:04
OPENGIS.ch: Status of Cloud Optimized Geospatial Formats
sur Planet OSGeoCloud-optimized formats are changing how we handle geospatial data, making it easier to access and work with large datasets directly in the cloud. These formats reduce the need to download entire datasets, facilitating quicker and more focused data analysis and visualization. For those interested in the specifics of these advancements, our recent Cloud Optimized Geospatial Formats – Status Report, offers an introduction into the topic, recommendations for usage and an overview of promising formats.
Within this project, we also released a sample of various tiles downloaded from swissSURFACE3D as a single cloud optimized point cloud file and made it accessible also via a potree powered web viewer that demonstrates how one single file can be used for visualization in the web and making accessible for applications like QGIS and QField via the direct access URL .
I would like to thank GeoStandards.ch and SGS to allow us working on this.
We’re keen to hear from you as well. Please share your experiences or additional insights and formats in the comments.
-
11:00
Mappery: The World of Top Gear
sur Planet OSGeo -
9:45
longwayaround.org.uk: Sorting lines in (Neo)Vim
sur Planet OSGeoThe built-in Vim
:sort
command supports sorting either all lines in a buffer or a range of lines.For example to sort a range of lines it's possible to visually select those lines then run
:sort
.Help docs can be accessed via
:help :sort
and can be viewed online via … -
11:00
Mappery: Giant Relief Map, Why Not?
sur Planet OSGeoMatt Malone spotted this relief map at Waterton Glacier in Montana. He said “”Do you want your pic taken by the giant map?” isn’t really even a legit question for a geographer.”
MapsintheWild Giant Relief Map, Why Not?
-
12:00
Mappery: L’aéropostale
sur Planet OSGeoAs I get one year wiser, I want to share something from my past. I used to live in Toulouse, in the southwest part of France. Property development is huge there, but sometimes, in the middle of the new neighbourhood, we keep remains of the past. The map in Montaudran shows the former starting point of the postal service l’aéropostale. The short part of the runway is preserved during this ongoing Uban renewal.
The area will host the Aeroposace campus, which will be the future base of the Galileo satellite navigation system.
Below is a picture of the runway from Wikipedia:
And the next one taken in 2023
MapsintheWild L’aéropostale
-
11:00
Mappery: Immersive Background
sur Planet OSGeoRaf shared this “Nice use of maps as background at Sorolla immersive exhibition at Casa Amatller in Barcelona”
MapsintheWild Immersive Background
-
12:00
Mappery: Bliss Lane
sur Planet OSGeoElizabeth sent me these pics of the signs for Bliss Lane in Old Tapovan, you may need to zoom in on the image below to see all of the detail. There is a helpful arrow pointing you towards the Ganges
Makes me want to go back to India
MapsintheWild Bliss Lane
-
9:58
OPENGIS.ch: QField 3.2 “Congo”: Making your life easier
sur Planet OSGeoFocused on stability and usability improvements, most users will find something to celebrate in QField 3.2
Main highlightsThis new release introduces project-defined tracking sessions, which are automatically activated when the project is loaded. Defined while setting up and tweaking a project on QGIS, these sessions permit the automated tracking of device positions without taking any action in QField beyond opening the project itself. This liberates field users from remembering to launch a session on app launch and lowers the knowledge required to collect such data. For more details, please read the relevant QField documentation section.
As good as the above-described functionality sounds, it really shines through in cloud projects when paired with two other new featurs.
First, cloud projects can now automatically push accumulated changes at regular intervals. The functionality can be manually toggled for any cloud project by going to the synchronization panel in QField and activating the relevant toggle (see middle screenshot above). It can also be turned on project load by enabling automatic push when setting up the project in QGIS via the project properties dialog. When activated through this project setting, the functionality will always be activated, and the need for field users to take any action will be removed.
Pushing changes regularly is great, but it could easily have gotten in the way of blocking popups. This is why QField 3.2 can now push changes and synchronize cloud projects in the background. We still kept a ‘successfully pushed changes’ toast message to let you know the magic has happened
With all of the above, cloud projects on QField can now deliver near real-time tracking of devices in the field, all configured on one desktop machine and deployed through QFieldCloud. Thanks to Groupements forestiers Québec for sponsoring these enhancements.
Other noteworthy feature additions in this release include:
- A brand new undo/redo mechanism allows users to rollback feature addition, editing, and/or deletion at will. The redesigned QField main menu is accessible by long pressing on the top-left dashboard button.
- Support for projects’ titles and copyright map decorations as overlays on top of the map canvas in QField allows projects to better convey attributions and additional context through informative titles.
The QFieldCloud user experience continues to be improved. In this release, we have reworked the visual feedback provided when downloading and synchronizing projects through the addition of a progress bar as well as additional details, such as the overall size of the files being fetched. In addition, a visual indicator has been added to the dashboard and the cloud projects list to alert users to the presence of a newer project file on the cloud for projects locally available on the device.
With that said, if you haven’t signed onto QFieldCloud yet, try it! Psst, the community account is free
The creation of relationship children during feature digitizing is now smoother as we lifted the requirement to save a parent feature before creating children. Users can now proceed in the order that feels most natural to them.
Finally, Android users will be happy to hear that a significant rework of native camera, gallery, and file picker activities has led to increased stability and much better integration with Android itself. Activities such as the gallery are now properly overlayed on top of the QField map canvas instead of showing a black screen.
-
2:00
GeoServer Team: How to style layers using GeoServer and QGIS
sur Planet OSGeoGeoSpatial 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 )
Using GeoServer and QGIS to style a layerIn this session, we will explore “How to style layers using GeoServer and QGIS” to produce beautiful maps. If you want to access the complete tutorial, simply click on the link
IntroductionGeospatial data has no intrinsic visual component and it must be styled to be visually represented on a map. By default, GeoServer uses a markup language called Styled Layer Descriptor (SLD) to define styling rules for displaying data. SLD is an XML-based language that allows users and software to control the visual portrayal of geospatial data. This language ensures that clients and servers can both understand how to render the data visually.
Note. This video was recorded on GeoServer 2.20.0, which is not the most up-to-date version. Currently, versions 2.24.x and 2.25.x are supported. To ensure you have the latest release, please visit geoserver.org and avoid using older versions of GeoServer.
Add a StyleTo add a new style, navigate to the Data > Styles page, then click on the Add a new style link. You will be redirected to the new style page, which is the same as the Style Editor Data tab.
This tab includes basic style information, the ability to generate a style and legend details. It has some mandatory basic style information, such as:
- Name: It’s the name of the style and it must be a unique name.
- Workspace: Styles can be inside workspaces which causes restrictions. In other words, the styles in a workspace can only be assigned to the services of that, and other services outside it, cannot use these styles. Styles also can be “global” or no workspace, so they don’t have any restrictions and services can be used for all suitable styles.
- Format: Default options are SLD and ZIP formats. To use other formats such as CSS and YSLD, you should download and install extensions. Make sure to match the version of the extension to the version of the GeoServer.
The “Style Content” area provides options for creating, copying, or uploading a style. It has three options:
- Generate a default style: Choose a generic style based on geometry such as Point, Line, Polygon, Raster, or Generic and click the Generate link when selected.
- Copy from existing style: Select an existing style from GeoServer and copy its contents to the current style. Note that not all styles may be compatible with all layers. Click the Copy link when selected.
- Upload a style file: Press the Browse button to locate and select a plain text file from your local system to add as the style. Click on the Upload link to add the style file.
The Legend area allows you to preview the legend for the style. Click on the Preview legend link to generate a legend based on the current settings.
At the bottom of the Style Editor page, you’ll find several options: Validate, Apply, Save and Cancel. During editing and especially after editing is complete, you can check the validation of the syntax by pressing the Validate button at the bottom. If any validation errors are found, a red message is displayed, and if no errors are found, a green message is displayed. To make changes, press the Apply button to access all the tabs and finally press the Save button.
After having created the style, it’s time to apply it to the layer. To do it, follow these steps:
- Navigate to the Data > Layers page then click on the layer’s name link to open the layer’s properties form. Switch to the Publishing tab.
- Go to the Style section and from the Default Style list, select the suitable style, then press the Save button.
- Navigate to the **Data > Layer Preview ** page and open up OpenLayers preview for the layer.
On the Styles page, click on the style name to open the Style Editor. The Style Editor page presents the style definition and contains four tabs with many configuration options: Data , Publishing , Layer Preview and Layer Attributes.
- Data tab: The Data tab includes basic style information, the ability to generate a style, and legend details. Moreover, it allows for direct editing of style definitions at the bottom, with support for line numbering, automatic indentation, and real-time syntax highlighting. You can switch between tabs to create and edit styles easily and can adjust the font size of the editor.
- Publishing tab: This tab shows all layers available on the server, along with their default style and any additional styles they may have. You can easily see which layers are linked to the current style by checking a box in the table.
- Layer Preview tab: This tab enables you to preview and edit the current style of any layer without switching pages. You can easily select the desired layer to preview and fine-tune styles to continuously test visualization changes.
- Layer Attributes tab: The Layer Attributes tab shows a list of attributes for the selected layer, making it easy to see and work with the attributes associated with the layer. This can help in deciding which attribute to use for labeling or setting up scale-dependent rules.
QGIS has a style editor for map rendering with various possibilities, including the export of raster styles to SLD for use in GeoServer. For versions before 3.4.5, a plugin called SLD4raster is required for exporting SLD for use in GeoServer.
Here’s a simple guide to styling a vector layer in GeoServer:
- Open QGIS (minimum version 3.0) and loading the vector dataset into your project.
- Double click on the layer to open the Properties dialog and navigate to the Symbology page.
- Select a Graduated rendering, choose the desired column, and press the Classify button.
- Return to the Properties dialog and go to the bottom of the Styles page. Select Style > Save Style.
- Save the style in SLD format and choose the location for the file.
- Use the Choose File button to locate your exported file in the folder and select it.
- Click on the Upload link to load the file into the editor form.
- Press the Validate button to ensure there are no errors, then press the Save button.
- Switch to the Publishing tab and choose either Default or Associated checkbox to apply the new style to the desired layer.
Here is a step by step guide to style a raster layer for GeoServer:
- Begin by opening QGIS with a minimum version of 3.4.5.
- Load the raster layer into your project.
- Double click on the layer to access the Properties and go to the Symbology tab.
- Select Singleband pseudocolor as the Render type, choose Linear method for Interpolation, and select a desired Color ramp.
- Press the Classify button to create a new color classification, then press the Apply button to save this classification. At the bottom-left of the page, choose Style and press Save Style button.
- Choose a name and export it in SLD format to your preferred location.
- In GeoServer, navigate to the Style section and click on Add a new style to open the editor form.
- Use the Choose File button to locate your exported file in the folder and select it.
- Click on the Upload link to load the file into the editor form.
- Validate the style by pressing the Validate button to ensure there are no errors, then press the Save button.
- Navigate to Data > Layers page and open the layer’s properties form by clicking on the layer’s name. Switch to the Publishing tab.
- Set the style as Default Style and press the Save button.
- Finally, in the Layer Preview section, open the OpenLayers preview for the raster layer.
To remove a style, click on the checkbox next to the style. Multiple styles can be selected at the same time. Press the Remove selected style(s) button at the top of the page. You will be asked for confirmation and press the OK button to remove the selected style(s).
In this session, we explored “How to style layers using GeoServer and QGIS” to produce beautiful maps. If you want to access the complete tutorial, simply click on the link
-
12:00
Mappery: These Tourists Won’t Get Lost
sur Planet OSGeoReinder shared this. Spotted outside the International Peace Palace in the Hague
MapsintheWild These Tourists Won’t Get Lost
-
12:00
Mappery: Cambridge, Massachusetts
sur Planet OSGeoMarc Prioleau spotted this in the Marriott in Cambridge Massachusetts. It’s a different spin on the local info maps that you get in some hotels.
MapsintheWild Cambridge, Massachusetts
-
7:00
[1’Tech by Oslandia] Réversibilité
sur OslandiaDans cette minute Tech, nos collaborateurs vous proposent d’expliquer une technologie, une méthodologie, un concept. Après open source, LiDAR et webGL, on a brainstormé sur GitLab pour donner notre meilleure définition de la réversibilité.
La réversibilité désigne l’opération de retour de responsabilité technique, par lequel le client reprend les prestations qu’il avait confiées à un prestataire à l’issue du projet. Elle comprend la fourniture de l’ensemble des éléments permettant de retrouver une autonomie avec la solution déployée initialement : logiciels exécutables, codes sources, documentation, paramétrage, supports de formation, données dans des formats ouverts.
Les caractéristiques intrinsèques de l’open source offrent à l’utilisateur ces garanties : l’interopérabilité, le standard et la réversibilité, et ce à des coûts optimaux.
La réversibilité, les prestations et les coûts associés sont souvent les grands oubliés lors d’un démarrage projet, alors qu’une analyse de TCO ( Total Cost of Ownership ) ne devrait pas les occulter. Elle est également un élément clé de la souveraineté du système d’information.
Pensez à l’intégrer dès le démarrage de vos projets !
-
12:00
Mappery: Never Eat Shredded Wheat
sur Planet OSGeoDerick Rethans shared this from his travels in Oxfordshire. I love the cardinal points at the top.
MapsintheWild Never Eat Shredded Wheat
-
11:00
Mappery: IMPORTANT: Mappery Editorial Policy Changes
sur Planet OSGeoDear followers. The Mappery team have been reflecting on some of the content we have posted recently. We’re concerned that cartography is being commercially exploited in some sectors (particularly the drinks industry) with the creation of entirely fictitious maps to promote a brand. We think this is wrong and is disrespectful of the art and science of cartography.
In posting some of this content, we recognise that our promotion has contributed to this problem, and for this error in judgement we are genuinely sorry and ask for your forgiveness. In future we will only post maps that have gone wild in good faith, rather than being fictitious creations produced solely for commercial gain. Once again, sorry for our part in this. In the meantime here are some shallots that look like a contour map. (Original credit Amanda Huber)
MapsintheWild IMPORTANT: Mappery Editorial Policy Changes
-
12:00
Mappery: Mapped It!
sur Planet OSGeoMatt Malone said “Gonna make a wild guess that one of my fellow surveying or GIS colleagues here in Michigan has this awesome plate that I spied recently.”
On the edge of being a Map in the Wild, no doubt some will want to draw the line somewhere else.
MapsintheWild Mapped It!
-
11:00
Mappery: Tad’s Montana Tablecloth
sur Planet OSGeoEric Lund sent this to me, it’s a paper ‘tablecloth’ with a map of the Yellowstone area at Tad’s Montana Grill in Bozeman, Montana. Note the fruity cocktails while studying the elegant cartography.
MapsintheWild Tad’s Montana Tablecloth
-
11:00
Mappery: Definitely a Well Used Map in the Wild
sur Planet OSGeoAnother one from Javier Jimenez Shaw. “Map in Grunewald, Berlin, Germany. The point where the map is in the map (like “you are here” or “aktueller Standort”) is worn from touching it so much, that you can see the material behind the painting.
MapsintheWild Definitely a Well Used Map in the Wild
-
10:19
Oslandia: (Fr) En direct des Journées Utilisateurs QGIS-fr !
sur Planet OSGeoSorry, this entry is only available in French.
-
14:52
En direct des Journées Utilisateurs QGIS-fr !
sur OslandiaUne belle partie de l’équipe est présente pendant les Journées Utilisateurs QGIS-fr les 27 et 28 mars à Grenoble pour animer 5 ateliers et 2 conférences avec des clients : nouveautés QGIS 3D, créer et publier un joli projet sur QWC, cartographie avancée avec QGIS, initiation au déploiement rationalisé de QGIS avec PowerShell et QDT, collecter vos données sur le terrain avec QField, …
Oslandia est Mécène Or des Rencontres utilisateurs QGIS-fr 2024. Au fil des projets réalisés et des expériences, Oslandia a acquis un statut d’acteur majeur français sur QGIS.
Editeur open source QGIS depuis 2011, Oslandia contribue activement à la communauté, comme pendant ces deux jours
-
11:00
Mappery: Scotland’s Geology
sur Planet OSGeoI am not sure who pointed me to this magnificent geological map of Scotland which was shared by Europe Says who said “Geologically correct map of Scotland. 30 years of collecting!”
MapsintheWild Scotland’s Geology
-
11:00
Mappery: 3D Globe Jigsaw
sur Planet OSGeoJavier Jimenez Shaw shared this beauty “3D globe jigsaw puzzle in my living room. 30 cm diameter. Unfortunately it is not produced anymore.” Amazing object, I have never seen anything like this before, have you?
It turns out that Ravensburger make a newer version of a 3D globe which you can buy here or from other online places that we can do without boosting
MapsintheWild 3D Globe Jigsaw
-
20:10
GeoSolutions: GeoSolutions at FedGeoDay in Washington, DC
sur Planet OSGeoYou must be logged into the site to view this content.
-
11:00
Mappery: Stone Town, Zanzibar
sur Planet OSGeoStephen Mather, a good friend of Mapppery, shared this “Here’s one from Stone Town, Zanzibar, November of 2016. I think it’s up top of Emerson Spice.”
You might say “not very wild” but I love the idea of a hotel called Emerson Spice, sounds pretty wild to me.
MapsintheWild Stone Town, Zanzibar
-
7:00
[Equipe Oslandia] Jean, ingénieur SIG
sur OslandiaAprès un diplôme d’ingénieur obtenu à Centrale Lille, Jean s’engage dans une thèse en Morphologie mathématique, orientée sur le traitement d’images numériques, aux Mines de Paris. Après sa thèse, il poursuit pendant 12 ans sa collaboration avec son entreprise d’accueil. Il travaille sur de nombreux projets de R&D et sur l’écriture d’algorithmes de traitements d’images ou sur des algorithmes de données SIG géolocalisées.
Il découvre les SIG, QGIS, et … Oslandia, identifié comme un acteur majeur dans la communauté QGIS !
« La culture open source m’intéresse, j’ai toujours utilisé des outils et logiciels OS et je faisais d’ailleurs de la contribution à titre perso. J’avais par ailleurs envie de travailler dans une société dans laquelle je pouvais être davantage partie prenante des décisions et des actions »
Jean est ingénieur SIG chez Oslandia depuis 2022 et dispose d’une solide expérience en C++, le langage de programmation sur lequel est basé QGIS et sur le visualisateur QT. Il met à disposition ses compétences sur des projets variés comme le visualiseur de données 3D pour le CEA, de nouvelles fonctionnalités pour améliorer le chargement et la visualisation de nuages de points sur QGIS pour EDF,… ou encore la visualisation de données de l’IFREMER qui repose sur QGIS server.
Projet emblématiqueJean a développé avec son collègue Florent un plugin pour l’IFREMER « QDuckDB » permettant de lire des bases de données DuckDB, qui stockent des infos spatiales (points, polygones, lignes, …), dans QGIS.
Technologies de prédilection
Ce plugin permet aujourd’hui de partager des fichiers « parquet » utilisés de plus en plus notamment par l’INSEE.
« Comme tout est en open source, d’autres utilisateurs peuvent proposer de nouvelles fonctionnalités, on peut imaginer plein d’évolutions possibles ! »Langages C, C++ et Python
PhilosophieTout ce que je développe peut servir à la communauté, j’aime l’idée de contribuer à un bien commun.
Oslandia en 1 motTransparence !
-
11:00
Mappery: Birds Eye View
sur Planet OSGeo -
10:20
OTB Team: OTB works with QGis 3.36
sur Planet OSGeoThe OTB Provider QGis plugin is now available on QGis plugin catalog. Since QGis version 3.36, the plugin previously packaged is no longer in QGis package. To use OTB with QGis 3.36 you need to install plugin from QGis plugin catalog (“Extensions menu –> Install/Manage Extensions” and type OTB in not-installed tab). Then follow plugin […]
-
9:51
Py3dtiles v7.0.0 est de sortie ! Des fonctionnalités, et une communauté qui se développe
sur Oslandiavar spector; var captureOnLoad = false; var captureOffScreen = false; window.__SPECTOR_Canvases = [];
(function() { var __SPECTOR_Origin_EXTENSION_GetContext = HTMLCanvasElement.prototype.getContext; HTMLCanvasElement.prototype.__SPECTOR_Origin_EXTENSION_GetContext = __SPECTOR_Origin_EXTENSION_GetContext;
if (typeof OffscreenCanvas !== 'undefined') { var __SPECTOR_Origin_EXTENSION_OffscreenGetContext = OffscreenCanvas.prototype.getContext; OffscreenCanvas.prototype.__SPECTOR_Origin_EXTENSION_OffscreenGetContext = __SPECTOR_Origin_EXTENSION_OffscreenGetContext;
OffscreenCanvas.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { // context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent); this.id = "Offscreen"; window.__SPECTOR_Canvases.push(this);
if (captureOnLoad) { // Ensures canvas is in the dom to capture the one we are currently tracking. if (false) { spector.captureContext(context, 500, false); captureOnLoad = false; } } }
return context; } }
HTMLCanvasElement.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent);
if (captureOffScreen) { var found = false; for (var i = 0; i
var spector; var captureOnLoad = false; var captureOffScreen = false; window.__SPECTOR_Canvases = [];
(function() { var __SPECTOR_Origin_EXTENSION_GetContext = HTMLCanvasElement.prototype.getContext; HTMLCanvasElement.prototype.__SPECTOR_Origin_EXTENSION_GetContext = __SPECTOR_Origin_EXTENSION_GetContext;
if (typeof OffscreenCanvas !== 'undefined') { var __SPECTOR_Origin_EXTENSION_OffscreenGetContext = OffscreenCanvas.prototype.getContext; OffscreenCanvas.prototype.__SPECTOR_Origin_EXTENSION_OffscreenGetContext = __SPECTOR_Origin_EXTENSION_OffscreenGetContext;
OffscreenCanvas.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { // context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent); this.id = "Offscreen"; window.__SPECTOR_Canvases.push(this);
if (captureOnLoad) { // Ensures canvas is in the dom to capture the one we are currently tracking. if (false) { spector.captureContext(context, 500, false); captureOnLoad = false; } } }
return context; } }
HTMLCanvasElement.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent);
if (captureOffScreen) { var found = false; for (var i = 0; i
var spector; var captureOnLoad = false; var captureOffScreen = false; window.__SPECTOR_Canvases = [];
(function() { var __SPECTOR_Origin_EXTENSION_GetContext = HTMLCanvasElement.prototype.getContext; HTMLCanvasElement.prototype.__SPECTOR_Origin_EXTENSION_GetContext = __SPECTOR_Origin_EXTENSION_GetContext;
if (typeof OffscreenCanvas !== 'undefined') { var __SPECTOR_Origin_EXTENSION_OffscreenGetContext = OffscreenCanvas.prototype.getContext; OffscreenCanvas.prototype.__SPECTOR_Origin_EXTENSION_OffscreenGetContext = __SPECTOR_Origin_EXTENSION_OffscreenGetContext;
OffscreenCanvas.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { // context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent); this.id = "Offscreen"; window.__SPECTOR_Canvases.push(this);
if (captureOnLoad) { // Ensures canvas is in the dom to capture the one we are currently tracking. if (false) { spector.captureContext(context, 500, false); captureOnLoad = false; } } }
return context; } }
HTMLCanvasElement.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; }
if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0], arguments[1]); if (context === null) { return context; } }
var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent);
if (captureOffScreen) { var found = false; for (var i = 0; i
Py3dtiles est une librairie et un outil Python en ligne de commande pour générer, lire et modifier des 3D Tiles. On peut l'utiliser seul ou l'intégrer dans sa propre application Python.
La version 7.0.0 vient de sortir, il est temps de faire une petite rétrospective sur les dernières années !
La communauté et un nouveau mainteneurNous accueillons un nouveau mainteneur : Lorenzo Marnat (Liris). Le Liris a très significativement contribué à py3dtiles et a mené un travail de R&D conséquent sur leur fork et via l'application py3dtilers. Lorenzo réalise depuis quelques mois le travail d'intégration dans le tronc commun, véritable travail de fourmi ô combien nécessaire. L'intégrer à l'équipe était donc l'étape logique dans ce processus.
Cela signifie que py3dtiles n'est plus un projet uniquement Oslandien ! Ceci constitue une étape très importante dans le développement d'un projet réellement communautaire et nous sommes très heureux de l'avoir dans l'équipe.
En conséquence, certains changements ont été adoptés afin que py3dtiles soit plus indépendant d'Oslandia. Nous espérons ainsi favoriser les contributions externes et l'implication d'autres entitées qu'Oslandia et le Liris:
- Le dépôt de code a été déplacé vers sa propre organisation: [https:]] . Nous en avons profité pour renommer la branche principale en main à la place de master (afin de s'approcher du défaut de GitLab).
- Le site web est maintenant hébergé sur [https:]] . Une redirection de l'ancien site a été mise en place, mais nous conseillons tout de même de mettre à jour vos signets web.
- Nous avons maintenant un document décrivant la gouvernance: GOVERNANCE.md, qui décrit le fonctionnement de la communauté.
- Et nous avons un canal de discussion instantané sur matrix.org !
Lidar HD de l'ign converti en 3dtiles avec py3dtiles et visualisé avec giro3d
Les évolutions fonctionnelles Améliorations du support de la spécificationEn version 2, py3dtiles souffrait encore de l'absence de ces quelques classes décrivant les concepts 3Dtiles, et qui sont maintenant présentes en version 7 :
- BoundingVolumeBox
- TileSet
- Tile
- Extension
Les feature tables sont maintenant supportées pour les b3dm en plus des pnts.
Nouveaux formatsPy3dtiles supporte maintenant les fichiers PLY (en nuage de points uniquement) et LAZ.
Le support XYZ et CSV a été amélioré, avec une auto-détection du format du CSV.
py3dtiles mergeIl s'agit d'une nouvelle commande permettant de générer un tileset à partir de 2 autres tilesets. Pour l'instant la génération des tuiles racines est assez naïve, mais devrait très bien fonctionner avec les nuages de points.
Autres fonctionnalitésIl est maintenant possible d'exporter les classifications des nuages de points dans les pnts.
Le support des batch tables a été ajouté.
Les évolutions techniques Des évolutions de packaging Les dépendances optionnellesAvec le support de formats additionnels, le nombre de dépendances de py3dtiles augmente de façon significative. Nous avons créé des sections de dépendances optionnelles, afin d'éviter de demander aux utilisateurs d'installer des librairies pour des formats qu'ils n'utilisent pas.
Image DockerNous publions maintenant des images docker sur le gitlab registry et docker hub.
Support WindowsUn premier travail pour supporter Windows a été effectué, mais du travail reste à accomplir pour produire un .exe facilitant le déploiement.
La qualité du codeDe gros efforts ont été effectués pour rendre la contribution plus agréable et améliorer globalement la qualité du code. Des analyseurs automatiques de code ont été mis en place, notamment des linters et un SonarCloud.
Nous avons fait un effort spécifique pour typer nos déclarations de fonctions et variables avec les nouvelles possibilités qu'offre les versions modernes de Python.
À venirLe point principal sera le support des géométries dans le processus de conversion multiprocessus lancé par py3dtiles convert. Cela permettra ensuite d'avoir un support des formats géométriques, en particulier l'IFC ! (Mais également, l'amélioration du support PLY, des tables PostGIS, des OBJ, etc.).
D'autres améliorations sont bien sûr dans les cartons.
Impliquez-vous !Py3dtiles est un logiciel communautaire et se portera mieux si vous participez ! Tester, ouvrir des tickets, voire contribuer ou financer sont des actions qui sont très utiles pour le projet. Le guide de contribution de la communauté est ici. Alternativement, n'hésitez pas à nous contacter pour en discuter !
-
11:00
Mappery: The Meanderings of the River Ahr
sur Planet OSGeoAnton van Tetering shared this “Map of the meanders of the river Ahr on the wall of restaurant Ruland in Altenahr, Germany. Just like many other buildings in the Ahr-valley, this restaurant was severely damaged in the flood catastrophe of July 2021 which killed at least 135 people in this valley alone.”
MapsintheWild The Meanderings of the River Ahr
-
1:00
SourcePole: FOSSGIS 2024
sur Planet OSGeoSourcepole hat an der FOSSGIS 2024 in Hamburg verschiedene Themen mit Vorträgen abgedeckt:
- QGIS Web Client 2 (QWC2) - Neues aus dem Projekt
- QGIS Server Plugins
- BBOX: Kompakter OGC API Server für Features, Tiles und mehr
-
11:00
Mappery: Pinocchio Theme Park
sur Planet OSGeoIan Wagner shared this pic of a map of Italy in a Pinocchio themed park in South Korea. Who knew Pinocchio was a thing there?
MapsintheWild Pinocchio Theme Park
-
0:00
Ecodiv.earth: An addon to download the AHN data in GRASS GIS
sur Planet OSGeoThe r.in.ahn addonIn the previous post, I introduced the ‘Actueel Hoogtebestand Nederland’. To start with a small correction, the version 4 I mentioned isn’t the latest version. Version 5 is being rolled out and is already available for the northern part of the country. But for now, let’s focus on version 4.
In the previous post, I presented some steps to download the AHN for a specific area and import it in GRASS GIS. Downloading was easy using the r.in.wcs addon. However, a few extra steps were required to ensure the imported data would align with the extent and resolution of the original AHN data.
Easy, but why not make it easier yet? So, as it was a rainy day anyway, I used the code presented earlier and wrapped it up in the addon r.in.ahn. Let’s see how to download the DTM for the Land van Cuijk again, but this time using the new addon.
©
Download the DTM for a selected areaNote that this addon only works in locations with the coordinate reference system RD New (EPSG 28992). This is that the CRS of the original data, and the addon is meant to ensure you download the data as it is. This is akin to how the
r.in.gdal
import function works. If you want to import and reproject the data on the fly (similar to ther.import
function), you can use ther.in.wcs
addon.This example shows the steps to download the 0.5-meter resolution DTM for the Land van Cuijk. You’ll need to install the r.in.wcs and r.in.ahn addons 1 2.
Install the required addons.
First step is to import the Python libraries. Note, this will not be repeated with the next scripts.
import grass.script as gs
Now, you can install the two addons using the g.extension function.
gs.run_command("g.extension", extension="r.in.wcs") gs.run_command("g.extension", extension="r.in.ahn")
Install the two addons using the g.extension function.
g.extension extension=r.in.wcs g.extension extension=r.in.ahn
You need the
g.extension
function to install addons. In the main menu, go toSettings > Addons extension > Install extension from addon
. Alternatively, type ing.extension
on the command line. The example below is forr.in.wcs
. Repeat this step forr.in.ahn
.Figure 1: The g.extension function, started from the command line. Figure 1: The g.extension function, started from the command line.
Now, download the administrative boundaries of the Dutch municipalities, and extract the boundaries of the “Land van Cuijk”.
Download layer with administrative boundaries of the neighborhood.
gs.run_command( "v.in.wfs", url="https://service.pdok.nl/cbs/wijkenbuurten/2022/wfs/v1_0?", output="municipalities", name="gemeenten", )
Next, extract the boundaries of the municipality of “Land van Cuijk”
gs.run_command( "v.extract", input="municipalities", where="naam = 'Land van Cuijk'", output="LandvanCuijk", )
Get the vector layer with the boundaries of the municipality.
v.in.wfs url="https://service.pdok.nl/cbs/wijkenbuurten/2022/wfs/v1_0?" \ output=municipalities name=gemeenten
Next, extract the boundaries of the municipality of “Land van Cuijk”
v.extract input=municipalities where="naam = 'Land van Cuijk'" \ output="LandvanCuijk"
Type in
v.in.wfs
on the command line or in the console. You can also find the function undermain menu > File > Import vector data
. This opens the following screen (you need to fill in parameters in two tabs):Figure 2: Download the vector layer with the municipality boundaries. Define the base URL and the name of the output layer. Figure 2: Download the vector layer with the municipality boundaries. Define the base URL and the name of the output layer.
Figure 3: Download the vector layer with the municipality boundaries. Fill in the name of the WFS layer to download. Figure 3: Download the vector layer with the municipality boundaries. Fill in the name of the WFS layer to download.
Figure 4: Extract the boundaries of the municipality of Land van Cuijk. Select the name of the vector layer with municipalities and give the name of the output layer. Figure 4: Extract the boundaries of the municipality of Land van Cuijk. Select the name of the vector layer with municipalities and give the name of the output layer.
Figure 5: Extract the boundaries of the municipality of Land van Cuijk. Fill in the query, which defines which features you want to select and save. Tip: Use the convenient query builder. Figure 5: Extract the boundaries of the municipality of Land van Cuijk. Fill in the query, which defines which features you want to select and save. Tip: Use the convenient query builder.
Now, set the region to match the extent of the municipality. Note, you do not need to be concerned with the resolution;
r.in.ahn
will adjust the resolution and extent to make sure the imported data aligns perfectly with the original AHN data. This is done by setting the resolution to 0.5 meters and subsequently extending the region’s extent until it aligns with the original AHN data layer.Set the region to match the vector layer LandvanCuijk.
gs.run_command("g.region", vector="LandvanCuijk")
Get the vector layer with the boundaries of the municipality.
g.region vector=LandvanCuijk
Type in
g.region
on the command line or console, or open the function’s window viamenu | Settings | Computational region | Set region
.Figure 6: Set the region to match the extent of the vector layer LandvanCuijk. Figure 6: Set the region to match the extent of the vector layer LandvanCuijk.
Now, you can run the
r.in.ahn
function to import the layer. Note that by default, the addon will change the region you just defined. It will set the resolution to 0.5 meters (this is the resolution of the AHN data you are about to download). It will furthermore expand the extent so that it aligns perfectly with the AHN data.Import the DTM using the
r.in.ahn
function.gs.run_command("r.in.ahn", product="dtm", output="dtm_05")
Get the vector layer with the boundaries of the municipality.
r.in.ahn product=dtm output=dtm_05
Type in
r.in.ahn
on the command line or console. A third way is shown in the image below. Open theTools tab
and go toAddons
. The function should be available there.Figure 7: Open the r.in.ahn plugin, select the product to download (dtm or dsm) and provide the output layer name. Figure 7: Open the r.in.ahn plugin, select the product to download (dtm or dsm) and provide the output layer name. Download whole tiles
If you set the
-t flag
, the function will import the DTM or DSM for all 6.5×5 km AHN tiles that overlap with the current region. In addition, a vector polygon layer will be created with the tile boundaries.Define the region for which you want to download the data, and import the DSM using the
r.in.ahn
function. Set the -t flag to download the DTM for the area covered by the tiles that overlap with the region.# Set the region gs.run_command("g.region", n=412572, s=411280, w=188911, e=190085) # Import the tile(s) that include the selected region gs.run_command("r.in.ahn", product="dtm", flags="t", output="dtm_05_subset")
# Set the region g.region n=412572 s=411280 w=188911 e=190085) # Import the tile(s) that include the selected region r.in.ahn -t product=dtm output=dtm_05_subset)
Open the
g.region
addon by typing g.region on the command line, in the console, or using the menu. Fill in the northern, southern, western, and eastern limits of the area for which you want to download the data.Figure 8: Set the region bounds. Figure 8: Set the region bounds.
Type in
r.in.ahn
on the command line or console. Or go to theTools tab
and go toAddons
. The function should be available there. Fill in the required fields, like in the previous examples. Next, go to theOptional
tab and selectDownload whole tiles
.Figure 9: Open the r.in.ahn plugin, select the product to download (DTM or DSM) and provide the output layer name. Figure 9: Open the r.in.ahn plugin, select the product to download (DTM or DSM) and provide the output layer name.
The extent of the imported layer covers the 6.5×5 km AHN tile. In addition to the raster layer, you’ll have a vector layer with the boundary of the downloaded tile(s). This vector layer has the same name but with the suffix *_tiles*.
You should be aware that running the function will adjust the computational region so that it aligns with the imported data. You can avoid this by setting the -g flag, as illustrated in Figure 10.
Figure 10: A: The downloaded 6.5 x 5 km AHN tiles that intersect with the user-defined region, here indicated by the orange outline. In addition, a vector layer with the boundaries of the tiles is created. The red outline shows the adjusted region extent after running the function. The blue outlines show the boundaries of the downloaded tiles. B: The same, but with the -g flag set. With this flag set, the user-defined region (red outline) will not be altered . Figure 10: A: The downloaded 6.5 x 5 km AHN tiles that intersect with the user-defined region, here indicated by the orange outline. In addition, a vector layer with the boundaries of the tiles is created. The red outline shows the adjusted region extent after running the function. The blue outlines show the boundaries of the downloaded tiles. B: The same, but with the -g flag set. With this flag set, the user-defined region (red outline) will not be altered . Footnotes
You are expected to be familiar with GRASS GIS and the concept of region used in GRASS GIS. If you are new to GRASS GIS, you are warmly recommended to first check out the GRASS GIS Quickstart and the explanation about the GRASS GIS database.??
Downloading the DTM for the whole municipality will take a while. If you want to speed things up, you can work with a smaller area by using your own vector data.??
-
11:00
Mappery: A map lover’s birthday present
sur Planet OSGeoGregory Marler said “I got a scarf for my birthday, it’s got 2 country maps on it! Would @mappery count this as a map in the wild? At the least it is being worn beside my wild/unkempt beard.”
The answer is definitely “Yes”
Who can work out the country that is not UK? (Greg can’t answer)
MapsintheWild A map lover’s birthday present
-
9:40
Jackie Ng: Avalonia UI Test Drive
sur Planet OSGeoAs the title implies, this blog post is about my experience test driving Avalonia UI.
So why am I doing this?
I've been getting growing questions lately about whether MapGuide Maestro works on Linux via Mono.
Sadly I no longer emphasize anything regarding Mono compatibility because.
- WinForms support (in legacy .net Framework 4.x) on Mono is pretty much a hack.
- And since we've moved away from legacy .net Framework to .net 6.0, the combination of WinForms + .net 6.0 is probably an unsupported combination (you don't use Mono to run .net core/5.0+ applications, you use Microsoft's official SDK/runtime). I'm also not too keen to waste time and resources to test and find out.
And in terms of .net multi-platform UI frameworks, there's only one logical choice: Avalonia UI
While it is not in my immediate plans to rewrite MapGuide Maestro's UI in Avalonia, I wanted to at least explore the feasibility of building such a UI even if all the actual functionality is mocked up, just to see how easy or difficult the whole process is.
Hence the motivation for this post.
So why Avalonia?
Avalonia is effectively the "spiritual successor" to WPF, and adopts most of the same patterns and practices when building UIs for Avalonia.
I had first heard about Avalonia when it was formerly known as Perspex and at the time, from the screenshots of example Perspex applications on Windows and non-Windows platforms, it was clear at that point in time the range of possible applications one can build with Perspex was quite limited and building an application like Maestro on top of Perspex was not feasible.
Just recently, I had heard about the framework now known as Avalonia again and this time round there was a lot more positive buzz around it, so I gave it another look and was much more impressed at its capabilities and richer suite of UI controls to build applications with.
Our objectiveMy objective with this Avalonia learning exercise was to build a minimal multi-document interface skeleton application, mimicking the primary functionality (UI-wise) of MapGuide Maestro.
- Being able to present a login UI to connect to a MapGuide Server
- Present MapGuide Server resources in a tree view
- Open resources in a region of tabbed editor panels and being able to close them.
If this kind of UI looks familiar, yes it's basically the UI for tools like:
- Visual Studio Code
- Azure Data Studio
- Azure Storage Explorer
- any many others like them!
The benefit of such a UI, is that it doesn't require an explicit VS-style window docking control like I have for the current WinForms-based MapGuide Maestro. I can already see the controls needed to build such a UIAny UI toolkit worth its salt should to able to provide these basic controls.
This is a proof-of-concept, so we won't be using the existing Maestro API to talk to actual MapGuide Servers. Instead such functionality will be mocked up for this application. The main purpose of this exercise is to see if Avalonia provides enough of the base UI elements to build a hypothetical version of MapGuide Maestro on top of.
It turns out this exercise was fraught with several challengesChallenge #1: Getting familiar with Avalonia conceptsThe first challenge was simply getting familiar with Avalonia concepts. Being someone who did .net desktop app development primarily in Windows Forms, I skipped over WPF, and its XAML-based variants/successors like Silverlight, Xamarin Forms, UWP, and MAUI, and Avalonia being a "spiritual successor" to WPF meant that I didn't have a potential conceptual head start on Avalonia that one might have if they already had experience with WPF and its XAML-based derivatives.
However, I was familiar with the MVVM pattern and data-binding, which is used heavily in Avalonia. I already had experience in knockout.js building/maintaining some of our web apps in my day job, and these concepts learned from knockout.js mostly translate cleanly 1:1 to Avalonia.
The other Avalonia concepts I'll have to figure out as we go along.
Challenge #2: WebAssembly (WASM) supportBefore I begin, I must take the MapGuide-knowledgable readers of this post back in time, way back to when MapGuide Open Source 1.0 was released.
Do you remember how this new (at the time), re-invented version of MapGuide was released, but the only authoring option at the time was to buy a license of Autodesk MapGuide Studio? Not a pretty look if you are offering a free and open source web map GIS server, but the authoring tools are not?
Some members of the MapGuide community were aware of this glaring discrepancy and created a web-based equivalent of MapGuide Studio called Web Studio built fully with HTML/JS/CSS. Unfortunately, Web Studio was really bare-bones in terms of authoring capabilities and the code being written in the pre-historic era of javascript (this was circa 2006-2007) which did not make it conductive to external contribution. React, TypeScript and friends weren't around then, so trying to enhance Web Studio with new features was extremely challenging. I once tried to add at least a generic XML text editor fallback for Web Studio so you had something to edit various resources where Web Studio did not provide a dedicated editor UI for, but alas this was just too challenging for me and I gave up on such an idea.
But eventually another user of the MapGuide community solved this problem more directly by developing and releasing a v1.0 of a windows .net desktop application that you all know as MapGuide Maestro. As an aside, I am not the original author of MapGuide Maestro in case you're wondering, I merely took over development and maintenance of Maestro from the 2.1 release onwards.
Anyways, back to the topic at hand, when I created the new Avalonia application with the provided project template, I was most surprised to see that the generated solution came with a project that compiled to WebAssembly (WASM) that was ready to run in your web browser!
This was a mind-blowing revelation for me from a conceptual standpoint. It means our hypothetical MapGuide Maestro built on Avalonia could not only exist as a regular desktop application, but the WASM build of this application could be dropped in the the wwwroot of a MapGuide Web tier installation and you would now have a modern version of Web Studio, but much more powerful and capable, because it is just MapGuide Maestro ... now in your web browser!
Since our starter project template includes a functioning WASM browser target. I now had a strong incentive to keep this target active and working, because the prospect of being able to run MapGuide Maestro in a web browser is a very tempting proposition. Therefore, the choice of libraries and APIs I use is constrained by my new requirement of being able to work in a browser/WASM environment.
For example, I originally wanted to use MVVMDialogs to simplify working with dialogs (Maestro has lots of dialogs, so I figure such a library could be useful), but I couldn't get this library to work in a WASM environment with some of my testing dialogs, so this was a no-go. Since this was just a proof-of-concept, there wasn't a need to have working dialog system, but it does mean if this were to go beyond a proof-of-concept and into an actual application where we will inevitably have to present a dialog of some sort, I'd have to come with a paradigm that can work in both desktop and browsers.
Another problem with this WASM target is that I can't seem to debug it in Visual Studio. You can launch the WASM target in the debugger and spawn a new browser window to launch your app, but any breakpoints you stick in your C# code are not being hit. I'm not sure if this a shortcoming or a broken feature, but it is somewhat concerning if we were to go full steam ahead with support WASM as a compilation/deployment target.Challenge #3: "Large scale" MVVMAlthough I already knew the MVVM pattern from knockout.js, my scope of usage was mostly limited to using knockout.js to building "islands" of interactive client-side content on primarily server-generated web pages. So I didn't really have an idea of how to apply such a pattern on a full blown Single Page Application (SPA), which is pretty much what we're trying to achieve (conceptually) in Avalonia. By the time I was building SPAs proper, I had moved on the popular stuff like React, which is how I gained the knowledge needed to build a modern replacement map viewer for MapGuide and my usage of knockout.js fell by the wayside as a result, so I never figured out the answer for how to do large scale MVVM.
The main problem was that in a large scale MVVM, how do view models communicate with each other without a tight parent-child coupling?
I deduced that for starters, we definitely need to use dependency injection. Various view models will need to access different services and if we had a root view model with explicit nested child view models (each with their own service requirements), it would be an absolute pain to have to setup these various view models. Using a DI container means we can offload this concern to it and we can focus on just asking the DI container for a particular view model and it will setup all the required services for it for us provided we register everything properly with the DI container.
For better WASM support, I wanted a dependency injection container that is not driven by reflection to make the code more friendlier to app trimming. We want to be able to app trim on publish so that we can eliminate unused code and reduce the final binary size. This is most desirable for the WASM target as app trimming means smaller binaries, which means smaller payloads to download in a web browser. StrongInject was chosen for this reason as it was a "compile-time" DI container that can verify all your dependencies are registered properly before running the application through the magic of source generators, generating all the necessary registration and validation code for you.
Finally, to be able to communicate between view models without necessary parent-child coupling, the messenger facility of the MVVM toolkit can be used. With this messenger facility, we simply:- Have select view models be recipients of certain messages
- Have our application services (that various view model commands call) send these messages.
- Relevant recipients get notified and update themselves (and their bound UIs) accordingly as a result.
The reason is because the tab content we want to show is not homogenous. One open editor tab could be for a layer, one for a map, one for a feature source, etc, etc. So we need to be able to show different tabs on the same tab control.
Avalonia documentation is pretty scant on this topic. All examples I found assume homogenous series of tab content, which is not our case.
Just for laughs, since AI has been hyped for soon taking away everyone's jobs (even us devs), I figured I'd ask huggingface chat (as a guest), how would you solve this problem?
Unfortunately, the provided code sample does not work out of the box. It clearly assumed Avalonia = WPF and gave me a WPF-based solution. The giveaway was the Avalonia TabControl does not have an ItemTemplateSelector, but the WPF TabControl does.
But Avalonia sharing many conceptual similarities with WPF meant that although the answer provided wasn't correct, parts of the answer were applicable and did lead me down to further avenues of inquiry and eventually I found the solution: It was to define a data template for every possible derived tab view model class in the same UserControl where the TabControl was specified.Final challenge: Avalonia VS designerThis wasn't so much a challenge, rather an annoyance. The Avalonia designer in Visual Studio has some teething issues- Intellisense/autocomplete is somewhat flaky when writing binding expressions and when you're doing a lot of data-binding, having the editor giving you and incomplete or outdated list of properties you can bind to becomes annoying. A full project build generally fixes this, but it is annoying having to do this every time I add new observable properties or commands to an existing view model class.
- It's also not rename-aware, so observable property or command renames will result in stale binding expressions, causing havoc with the designer and have to be manually fixed up in the XAML. Choose your observable property names wisely I suppose, because renaming them afterwards is painful.
And if these screenshots don't convince you, thanks to being able to deploy as a WASM target, I deployed a copy to GitHub pages, so you can see this app for yourself right in your WASM-enabled web browser!
The source code for this app can be found here. One day this may form the basis of a new (true) multi-platform version of MapGuide Maestro, but for now this lies as a potentially useful starting point for building a tabbed-multi-document editor application with Avalonia.
So what did I think of Avalonia from this little experiment?- I like it mostly. My pre-existing experience on knockout.js helped greatly with picking up MVVM and data-binding. My initial prediction of a VSCode-style UI layout being buildable turned out to be true.
- I like the default (project template provided) choice of MVVM Toolkit for applying the MVVM pattern. I like their heavy use of source generators to make adding new observable properties and commands to a view model being a simple case of tacking [ObservableProperty] on a field or tacking [RelayCommand] to a private method and having the source generator generate all of the boilerplate code for you (and it's a lot of boilerplate!).
- The revelation that Avalonia has a WASM deployment target was both exciting and "cramping my style". It meant that certain libraries I wanted to use (eg. The MVVM dialogs library) could not be used and it wasn't clear what would work in a WASM browser environment and what wouldn't. Which leads to ...
- Documentation is lacking in some areas. What really stumped me for a while was how do a TabControl bound to a collection of polymorphic or heterogenous tab view models. Their provided examples completely failed to tell me how to do this. I suppose if I came into this with existing WPF experience, this wouldn't have been so difficult as most of the concepts and patterns seem to be mostly transferable, but I happened to have skipped WPF and its bajillion XAML-based derivatives, so I didn't have this pre-existing knowledge to fall back on. Through perseverance and looking at the source code for many existing Avalonia applications on GitHub, I was finally able to determine that data templates was the solution.
Now I better get back onto this MapGuide/FDO work.