Questa è una vecchia versione del documento!
Layer Utente WMS e Shapefile
| Sigla | SV.0026.016 |
|---|---|
| Versione GeoWeb | 4.8.3 |
| Versione MapGuide | 3.1.2 |
| Data rilascio | 2026-06-26 |
| Redattore | GSC |
| Cliente | FIBERCOP ZENITH REAL ESTATE |
| Issue | #1808 |
1. Introduzione
Il presente documento descrive il rilascio della funzionalità Layer Utente WMS e Shapefile (sigla SV.0026.016) per il widget Layout 2D del prodotto GeoWeb MapGuide.
Il documento è rivolto al team di implementazione e ai responsabili tecnici del progetto; ha lo scopo di descrivere in modo esaustivo le modifiche apportate al framework, le dipendenze tecniche e le istruzioni di installazione.
| Documento di riferimento | Identificativo |
|---|---|
| Studio di Fattibilità / BRD | SV.0026.016.SF — Layout 2D Layer Utente WMS + ShapeFile — V02 — 30/03/2026 |
| Progetto Esecutivo / PE | SV.0026.016.PE — Layout 2D Layer Utente WMS + ShapeFile — V01 — 21/05/2026 |
| Cliente / Committente | FIBERCOP ZENITH REAL ESTATE |
| Prodotto | GeoWeb Framework — modulo MapGuide — widget Layout 2D |
2. Contesto
2.1 Scenario precedente
Nel framework GeoWeb MapGuide le mappe cartografiche erogate nelle webapp sono tradizionalmente pre-configurate dal personale tecnico GeoWeb tramite strumenti specializzati esterni (MapGuide Maestro). Le risorse cartografiche — Feature Source, Layer Definition, Map Definition — sono definite a monte e pubblicate sulla library del server MapGuide.
Esiste un meccanismo per il caricamento di package MapGuide personalizzati che permette a utenti configuratori di estendere le mappe; tuttavia tale meccanismo richiede competenze tecniche specialistiche e l'intervento del personale GeoWeb, escludendo l'utente finale da qualsiasi autonomia operativa nella gestione della cartografia.
Il servizio WMS è già supportato da GeoWeb come sfondo cartografico (baseLayer), configurabile dall'amministratore nel webadmin. Il webadmin non è tuttavia accessibile all'utente finale, che non può aggiungere autonomamente sorgenti WMS alla propria mappa.
2.2 Scenario atteso (TO-BE)
Con questo rilascio l'utente finale acquisisce piena autonomia nella gestione di layer cartografici personalizzati, direttamente dalla webapp GeoWeb, senza necessità di strumenti esterni o intervento del personale tecnico.
Le tipologie di layer gestibili sono:
- Layer WMS: l'utente specifica l'URL del servizio OGC WMS; il sistema recupera automaticamente le capabilities, presenta la lista dei layer disponibili e, al salvataggio, deploya il layer nella library MapGuide.
- Layer Shapefile: l'utente carica un file ZIP contenente shapefile ESRI (.shp, .dbf, .shx); il sistema valida il contenuto, crea una Feature Source nella library MapGuide e genera il layer con la simbologia configurata dall'utente.
I layer utente si integrano nella legenda del widget Layout 2D in una folder dedicata “Layer Utente”, senza modifiche al layout della scheda mappa. Tutti i layer caricati da qualsiasi utente sono visibili a tutti gli utenti con accesso alla mappa.
3. Nomenclatura
Vademecum dei nuovi concetti base introdotti con questo rilascio.
| Termine | Definizione |
|---|---|
| Layer Utente | Layer cartografico definito e gestito dall'utente finale; distinto dai layer di prodotto, configurati dal team GeoWeb tramite strumenti tecnici esterni. |
| Layer WMS | Layer basato su servizio OGC Web Map Service; i dati cartografici sono richiesti in tempo reale al server WMS remoto tramite richieste HTTP. |
| Layer Shapefile | Layer basato su file ZIP contenente shapefile ESRI (.shp, .dbf, .shx); i dati sono importati nella library MapGuide come Feature Source. |
| Feature Source | Risorsa della library MapGuide che descrive una fonte dati (es. uno shapefile deployato); è il punto di partenza per la definizione di un layer. |
| Library MapGuide | Repository centralizzato sul server MapGuide in cui sono memorizzate le risorse cartografiche: Feature Source, Layer Definition, Map Definition. |
| GetCapabilities | Operazione standard OGC WMS (richiesta HTTP) che restituisce la lista dei layer disponibili, i CRS supportati e i metadati del servizio. |
| EventTrigger | Componente Java GeoWeb che si attiva automaticamente al salvataggio di un record; in questo contesto gestisce il deploy del layer in MapGuide. |
| is_valid | Flag DB (INTEGER 0/1): 1 = deploy completato con successo in MapGuide; 0 = errore (il dettaglio è nel campo validation_message). |
| FDO WMS Provider | Driver MapGuide per l'accesso a servizi WMS (versione 4.1); invia sempre la BBOX in formato (lon, lat). |
| CRS geografico | Sistema di riferimento non proiettato (es. EPSG 4326); con WMS 1.3.0 lo standard OGC richiede axis-order (lat, lon), in conflitto con FDO. Il sistema effettua auto-downgrade a WMS 1.1.0 in questo caso. |
| EhCache | Framework di caching Java; le entry relative ai layer utente vengono invalidate ad ogni operazione di insert/update/delete, garantendo dati sempre aggiornati. |
4. Ambito e Dipendenze
| Componente | Versione / Dettaglio |
|---|---|
| GeoWeb Framework | 4.8.3 |
| MapGuide Open Source | 3.1.2 |
| FDO WMS Provider | 4.1 |
| Database supportati | PostgreSQL, Oracle, SQL Server |
| Java EventTrigger | MapGuideUserLayerShapeFileTrigger, MapGuideUserLayerWMSTrigger |
| Cache | EhCache: retrieveValidUserWmsLayersForMap, retrieveValidUserShapefileLayersForMap |
5. Classi GeoWeb
Sono state introdotte due nuove classi GeoWeb, ciascuna con tabella DB e trigger Java associato:
| Classe GeoWeb | Tabella DB | Trigger |
|---|---|---|
gwd_mg_user_layer_shapefile | gwd_mg_user_layer_shapefile | MapGuideUserLayerShapeFileTrigger — valida ZIP, deploya Feature Source, aggiorna is_valid |
gwd_mg_user_layer_wms | gwd_mg_user_layer_wms | MapGuideUserLayerWMSTrigger — esegue GetCapabilities, valida WMS, deploya con auto-downgrade 1.3.0→1.1.0 per CRS geografici |
I metadati delle classi si trovano nella cartella DR/metadata/ e vanno importati tramite il Webadmin GeoWeb (funzione Import/Export metadati).
6. Schema Dati
6.1 Tabella gwd_mg_user_layer_shapefile
| Campo | Tipo | Descrizione |
|---|---|---|
id_mg_user_layer_shapefile | INTEGER PK | Identificativo univoco (autoincrement) |
name | VARCHAR | Nome univoco del layer (UNIQUE) |
description | VARCHAR | Descrizione testuale del layer |
gw_map_name | VARCHAR | Nome della mappa MapGuide di riferimento |
file_name | VARCHAR | Nome originale del file ZIP caricato |
file_data | BLOB/BYTEA | Contenuto binario del file ZIP |
file_c_type | VARCHAR | MIME type del file |
is_valid | INTEGER | 1 = deploy riuscito; 0 = errore |
validation_message | VARCHAR | Messaggio di esito validazione/deploy |
is_valid_html | VARCHAR | HTML con indicatore di stato (verde/rosso) |
is_visible | INTEGER | 1 = layer visibile nel renderer |
is_shown_in_legend | INTEGER | 1 = layer incluso nella legenda |
is_start_selected_in_legend | INTEGER | 1 = layer selezionato di default all'avvio |
legend_name | VARCHAR | Etichetta personalizzata nella legenda |
layer_filter | VARCHAR | Filtro FDO applicato al layer |
library_resource_id | TEXT | Identificatore nella library MapGuide |
style_xml_point / line / area | VARCHAR/CLOB | XML stile per tipo di geometria |
style_pt_* / style_li_* / style_ar_* | vari | Parametri di stile (simbolo, colori, etichette) per punti/linee/aree |
created_at / updated_at | TIMESTAMP | Date di creazione/modifica |
created_by / updated_by | VARCHAR | Utente di creazione/modifica |
6.2 Tabella gwd_mg_user_layer_wms
| Campo | Tipo | Descrizione |
|---|---|---|
id_gwd_mg_user_layer_wms | INTEGER PK | Identificativo univoco (autoincrement) |
name | VARCHAR | Nome univoco del layer WMS (UNIQUE) |
description | VARCHAR | Descrizione testuale del layer |
gw_map_name | VARCHAR | Nome della mappa MapGuide di riferimento |
base_url | TEXT | URL base del servizio WMS |
wms_version | VARCHAR(20) | Versione WMS negoziata (1.1.0 o 1.3.0) |
wms_available_layers | TEXT | Elenco layer disponibili da GetCapabilities |
wms_layers | TEXT | Layer selezionati per il deploy |
wms_json_params | JSONB/TEXT | Parametri WMS aggiuntivi (JSON) |
wms_get_capabilities_xml | TEXT | XML GetCapabilities memorizzato |
username / password | VARCHAR | Credenziali servizio WMS (opzionali) |
is_valid | INTEGER | 1 = deploy riuscito; 0 = errore |
validation_message | VARCHAR | Messaggio di esito validazione/deploy |
is_valid_html | VARCHAR | HTML con indicatore di stato |
is_visible | INTEGER | 1 = layer visibile nel renderer |
is_shown_in_legend | INTEGER | 1 = layer incluso nella legenda |
is_start_selected_in_legend | INTEGER | 1 = layer selezionato di default all'avvio |
legend_name | VARCHAR | Etichetta personalizzata nella legenda |
created_at / updated_at | TIMESTAMP | Date di creazione/modifica |
created_by / updated_by | VARCHAR | Utente di creazione/modifica |
7. Componenti Sviluppati
| Componente | File | Descrizione |
|---|---|---|
| EventTrigger SHP | MapGuideUserLayerShapeFileTrigger.java | Validazione ZIP shapefile, deploy Feature Source in MapGuide, aggiornamento is_valid |
| EventTrigger WMS | MapGuideUserLayerWMSTrigger.java | Esecuzione GetCapabilities, validazione WMS, deploy WMS Layer, auto-downgrade versione, aggiornamento is_valid |
| MapGuideService | MapGuideService.java | Metodi addDynamicUserWmsLayersToMgMap e addDynamicUserShapefileLayersToMgMap; gestione fallback WMS 1.1.0 per CRS geografici |
| Layout2DController | Layout2DController.java | Wiring dell'aggiunta dei layer utente al caricamento del widget Layout 2D |
| LayersManagement.js | LayersManagement.js | Subscriptions agli eventi insert/update/delete → gwLoad() per ricaricamento automatico della mappa |
| Cache EhCache | ehcache.xml | Entry retrieveValidUserWmsLayersForMap e retrieveValidUserShapefileLayersForMap |
8. Funzionalità UI — Layer WMS
Attore: Utente Finale
8.1 Lista layer WMS
La lista mostra tutti i layer WMS configurati con il relativo indicatore di validità (verde = operativo, rosso = errore) e il messaggio di validazione.
Fig. 1 — Lista layer WMS (classe gwd_mg_user_layer_wms)
8.2 Creazione nuovo layer WMS — form vuoto
Per creare un nuovo layer WMS l'Utente Finale compila la scheda Definizione con:
- Nome — nome univoco del layer (campo UNIQUE nel DB)
- Mappa MapGuide — la mappa Layout 2D in cui sarà visibile il layer (
gw_map_name) - URL base WMS — l'URL del servizio (es.
http://server/wms?)
Fig. 2 — Form nuovo layer WMS: campi di definizione (vuoto)
8.3 Creazione nuovo layer WMS — compilato
Dopo l'inserimento dell'URL base, il sistema esegue automaticamente il GetCapabilities e popola la lista dei layer disponibili (wms_available_layers). L'Utente Finale seleziona i layer da visualizzare in mappa (wms_layers).
Fig. 3 — Form nuovo layer WMS: compilato con layer disponibili caricati da GetCapabilities
8.4 Layer WMS dopo salvataggio
Al salvataggio, il trigger MapGuideUserLayerWMSTrigger esegue il deploy nella library MapGuide e aggiorna i campi is_valid, validation_message, is_valid_html.
Fig. 4 — Layer WMS salvato: indicatore di validità aggiornato (verde = deploy riuscito)
8.5 Layer WMS in mappa
Aprendo la mappa Layout 2D configurata nel layer, il sistema carica i layer WMS validi per quella mappa e li aggiunge alla cartografia. I layer appaiono nella folder “Layer Utente” della legenda.
Fig. 5 — Mappa Layout 2D con layer WMS attivo nella folder “Layer Utente”
9. Funzionalità UI — Layer Shapefile
Attore: Utente Finale
9.1 Lista layer Shapefile
La lista mostra tutti i layer Shapefile configurati con indicatore di validità.
Fig. 6 — Lista layer Shapefile (classe gwd_mg_user_layer_shapefile)
9.2 Creazione nuovo layer Shapefile — form vuoto
La scheda Definizione richiede:
- Nome — nome univoco del layer
- Mappa MapGuide — mappa di destinazione
- File shapefile (ZIP) — file ZIP contenente obbligatoriamente
.shp,.dbf,.shx(opzionali:.prj,.cpg)
Fig. 7 — Form nuovo layer Shapefile: campi di definizione (vuoto)
9.3 Creazione nuovo layer Shapefile — compilato
9.4 Configurazione stile
La scheda Stili permette di configurare la simbologia per tipo di geometria. I parametri di stile vengono serializzati come XML MapGuide Layer Definition (campi style_xml_point, style_xml_line, style_xml_area).
Stile Punti:
Fig. 9 — Configurazione stile: geometrie punto (simbolo, dimensione, colore, etichetta)
Stile Linee:
Fig. 10 — Configurazione stile: geometrie linea (stile linea, spessore, colore, etichetta)
Stile Aree:
Fig. 11 — Configurazione stile: geometrie area/poligono (riempimento, bordo, etichetta)
9.5 Layer Shapefile dopo salvataggio
Al salvataggio, il trigger MapGuideUserLayerShapeFileTrigger valida il contenuto del ZIP (presenza dei file obbligatori), crea la Feature Source nella library MapGuide e aggiorna is_valid.
Fig. 12 — Layer Shapefile salvato: indicatore di validità aggiornato
9.6 Layer Shapefile in mappa
10. Legenda e Visibilità
Entrambe le classi supportano i seguenti campi per la gestione della legenda:
| Campo | Comportamento |
|---|---|
legend_name | Etichetta del nodo nella legenda. Se vuoto, viene usato il campo name. |
is_shown_in_legend | 1 = il layer appare nell'albero della legenda; 0 = nascosto. |
is_start_selected_in_legend | 1 = il layer è selezionato (spuntato) di default all'apertura della mappa. |
I layer appaiono raggruppati in una folder denominata “Layer Utente” nell'albero della legenda del widget Layout 2D.
11. Ricaricamento Automatico della Mappa
Il widget Layout 2D si ricarica automaticamente (via gwLoad()) ogni volta che viene eseguita un'operazione di insert, update o delete su una delle classi gwd_mg_user_layer_shapefile o gwd_mg_user_layer_wms.
Il meccanismo è implementato in LayersManagement.js tramite subscriptions ai topic di aggiornamento pubblicati dal modulo dati. Questo garantisce che le modifiche ai layer siano immediatamente visibili in mappa senza ricaricare la pagina.
12. Note Tecniche
12.1 EventTrigger Java
I trigger sono implementati come Java EventTrigger (non groovy) e implementano i metodi:
afterInsert— deploy del layer appena creatoafterUpdate— re-deploy del layer aggiornatoafterDelete— rimozione del layer dalla library MapGuide
L'aggiornamento di is_valid in caso di errore avviene tramite executeUpdateQuery() (query SQL diretta) e non tramite modifica JPA dell'entità originale. Questo è necessario perché il metodo si trova negli hook after*: a quel punto la transazione JPA è già stata completata e non è possibile modificare l'entità originale.
12.2 Auto-downgrade WMS 1.3.0 → 1.1.0
FDO WMS Provider 4.1 invia sempre la BBOX come (longitudine, latitudine). Con WMS 1.3.0 e CRS geografici (EPSG 4000–4999, 6000–6999, 7000–7999) lo standard OGC prevede axis-order inverso (lat, lon), causando un mismatch che produce tiles vuote o errate.
Soluzione implementata: per servizi WMS che espongono CRS geografici, il sistema rileva automaticamente la situazione e usa la versione 1.1.0 (che usa sempre lon/lat indipendentemente dal CRS). La versione negoziata viene memorizzata nel campo wms_version.
12.3 Cache EhCache
Le entry di cache retrieveValidUserWmsLayersForMap e retrieveValidUserShapefileLayersForMap memorizzano i layer validi per mappa. La cache viene invalidata automaticamente ad ogni operazione di insert/update/delete sui layer utente, garantendo che la mappa ricarichi sempre i dati aggiornati.
13. Ambiente di Test
| Voce | Valore |
|---|---|
| URL applicazione Utente Finale | http://192.168.0.225:8090/test_gw48/project/mg_user_layer.html?group=TESTER_GROUP |
| Utente Finale — username | tester |
| Utente Finale — password | Tester0@ |
| URL Webadmin | http://192.168.0.225:8090/test_gw48admin/index.html |
| Webadmin — utente | adminTester |
| Webadmin — password | admin |
| Versione GeoWeb | 4.8.3 |
| Versione MapGuide | 3.1.2 |
14. Script SQL — Data Schema
Script DDL per la creazione delle tabelle applicative (schema dati GeoWeb). Eseguire prima di importare i metadati.
12.1 PostgreSQL — data_script.sql
- data_script_postgres.sql
-- Table: test_gw48data.gwd_mg_user_layer_shapefile -- DROP TABLE IF EXISTS test_gw48data.gwd_mg_user_layer_shapefile; CREATE TABLE IF NOT EXISTS test_gw48data.gwd_mg_user_layer_shapefile ( id_mg_user_layer_shapefile INTEGER NOT NULL, name CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, description CHARACTER VARYING COLLATE pg_catalog."default", gw_map_name CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, file_name CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, file_data bytea NOT NULL, file_c_type CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, is_valid INTEGER NOT NULL DEFAULT 0, is_valid_html CHARACTER VARYING COLLATE pg_catalog."default", validation_message CHARACTER VARYING COLLATE pg_catalog."default", is_visible INTEGER NOT NULL DEFAULT 0, is_shown_in_legend INTEGER NOT NULL DEFAULT 0, layer_filter CHARACTER VARYING COLLATE pg_catalog."default", style_xml_point CHARACTER VARYING COLLATE pg_catalog."default", style_pt_display INTEGER NOT NULL DEFAULT 1, style_pt_allowoverpost INTEGER NOT NULL DEFAULT 0, style_pt_symbol_display INTEGER NOT NULL DEFAULT 1, style_pt_symbol_shape CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_size_context CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_unit CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_width CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_height CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_rotation CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_fill_display INTEGER NOT NULL DEFAULT 1, style_pt_symbol_fill_pattern CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_fill_foregroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_fill_backgroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_edge_display INTEGER NOT NULL DEFAULT 1, style_pt_symbol_edge_linestyle CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_edge_thickness CHARACTER VARYING COLLATE pg_catalog."default", style_pt_symbol_edge_color CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_display INTEGER NOT NULL DEFAULT 0, style_pt_label_unit CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_sizecontext CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_size CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_rotation CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_text CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_foregroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_backgroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_backgroundstyle CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_h_align CHARACTER VARYING COLLATE pg_catalog."default", style_pt_label_v_align CHARACTER VARYING COLLATE pg_catalog."default", style_xml_line CHARACTER VARYING COLLATE pg_catalog."default", style_li_display INTEGER NOT NULL DEFAULT 1, style_li_symbol_display INTEGER NOT NULL DEFAULT 1, style_li_symbol_linestyle CHARACTER VARYING COLLATE pg_catalog."default", style_li_symbol_thickness CHARACTER VARYING COLLATE pg_catalog."default", style_li_symbol_color CHARACTER VARYING COLLATE pg_catalog."default", style_li_symbol_unit CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_display INTEGER NOT NULL DEFAULT 0, style_li_label_unit CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_sizecontext CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_size CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_rotation CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_text CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_foregroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_backgroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_backgroundstyle CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_h_align CHARACTER VARYING COLLATE pg_catalog."default", style_li_label_v_align CHARACTER VARYING COLLATE pg_catalog."default", style_xml_area CHARACTER VARYING COLLATE pg_catalog."default", style_ar_display INTEGER NOT NULL DEFAULT 1, style_ar_fill_display INTEGER NOT NULL DEFAULT 1, style_ar_fill_pattern CHARACTER VARYING COLLATE pg_catalog."default", style_ar_fill_foregroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_ar_fill_backgroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_ar_stroke_display INTEGER NOT NULL DEFAULT 1, style_ar_stroke_linestyle CHARACTER VARYING COLLATE pg_catalog."default", style_ar_stroke_thickness CHARACTER VARYING COLLATE pg_catalog."default", style_ar_stroke_color CHARACTER VARYING COLLATE pg_catalog."default", style_ar_stroke_unit CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_display INTEGER NOT NULL DEFAULT 0, style_ar_label_unit CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_sizecontext CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_size CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_rotation CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_text CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_foregroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_backgroundcolor CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_backgroundstyle CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_h_align CHARACTER VARYING COLLATE pg_catalog."default", style_ar_label_v_align CHARACTER VARYING COLLATE pg_catalog."default", created_at TIMESTAMP WITHOUT TIME zone, created_by CHARACTER VARYING COLLATE pg_catalog."default", updated_at TIMESTAMP WITHOUT TIME zone, updated_by CHARACTER VARYING COLLATE pg_catalog."default", is_start_selected_in_legend INTEGER NOT NULL DEFAULT 0, legend_name CHARACTER VARYING COLLATE pg_catalog."default", CONSTRAINT gwd_mg_user_layer_shapefile_pkey PRIMARY KEY (id_mg_user_layer_shapefile), CONSTRAINT unique_name_layer_shapefile UNIQUE (name) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; ALTER TABLE IF EXISTS test_gw48data.gwd_mg_user_layer_shapefile OWNER TO test_gw48data; -- Table: test_gw48data.gwd_mg_user_layer_wms -- DROP TABLE IF EXISTS test_gw48data.gwd_mg_user_layer_wms; CREATE TABLE IF NOT EXISTS test_gw48data.gwd_mg_user_layer_wms ( id_gwd_mg_user_layer_wms INTEGER NOT NULL, name CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, description CHARACTER VARYING COLLATE pg_catalog."default", gw_map_name CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, base_url CHARACTER VARYING COLLATE pg_catalog."default" NOT NULL, wms_version CHARACTER VARYING COLLATE pg_catalog."default", wms_available_layers CHARACTER VARYING COLLATE pg_catalog."default", wms_layers CHARACTER VARYING COLLATE pg_catalog."default", wms_json_params jsonb, username CHARACTER VARYING COLLATE pg_catalog."default", password CHARACTER VARYING COLLATE pg_catalog."default", is_valid INTEGER NOT NULL DEFAULT 0, is_valid_html CHARACTER VARYING COLLATE pg_catalog."default", validation_message CHARACTER VARYING COLLATE pg_catalog."default", created_at TIMESTAMP WITHOUT TIME zone, created_by CHARACTER VARYING COLLATE pg_catalog."default", updated_at TIMESTAMP WITHOUT TIME zone, updated_by CHARACTER VARYING COLLATE pg_catalog."default", wms_get_capabilities_xml CHARACTER VARYING COLLATE pg_catalog."default", is_visible INTEGER NOT NULL DEFAULT 0, is_shown_in_legend INTEGER NOT NULL DEFAULT 0, is_start_selected_in_legend INTEGER NOT NULL DEFAULT 0, legend_name CHARACTER VARYING COLLATE pg_catalog."default", CONSTRAINT gwd_mg_user_layer_wms_pkey PRIMARY KEY (id_gwd_mg_user_layer_wms), CONSTRAINT unique_name_layer_wms UNIQUE (name) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; ALTER TABLE IF EXISTS test_gw48data.gwd_mg_user_layer_wms OWNER TO test_gw48data;
12.2 Oracle — data_script.sql
- data_script_oracle.sql
-- SV.0026.016 - Layout 2D: Layer Utente WMS + Shapefile -- Oracle DDL -- Redattore: GSC Data: 2026-06-26 -- ============================================================ -- Tabella: GWD_MG_USER_LAYER_SHAPEFILE -- ============================================================ CREATE TABLE GWD_MG_USER_LAYER_SHAPEFILE ( ID_MG_USER_LAYER_SHAPEFILE NUMBER(10) NOT NULL, NAME VARCHAR2(500) NOT NULL, DESCRIPTION VARCHAR2(2000), GW_MAP_NAME VARCHAR2(500) NOT NULL, FILE_NAME VARCHAR2(500) NOT NULL, FILE_DATA BLOB NOT NULL, FILE_C_TYPE VARCHAR2(200) NOT NULL, IS_VALID NUMBER(1) DEFAULT 0 NOT NULL, IS_VALID_HTML VARCHAR2(2000), VALIDATION_MESSAGE VARCHAR2(2000), IS_VISIBLE NUMBER(1) DEFAULT 0 NOT NULL, IS_SHOWN_IN_LEGEND NUMBER(1) DEFAULT 0 NOT NULL, LAYER_FILTER VARCHAR2(4000), STYLE_XML_POINT CLOB, STYLE_PT_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_PT_ALLOWOVERPOST NUMBER(1) DEFAULT 0 NOT NULL, STYLE_PT_SYMBOL_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_PT_SYMBOL_SHAPE VARCHAR2(200), STYLE_PT_SYMBOL_SIZE_CONTEXT VARCHAR2(200), STYLE_PT_SYMBOL_UNIT VARCHAR2(100), STYLE_PT_SYMBOL_WIDTH VARCHAR2(100), STYLE_PT_SYMBOL_HEIGHT VARCHAR2(100), STYLE_PT_SYMBOL_ROTATION VARCHAR2(100), STYLE_PT_SYMBOL_FILL_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_PT_SYMBOL_FILL_PATTERN VARCHAR2(200), STYLE_PT_SYMBOL_FILL_FOREGROUNDCOLOR VARCHAR2(50), STYLE_PT_SYMBOL_FILL_BACKGROUNDCOLOR VARCHAR2(50), STYLE_PT_SYMBOL_EDGE_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_PT_SYMBOL_EDGE_LINESTYLE VARCHAR2(100), STYLE_PT_SYMBOL_EDGE_THICKNESS VARCHAR2(100), STYLE_PT_SYMBOL_EDGE_COLOR VARCHAR2(50), STYLE_PT_LABEL_DISPLAY NUMBER(1) DEFAULT 0 NOT NULL, STYLE_PT_LABEL_UNIT VARCHAR2(100), STYLE_PT_LABEL_SIZECONTEXT VARCHAR2(200), STYLE_PT_LABEL_SIZE VARCHAR2(100), STYLE_PT_LABEL_ROTATION VARCHAR2(100), STYLE_PT_LABEL_TEXT VARCHAR2(500), STYLE_PT_LABEL_FOREGROUNDCOLOR VARCHAR2(50), STYLE_PT_LABEL_BACKGROUNDCOLOR VARCHAR2(50), STYLE_PT_LABEL_BACKGROUNDSTYLE VARCHAR2(100), STYLE_PT_LABEL_H_ALIGN VARCHAR2(50), STYLE_PT_LABEL_V_ALIGN VARCHAR2(50), STYLE_XML_LINE CLOB, STYLE_LI_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_LI_SYMBOL_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_LI_SYMBOL_LINESTYLE VARCHAR2(100), STYLE_LI_SYMBOL_THICKNESS VARCHAR2(100), STYLE_LI_SYMBOL_COLOR VARCHAR2(50), STYLE_LI_SYMBOL_UNIT VARCHAR2(100), STYLE_LI_LABEL_DISPLAY NUMBER(1) DEFAULT 0 NOT NULL, STYLE_LI_LABEL_UNIT VARCHAR2(100), STYLE_LI_LABEL_SIZECONTEXT VARCHAR2(200), STYLE_LI_LABEL_SIZE VARCHAR2(100), STYLE_LI_LABEL_ROTATION VARCHAR2(100), STYLE_LI_LABEL_TEXT VARCHAR2(500), STYLE_LI_LABEL_FOREGROUNDCOLOR VARCHAR2(50), STYLE_LI_LABEL_BACKGROUNDCOLOR VARCHAR2(50), STYLE_LI_LABEL_BACKGROUNDSTYLE VARCHAR2(100), STYLE_LI_LABEL_H_ALIGN VARCHAR2(50), STYLE_LI_LABEL_V_ALIGN VARCHAR2(50), STYLE_XML_AREA CLOB, STYLE_AR_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_AR_FILL_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_AR_FILL_PATTERN VARCHAR2(200), STYLE_AR_FILL_FOREGROUNDCOLOR VARCHAR2(50), STYLE_AR_FILL_BACKGROUNDCOLOR VARCHAR2(50), STYLE_AR_STROKE_DISPLAY NUMBER(1) DEFAULT 1 NOT NULL, STYLE_AR_STROKE_LINESTYLE VARCHAR2(100), STYLE_AR_STROKE_THICKNESS VARCHAR2(100), STYLE_AR_STROKE_COLOR VARCHAR2(50), STYLE_AR_STROKE_UNIT VARCHAR2(100), STYLE_AR_LABEL_DISPLAY NUMBER(1) DEFAULT 0 NOT NULL, STYLE_AR_LABEL_UNIT VARCHAR2(100), STYLE_AR_LABEL_SIZECONTEXT VARCHAR2(200), STYLE_AR_LABEL_SIZE VARCHAR2(100), STYLE_AR_LABEL_ROTATION VARCHAR2(100), STYLE_AR_LABEL_TEXT VARCHAR2(500), STYLE_AR_LABEL_FOREGROUNDCOLOR VARCHAR2(50), STYLE_AR_LABEL_BACKGROUNDCOLOR VARCHAR2(50), STYLE_AR_LABEL_BACKGROUNDSTYLE VARCHAR2(100), STYLE_AR_LABEL_H_ALIGN VARCHAR2(50), STYLE_AR_LABEL_V_ALIGN VARCHAR2(50), CREATED_AT TIMESTAMP, CREATED_BY VARCHAR2(200), UPDATED_AT TIMESTAMP, UPDATED_BY VARCHAR2(200), IS_START_SELECTED_IN_LEGEND NUMBER(1) DEFAULT 0 NOT NULL, LEGEND_NAME VARCHAR2(500), CONSTRAINT GWD_MG_USER_LAYER_SHAPEFILE_PK PRIMARY KEY (ID_MG_USER_LAYER_SHAPEFILE), CONSTRAINT UNIQUE_NAME_LAYER_SHAPEFILE UNIQUE (NAME) ); -- ============================================================ -- Tabella: GWD_MG_USER_LAYER_WMS -- ============================================================ CREATE TABLE GWD_MG_USER_LAYER_WMS ( ID_GWD_MG_USER_LAYER_WMS NUMBER(10) NOT NULL, NAME VARCHAR2(500) NOT NULL, DESCRIPTION VARCHAR2(2000), GW_MAP_NAME VARCHAR2(500) NOT NULL, BASE_URL VARCHAR2(2000) NOT NULL, WMS_VERSION VARCHAR2(20), WMS_AVAILABLE_LAYERS CLOB, WMS_LAYERS VARCHAR2(2000), WMS_JSON_PARAMS CLOB, USERNAME VARCHAR2(200), PASSWORD VARCHAR2(200), IS_VALID NUMBER(1) DEFAULT 0 NOT NULL, IS_VALID_HTML VARCHAR2(2000), VALIDATION_MESSAGE VARCHAR2(2000), CREATED_AT TIMESTAMP, CREATED_BY VARCHAR2(200), UPDATED_AT TIMESTAMP, UPDATED_BY VARCHAR2(200), WMS_GET_CAPABILITIES_XML CLOB, IS_VISIBLE NUMBER(1) DEFAULT 0 NOT NULL, IS_SHOWN_IN_LEGEND NUMBER(1) DEFAULT 0 NOT NULL, IS_START_SELECTED_IN_LEGEND NUMBER(1) DEFAULT 0 NOT NULL, LEGEND_NAME VARCHAR2(500), CONSTRAINT GWD_MG_USER_LAYER_WMS_PK PRIMARY KEY (ID_GWD_MG_USER_LAYER_WMS), CONSTRAINT UNIQUE_NAME_LAYER_WMS UNIQUE (NAME) );
12.3 SQL Server — data_script.sql
- data_script_mssqlserver.sql
-- SV.0026.016 - Layout 2D: Layer Utente WMS + Shapefile -- SQL Server DDL -- Redattore: GSC Data: 2026-06-26 -- ============================================================ -- Tabella: GWD_MG_USER_LAYER_SHAPEFILE -- ============================================================ IF OBJECT_ID(N'dbo.GWD_MG_USER_LAYER_SHAPEFILE', N'U') IS NULL BEGIN CREATE TABLE dbo.GWD_MG_USER_LAYER_SHAPEFILE ( ID_MG_USER_LAYER_SHAPEFILE INT NOT NULL, NAME NVARCHAR(500) NOT NULL, DESCRIPTION NVARCHAR(2000), GW_MAP_NAME NVARCHAR(500) NOT NULL, FILE_NAME NVARCHAR(500) NOT NULL, FILE_DATA VARBINARY(MAX) NOT NULL, FILE_C_TYPE NVARCHAR(200) NOT NULL, IS_VALID INT NOT NULL DEFAULT 0, IS_VALID_HTML NVARCHAR(2000), VALIDATION_MESSAGE NVARCHAR(2000), IS_VISIBLE INT NOT NULL DEFAULT 0, IS_SHOWN_IN_LEGEND INT NOT NULL DEFAULT 0, LAYER_FILTER NVARCHAR(4000), STYLE_XML_POINT NVARCHAR(MAX), STYLE_PT_DISPLAY INT NOT NULL DEFAULT 1, STYLE_PT_ALLOWOVERPOST INT NOT NULL DEFAULT 0, STYLE_PT_SYMBOL_DISPLAY INT NOT NULL DEFAULT 1, STYLE_PT_SYMBOL_SHAPE NVARCHAR(200), STYLE_PT_SYMBOL_SIZE_CONTEXT NVARCHAR(200), STYLE_PT_SYMBOL_UNIT NVARCHAR(100), STYLE_PT_SYMBOL_WIDTH NVARCHAR(100), STYLE_PT_SYMBOL_HEIGHT NVARCHAR(100), STYLE_PT_SYMBOL_ROTATION NVARCHAR(100), STYLE_PT_SYMBOL_FILL_DISPLAY INT NOT NULL DEFAULT 1, STYLE_PT_SYMBOL_FILL_PATTERN NVARCHAR(200), STYLE_PT_SYMBOL_FILL_FOREGROUNDCOLOR NVARCHAR(50), STYLE_PT_SYMBOL_FILL_BACKGROUNDCOLOR NVARCHAR(50), STYLE_PT_SYMBOL_EDGE_DISPLAY INT NOT NULL DEFAULT 1, STYLE_PT_SYMBOL_EDGE_LINESTYLE NVARCHAR(100), STYLE_PT_SYMBOL_EDGE_THICKNESS NVARCHAR(100), STYLE_PT_SYMBOL_EDGE_COLOR NVARCHAR(50), STYLE_PT_LABEL_DISPLAY INT NOT NULL DEFAULT 0, STYLE_PT_LABEL_UNIT NVARCHAR(100), STYLE_PT_LABEL_SIZECONTEXT NVARCHAR(200), STYLE_PT_LABEL_SIZE NVARCHAR(100), STYLE_PT_LABEL_ROTATION NVARCHAR(100), STYLE_PT_LABEL_TEXT NVARCHAR(500), STYLE_PT_LABEL_FOREGROUNDCOLOR NVARCHAR(50), STYLE_PT_LABEL_BACKGROUNDCOLOR NVARCHAR(50), STYLE_PT_LABEL_BACKGROUNDSTYLE NVARCHAR(100), STYLE_PT_LABEL_H_ALIGN NVARCHAR(50), STYLE_PT_LABEL_V_ALIGN NVARCHAR(50), STYLE_XML_LINE NVARCHAR(MAX), STYLE_LI_DISPLAY INT NOT NULL DEFAULT 1, STYLE_LI_SYMBOL_DISPLAY INT NOT NULL DEFAULT 1, STYLE_LI_SYMBOL_LINESTYLE NVARCHAR(100), STYLE_LI_SYMBOL_THICKNESS NVARCHAR(100), STYLE_LI_SYMBOL_COLOR NVARCHAR(50), STYLE_LI_SYMBOL_UNIT NVARCHAR(100), STYLE_LI_LABEL_DISPLAY INT NOT NULL DEFAULT 0, STYLE_LI_LABEL_UNIT NVARCHAR(100), STYLE_LI_LABEL_SIZECONTEXT NVARCHAR(200), STYLE_LI_LABEL_SIZE NVARCHAR(100), STYLE_LI_LABEL_ROTATION NVARCHAR(100), STYLE_LI_LABEL_TEXT NVARCHAR(500), STYLE_LI_LABEL_FOREGROUNDCOLOR NVARCHAR(50), STYLE_LI_LABEL_BACKGROUNDCOLOR NVARCHAR(50), STYLE_LI_LABEL_BACKGROUNDSTYLE NVARCHAR(100), STYLE_LI_LABEL_H_ALIGN NVARCHAR(50), STYLE_LI_LABEL_V_ALIGN NVARCHAR(50), STYLE_XML_AREA NVARCHAR(MAX), STYLE_AR_DISPLAY INT NOT NULL DEFAULT 1, STYLE_AR_FILL_DISPLAY INT NOT NULL DEFAULT 1, STYLE_AR_FILL_PATTERN NVARCHAR(200), STYLE_AR_FILL_FOREGROUNDCOLOR NVARCHAR(50), STYLE_AR_FILL_BACKGROUNDCOLOR NVARCHAR(50), STYLE_AR_STROKE_DISPLAY INT NOT NULL DEFAULT 1, STYLE_AR_STROKE_LINESTYLE NVARCHAR(100), STYLE_AR_STROKE_THICKNESS NVARCHAR(100), STYLE_AR_STROKE_COLOR NVARCHAR(50), STYLE_AR_STROKE_UNIT NVARCHAR(100), STYLE_AR_LABEL_DISPLAY INT NOT NULL DEFAULT 0, STYLE_AR_LABEL_UNIT NVARCHAR(100), STYLE_AR_LABEL_SIZECONTEXT NVARCHAR(200), STYLE_AR_LABEL_SIZE NVARCHAR(100), STYLE_AR_LABEL_ROTATION NVARCHAR(100), STYLE_AR_LABEL_TEXT NVARCHAR(500), STYLE_AR_LABEL_FOREGROUNDCOLOR NVARCHAR(50), STYLE_AR_LABEL_BACKGROUNDCOLOR NVARCHAR(50), STYLE_AR_LABEL_BACKGROUNDSTYLE NVARCHAR(100), STYLE_AR_LABEL_H_ALIGN NVARCHAR(50), STYLE_AR_LABEL_V_ALIGN NVARCHAR(50), CREATED_AT DATETIME2, CREATED_BY NVARCHAR(200), UPDATED_AT DATETIME2, UPDATED_BY NVARCHAR(200), IS_START_SELECTED_IN_LEGEND INT NOT NULL DEFAULT 0, LEGEND_NAME NVARCHAR(500), CONSTRAINT GWD_MG_USER_LAYER_SHAPEFILE_PK PRIMARY KEY (ID_MG_USER_LAYER_SHAPEFILE), CONSTRAINT UNIQUE_NAME_LAYER_SHAPEFILE UNIQUE (NAME) ); END GO -- ============================================================ -- Tabella: GWD_MG_USER_LAYER_WMS -- ============================================================ IF OBJECT_ID(N'dbo.GWD_MG_USER_LAYER_WMS', N'U') IS NULL BEGIN CREATE TABLE dbo.GWD_MG_USER_LAYER_WMS ( ID_GWD_MG_USER_LAYER_WMS INT NOT NULL, NAME NVARCHAR(500) NOT NULL, DESCRIPTION NVARCHAR(2000), GW_MAP_NAME NVARCHAR(500) NOT NULL, BASE_URL NVARCHAR(2000) NOT NULL, WMS_VERSION NVARCHAR(20), WMS_AVAILABLE_LAYERS NVARCHAR(MAX), WMS_LAYERS NVARCHAR(2000), WMS_JSON_PARAMS NVARCHAR(MAX), USERNAME NVARCHAR(200), PASSWORD NVARCHAR(200), IS_VALID INT NOT NULL DEFAULT 0, IS_VALID_HTML NVARCHAR(2000), VALIDATION_MESSAGE NVARCHAR(2000), CREATED_AT DATETIME2, CREATED_BY NVARCHAR(200), UPDATED_AT DATETIME2, UPDATED_BY NVARCHAR(200), WMS_GET_CAPABILITIES_XML NVARCHAR(MAX), IS_VISIBLE INT NOT NULL DEFAULT 0, IS_SHOWN_IN_LEGEND INT NOT NULL DEFAULT 0, IS_START_SELECTED_IN_LEGEND INT NOT NULL DEFAULT 0, LEGEND_NAME NVARCHAR(500), CONSTRAINT GWD_MG_USER_LAYER_WMS_PK PRIMARY KEY (ID_GWD_MG_USER_LAYER_WMS), CONSTRAINT UNIQUE_NAME_LAYER_WMS UNIQUE (NAME) ); END GO
15. Script SQL — Metadata Schema
Script DDL per l'aggiornamento dello schema metadati GeoWeb (tabelle gwm_*). Eseguire dopo il data_script e prima dell'importazione dei metadati GeoWeb.
Il campo layout della tabella gwm_detail_layouts viene ampliato a tipo illimitato (TEXT / CLOB / NVARCHAR(MAX)) per supportare definizioni di layout di grandi dimensioni prodotte dalla configurazione dei layer utente.
13.1 PostgreSQL — metadata_script.sql
- metadata_script_postgres.sql
-- SV.0026.016 - Layout 2D: Layer Utente WMS + Shapefile -- PostgreSQL -- script metadati (schema gwm) -- Redattore: GSC Data: 2026-06-26 -- -- Il campo layout della tabella gwm_detail_layouts viene ampliato -- a TEXT (lunghezza illimitata). -- PostgreSQL: ALTER COLUMN ... TYPE TEXT non richiede migrazione dati -- (VARCHAR e TEXT sono internamente equivalenti, l'operazione e' istantanea). -- ------------------------------------------------------------ ALTER TABLE test_gw48metadata.gwm_detail_layouts ALTER COLUMN layout TYPE TEXT;
13.2 Oracle — metadata_script.sql
- metadata_script_oracle.sql
-- SV.0026.016 - Layout 2D: Layer Utente WMS + Shapefile -- Oracle -- script metadati (schema gwm) -- Redattore: GSC Data: 2026-06-26 -- -- Il campo LAYOUT della tabella GWM_DETAIL_LAYOUTS viene migrato a CLOB. -- NOTA: Oracle non consente ALTER TABLE ... MODIFY diretto da VARCHAR2 a CLOB. -- E' necessaria la migrazione in 4 step senza perdita di dati. -- ------------------------------------------------------------ -- Step 1: aggiungo colonna CLOB temporanea ALTER TABLE GWM_DETAIL_LAYOUTS ADD (LAYOUT_TMP CLOB); -- Step 2: copio i dati nella nuova colonna UPDATE GWM_DETAIL_LAYOUTS SET LAYOUT_TMP = LAYOUT; COMMIT; -- Step 3: elimino la colonna originale VARCHAR2 ALTER TABLE GWM_DETAIL_LAYOUTS DROP COLUMN LAYOUT; -- Step 4: rinomino la colonna temporanea al nome originale ALTER TABLE GWM_DETAIL_LAYOUTS RENAME COLUMN LAYOUT_TMP TO LAYOUT;
13.3 SQL Server — metadata_script.sql
- metadata_script_mssqlserver.sql
-- SV.0026.016 - Layout 2D: Layer Utente WMS + Shapefile -- SQL Server -- script metadati (schema gwm) -- Redattore: GSC Data: 2026-06-26 -- -- Il campo [layout] della tabella [gwm_detail_layouts] viene ampliato -- a NVARCHAR(MAX) per supportare definizioni di layout di grandi dimensioni. -- ------------------------------------------------------------ ALTER TABLE test_gw48metadata.[gwm_detail_layouts] ALTER COLUMN [layout] NVARCHAR(MAX) NULL;
16. Installazione
Eseguire i passi nell'ordine indicato:
- Eseguire
DR/script/<dbms>/data_script.sql— crea le tabelle applicative - Eseguire
DR/script/<dbms>/metadata_script.sql— aggiorna lo schema metadati GeoWeb - Importare i file XML da
DR/metadata/tramite il Webadmin GeoWeb (Import/Export metadati):gw_exp.classes gwd_mg_user_layer_shapefile+gwd_mg_user_layer_wms.xmlgw_exp.projects mg_user_layer.xmlgw_exp.themes MAPGUIDE USER LAYER E SCENARIO.xml
- Verificare le entry EhCache in
ehcache.xml:retrieveValidUserWmsLayersForMap,retrieveValidUserShapefileLayersForMap - Verificare nel Webadmin GeoWeb che i trigger
MapGuideUserLayerShapeFileTriggereMapGuideUserLayerWMSTriggersiano associati alle rispettive classi












