← Back to list

Convertire gli stili da ArcGis (.lyr) a Qgis, pubblicare sul web con OpenLayers

#tutorial #casehistory

Gianfranco Di Pietro · 2024-05-29 16:29 · 0 claps · 7.0 min read
#qgis3 #arcgis-pro #gis #mapping #openlayers
Open on Medium ↗

Convertire gli stili da ArcGis (.lyr) a Qgis, pubblicare sul web con OpenLayers

tutorial #casehistory

Photo by Glenn Carstens-Peters on Unsplash

Photo by Glenn Carstens-Peters on Unsplash

Indice

  1. Disclaimer/Intro
  2. Cosa sono i file LYR?
  3. il plugin SLYR
  4. Applicare uno stile di visualizzazione su Qgis 3.2 a usando un file .lyr
  5. Caso d’uso: da ArcMap ad una mappa geologica online con OpenLayers

1. Disclaimer/Intro

Se ti è venuta voglia di leggere questo post ti trovi in una delle seguenti condizioni (ALERT testo semi-serio)

a) Sei un utente (anche esperto) di QGIS e un collega ti ha passato delle vecchie cartelle che contenevano cartografie digitali realizzate con ArcMap una decina di anni fa.

b) Sei un utente ESRI da anni, hai sempre guardato dall’alto in basso i «ragazzini» e gli «squattrinati» che usano QGIS, ma per obblighi lavorativi devi passargli dei file di lavoro. E loro magari non hanno idea di cosa sia un file di stile o una vestizione grafica.

c) Contribuisci alla battaglia per un mondo libero dal software proprietario, quando puoi fai retro-engineering e contribuisci attivamente allo sviluppo di software opensource.

Magari ti identifichi un po in tutte e tre le categorie, magari no, ma per finire qui a leggere queste righe probabilmente hai un problema da risolvere. Delle vestizioni grafiche fatte su ArcGis sono da convertire per Qgis o un webgis OpenLayers. Ma soprattutto non vuoi rifarle a mano ne è stato sufficiente l’aiuto di qualche copilota AI.

Spoiler: esiste chi ha fatto un lavoro di reverse-engineering e ha creato addirittura un bellissimo plugin per Qgis facile da usare. Vedremo come è possibile la conversione di file di stile ArcGIS (.lyr) in QGIS utilizzando il plugin gratuito e open source SLYR community edition.

2. Cosa sono i file LYR di ArcGIS?

I file LYR (Layer Symbology) di ArcGIS, con estensione .lyr, sono dei file di specifica che definiscono la simbologia e le proprietà di visualizzazione di un layer in ArcGIS. In altre parole, contengono le informazioni su come un determinato set di dati geografici (ad esempio, strade, fiumi, confini) deve essere rappresentato all’interno di una mappa ArcGIS.

I file LYR non contengono i dati geografici stessi, ma piuttosto fanno riferimento ad essi. Questo significa che un file LYR può essere utilizzato per visualizzare lo stesso set di dati in modi diversi, applicando differenti simbologie e proprietà di visualizzazione.

I file LYR di ArcGIS sono utilizzati per diversi scopi, tra cui:

  • Personalizzare la visualizzazione dei dati geografici: I file LYR permettono di controllare l’aspetto di un layer in una mappa, definendo colori, riempimenti, simboli, etichette e altre proprietà di visualizzazione. Questo consente di creare mappe più chiare, informative e accattivanti.
  • Salvare e condividere le impostazioni di visualizzazione: I file LYR possono essere salvati e condivisi con altri utenti, garantendo che tutti visualizzino i dati nello stesso modo. Questo è utile per la collaborazione su progetti GIS e per la pubblicazione di mappe.
  • Applicare la stessa simbologia a più layer: Un singolo file LYR può essere utilizzato per definire la simbologia di più layer contemporaneamente. Questo consente di risparmiare tempo e di garantire coerenza nella rappresentazione dei dati all’interno di una mappa o di un progetto GIS.

In sintesi, i file LYR di ArcGIS sono uno strumento importante per la gestione della simbologia e delle proprietà di visualizzazione dei dati geografici in ArcGIS.

3. Il plugin SLYR

Nord Road ha sviluppato un prodotto commerciale chiamato SLYR che ha uno lungo elenco di funzionalità che permettono di fatto una interoperabilità quasi completa tra Qgis e ArcGis/ArcMap.

al momento (Maggio 2024) sono supportate le conversioni dai documenti di ArcGIS Pro (fino alla versione 3.2) e ArcMap (fino alla versione 10.8.2).

Leggendo dal loro sito emerge che il team di sviluppo basa il suo business model sui sostegni finanziari ricevuti dagli acquisti della versione a pagamento, rilasceranno in opensource man mano le funzionalità già sviluppate nella versione pro. La versione free ed opensource è chiamata community edition.

4. Applicare uno stile di visualizzazione su Qgis 3.2 a usando un file .lyr

(testato su Windows e MacOs, ma non credo ci siano dubbi sul fatto che la procedura funzioni ugualmente su Linux)

Con QGIS versione > 3.2 installato sul computer, apriamo l’installer dei plug-in e cerchiamo «SLYR community edition» (https://plugins.qgis.org/plugins/slyr_community/)

Dopo la procedura standard di installazione e attivazione dei plugin troveremo le funzionalità dell’algoritmo tra i «geo algoritmi» nella lista dei sistemi di processing.

Gli algoritmi SLYR negli strumenti di processing in QGIS

Gli algoritmi SLYR negli strumenti di processing in QGIS

Sia usando la ricerca testuale che andando a cercare il gruppo «SLYR» troveremo tutti gli algoritmi utilizzabili. Il fatto di avere a disposizione questi algoritmi come strumenti di processing ci consente tra le altre cose di poterli utilizzare all’interno di modelli più complessi tramite il modellatore QGIS.

Utilizzando l’algoritmo Set style from LYR file in maniera semplicissima (indicando layer QGIS di destinazione e file .LYR di origine) è possibile quindi applicare uno stile salvato in formato LYR da ArcGIS Pro o ArcMap.

Ci sono alcune eccezioni risolvibili mediante piccoli work-around. Nel caso gli stili di testo negli ambienti ESRI fanno riferimento ad altri file esterni (pattern, SVG, caratteri speciali o icone) il file .LYR non li conterrà in quanto contiene solamente i puntatori a quelle risorse. In questi casi occorrerà smanettare “personalmente” purtroppo…

Il passaggio ad un formato “open” di uno stile grafico ha aperto la possibiltà ad ulteriori operazioni e conversioni in altri sistemi, come ad esempio le mappe web che sfruttano librerie free ed opensource come OpenLayers e LeafLet.

5. Caso d’uso: da ArcMap ad una mappa geologica online con OpenLayers

Tematismi grafici per poligoni: realizzati in ArcMap, convertiti e visualizzabili su un sito web con OpenLayers

Tematismi grafici per poligoni: realizzati in ArcMap, convertiti e visualizzabili su un sito web con OpenLayers

In una recente collaborazione mi è capitato di dover risolvere il problema di pubblicare su un sito web una mappa geologica realizzata con ArcMap

Mappa geologica realizzata con ArcMap e importata su ArcGIS pro

Mappa geologica realizzata con ArcMap e importata su ArcGIS pro

Sia da ArcMap sia da ArcGIS Pro è possibile salvare i tematismi che si trovano salvati nel file .MXD di progetto in un file esterno specifico per ogni layer, chiamato appunto file .LYR.

Una volta acquisito il file LYR, va verificato che non ci sono problemi di risorse grafiche esterne provando a ricreare un progetto nuovo (su altro ambiente o altro PC) su ArcGIS Pro, importando i dati grezzi e il file LYR precedentemente creato. In genere meglio farsi fornire il file LYR dall’utente che ha lavorato in ArcMap, ma nel caso di un vecchio progetto recuperato occorre fare questo piccolo test.

Successivamente passiamo a QGIS, e tramite gli algoritmi di SLYR importiamo dati e grafiche in un nuovo progetto. Se è andato tutto bene non ci sono particolari correzioni da fare, se vogliamo esportare il tutto in una pubblicazione web che sfrutta librerire JavaScript gratuite è possibile usare in prima battuta il plugin Qgis2web. Oppure nel caso di lavori un po più complessi è possibile sfruttare il formato di interscambio delle vestizioni grafiche QML

Un file QML è per QGIS l’analogo del file LYR di ArcMap/ArcGIS, contiene le informazioni per le vestizioni grafiche e i tematismi da applicare ai dati geografici. La sostanziale differenza però è che il file QML è in formato aperto XML-style.

Con un po di lavoro e interpretazione del QML è possibile estrarre le informazioni necessarie per la definizione degli stili in altre tecnologie e software, come ad esempio OpenLayers.

Questo, ad esempio, è il codice JavaScript che viene interpretato da OpenLayers per la definizione dei retini e dei pattern da applicare ai poligoni della mappa geologica.

// A.1.1. Debris flow
var cnv1 = document.createElement('canvas');
var ctx1 = cnv1.getContext('2d');
var pattern1;
var patternimage1base64string = 'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADTUlEQVR4nO1bW5LjMAh0pnKJ3C17utwtewzvx25cssyjoUGzH9NVrknGEo0xAgkp205ie77Fz157pG01//Z8Xy+kA6JA5OE9hRHejA4S/9em4Pbr97a/Htptqu3nsrC/Hm6baNux3aGzZ6kqV42gm3+UKXpAxPoa2P4fGahnRTDKvFuNsg/xUZx5AKmvpA9toE73kr6vkB3hVIMgAzTQjW0RiEFMkOd574lztBqayuYri+ycAH3zUruZ8xQD0HE73mfjRAZWP+/NX/pK1qqc/KyQw3BeDIAqUzmVXT3XGDlv+77vo+t05N1O2TQyVotae/ybBcNv9YPSYDZgVc3krJQXDnoTXAMgQjRFqqbUFr/GgRrfNUBmpZXpz/BLbWDeirGUXb1F22oTHUuOp/dWkYIyga4iODIp9JQGx/GSWXFF09w8Pln+KEa+u0eIjv+MEoi8irqCyW+5R+XwyPRZwa8Gwe+KDSg/siqFgmRYMxCdhRFEPsp/z87TkWCFFkQy/OPS3Zop+oIM63zuWe7lWdgCm8ezvCfZiAJam6oxnuVncKoHoBZGPGG+xz4cs0eA8H+heVYbZ0j5TOOIrBOyK0uP380CFdPN+XNURid/WxocSVeUvLKLpfS+QKTu310Kszg8fnFrDM3NXhk9q1QEEX7xhUmu5LnNfL96GRwd9xmdDx6tQcfeADp5yspG2s+yUztDiPtZfVBE9EH1uMhkrNmFldnj2Bj5n6AF4Y5qkXpAQlMKIWejvFcGt3SKk4HoDGARePLRQHhaDM3/rCJHUp1V0fH0iOontQnvDlc9VHXFCJEnpfnU+YAqVA4X1Pi0B1SjckYY4UzFgJVY9UKONNix+3PJOI0zTE8PTV7r+YD99TiuaL9lJ01RV8y4I+vGXjCrqCVCEyHtQSJzh2pkcr4EaAgwhc3smT4UjG5/7xFv6LuHR0X/+7w+zp4PiAS6sT3DX3F4iz4fwCihAeFn0+TP+YB/UAsi3ptFd4ezP5xYxl9l2eh3FlX8t+353iXrRd4S8/MW5hxxBX/6fIBnWQToZKaTnzofwACeqjbzw3uDmQWKtX8YldfFT58P8PBzPkD4HJXRyU+fD4jU3zoh6VG2GmTcDE1RDJjzAX8AhwGHoFNRbKoAAAAASUVORK5CYII='
var patternimage1 = new Image();
patternimage1.src = 'data:image/png;base64,' + patternimage1base64string;
patternimage1.onload = function() {pattern1 = ctx1.createPattern(patternimage1, 'repeat');};

Una volta creati i pattern per singola tipologia è possibile andare ad impostare lo stile nel formato richiesto da OpenLayers in base al valore di un campo del layer, in questo caso la stringa contenuta nel campo “Litotipo”

//
var General_Geology_olStyle = function(feature) {
    var alpha = 0.5;
    var color;
    var pattern;
    switch(feature.get('Litotipo')) {
      case 'Debris flow' : color = pattern1; break;
      case 'Landslides' : color = pattern2; break;
      case 'Beaches and alluvial deposits' : color = pattern3; break;
      case 'Marine Terraces' : color = pattern4; break;
      case 'Marly clays' : color = pattern5; break;
      case 'Trubi' : color = pattern6; break;
      case 'Evaporitic brecciated limestones' : color = pattern7; break;
      case 'Porites limestones' : color = pattern8; break;
      case 'Siliciclastic arenites' : color = pattern9; break;
      case 'Mylonitic Skarn' : color = pattern10; break;      
      case 'Mylonitic migmatitic paragneiss' : color = pattern11; break;
      case 'Skarn' : color = pattern12; break;
      case 'Layered tonalites' : color = pattern13; break;
      case 'Augen gneiss' : color = pattern14; break;
      case 'Migmatitic paragneiss' : color = pattern15; break;

Il risultato di queste conversioni, al momento è un lavoro oggetto di ricerca, una versione di prova è raggiungibile qui: http://gianfrancodp.github.io/metpet/

Il codice che ho scritto è pubblicato nel repository github metpet.

Conclusioni

Grazie al prezioso lavoro di North-Road, il plug-in SLYR community edition su QGIS consente di “aprire” il formato LYR delle vestizioni grafiche ESRI. Ciò consente di bypassare agilmente e con qualche semplice passaggio l’esclusività di utilizzo di tali informazioni sotto l’egida dei sistemi e delle API ESRI.

Una volta convertito in un formato aperto, come QML, è semplice e relativamente facile l’ulteriore conversione per altri sistemi. In questo caso abbiamo visto come è stato possibile sfruttare questa “apertura” per l’uso su OpenLayers, ma la strada indicata permette anche di sfruttare sistemi server come GeoServer o altri visualizzatori di dati geospaziali.


메타데이터
post_id
9cc8cd32a89b
slug
convertire-gli-stili-da-arcgis-lyr-9cc8cd32a89b
url
https://medium.com/@gianfrancodipietro/convertire-gli-stili-da-arcgis-lyr-9cc8cd32a89b
canonical_url
https://medium.com/@gianfrancodipietro/convertire-gli-stili-da-arcgis-lyr-9cc8cd32a89b
author_url
https://medium.com/@gianfrancodipietro
status
ok
fetched_at
2026-06-29 22:44:20