Differenze tra le versioni di "Utilizzare in una MapView mappe fornite secondo lo standard WMS (Web Map Service)"

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
  
 
E' bene ricordare che, anche se sono servizi liberi, è opportuno riconoscere l'autore delle informazioni con la proprietà Copyright.
 
E' bene ricordare che, anche se sono servizi liberi, è opportuno riconoscere l'autore delle informazioni con la proprietà Copyright.
 +
 +
 +
===Procedura per impostare correttamente il codice per visualizzare le mappe da un servizio WMS===
 +
Innanzitutto bisogna individuare un servizio WMS che mette a disposizione mappe (che solitamente rappresentano porzioni di territorio).
 +
<BR>Qui prenderemo - come esempio - le mappe relative alla Carta Topografica d'Italia in scala 1:25.000, edita dall'I.G.M., e messe a disposizione del ''Servizio Geologico d'Italia'' dell'I.S.P.R.A., e raggiungibile al seguente indirizzo web:
 +
http&#058;//portalesgi.isprambiente.it/en/categorie-servizi-wms
 +
Cliccheremo all'interno della pagina del ''Geoportale'' dell'I.S.P.R.A. sul collegamento "Raster Data", raggiungibile anche al seguente indirizzo web:
 +
http&#058;//portalesgi.isprambiente.it/lista-servizi-wms/Raster%20Data
 +
Cercheremo la mappa prescelta (in questo nostro esempio sarà la mappa 1:25000 della Regione Lazio, che si troverà nella lista al di sotto della voce "''Raster Topografia IGM 1:25.000''".
 +
<BR>E' fondamentale visualizzare e prendere cognizione delle "capacità" della mappa da utilizzare. Pertanto nel nostro esempio cliccheremo sul collegamento "''GetCapabilities''" sulla destra della riga relativa alla mappa della Regione Lazio.
 +
<BR>All'interno della pagina viene mostrato un codice in linguaggio "xml".
 +
<BR>Innanzitutto si cercherà l'URL del ServerMap, che si troverà all'interno dell'informazione individuata dall'etichetta <FONT Color=#B22222><OnlineResource ....></font>:
 +
http://sgi2.isprambiente.it/arcgis/services/raster/igm25k_lazio_wgs/ImageServer/WMSServer
 +
Si cercherà l'etichetta <Layer>, che contiene le informazioni dei vari strati, e in questo caso si trova un livello con etichetta <Title>:
 +
<Title>igm25k_lazio_wgs</Title>
 +
, con etichetta <Title>, ma senza l'etichetta <Name>) che contiene altri livelli, questi sì con etichetta Name>: "AU.Administrativeunit", "GN.Geographicalnames" e "PS.Protectedsite".
 +
Nella successiva etichetta <Abstract> è riportata una breve sintesi del contenuto:
 +
<Abstract>Carta topografia regione lazio scala 1:25.000</Abstract>
 +
  
  
Riga 47: Riga 66:
 
   End With
 
   End With
 
    
 
    
   With tile = mv.Map.AddTile("Italia Lazio", "http&058;//sgi2.isprambiente.it/arcgis/services/raster/igm25k_lazio_wgs/ImageServer/WMSServer?")
+
   With tile = mv.Map.AddTile("Italia Lazio", "http&#058;//sgi2.isprambiente.it/arcgis/services/raster/igm25k_lazio_wgs/ImageServer/WMSServer?")
 
     .MaxBounds = MapBounds(MapPoint(40.781553, 11.449740), MapPoint(42.921401, 14.086235))
 
     .MaxBounds = MapBounds(MapPoint(40.781553, 11.449740), MapPoint(42.921401, 14.086235))
 
     .UseWebMapService = True
 
     .UseWebMapService = True
     .Copyright = "I.S.P.R.A. - Servizio Geologico d'Italia - http&058;//portalesgi.isprambiente.it/it"
+
     .Copyright = "I.S.P.R.A. - Servizio Geologico d'Italia - http&#058;//portalesgi.isprambiente.it/it"
 
     .WMSArgs!service = "WMS"
 
     .WMSArgs!service = "WMS"
 
     .WMSArgs!request = "GetMap"
 
     .WMSArgs!request = "GetMap"

Versione delle 15:31, 29 apr 2020

Come è noto, il Componente gb.map di Gambas è in grado di ottenere e gestire mappe predefinite di servizi WMTS (Web Map Tile Service) che utilizzano il sistema di coordinate EPSG:4326.


Oltre ai servizi WMTS, il componente può anche ottenere dati da servizi WMS (Web Map Service), ma ciò richiede più parametrizzazione.
Esempi di questi casi sono:

............


I servizi WMTS e WMS sono definiti dall'Open Geospatial Consortium (OGC) ed è stabilito che per il WMTS, il livello di zoom 1 è un mosaico di 2x2 tessere, il livello 2 di 4x4, e così via, ed è quello che contempla il Componente gb.map. Ma definisce anche un'altra normativa in cui il livello 1 di zoom è un mosaico di 4x2 tessere, il livello 2 di 8x4 tessere, e così via. Alcuni server hanno questa seconda normativa e falliscono nel loro uso con il Componente gb.map.

E' bene ricordare che, anche se sono servizi liberi, è opportuno riconoscere l'autore delle informazioni con la proprietà Copyright.


Procedura per impostare correttamente il codice per visualizzare le mappe da un servizio WMS

Innanzitutto bisogna individuare un servizio WMS che mette a disposizione mappe (che solitamente rappresentano porzioni di territorio).
Qui prenderemo - come esempio - le mappe relative alla Carta Topografica d'Italia in scala 1:25.000, edita dall'I.G.M., e messe a disposizione del Servizio Geologico d'Italia dell'I.S.P.R.A., e raggiungibile al seguente indirizzo web:

http://portalesgi.isprambiente.it/en/categorie-servizi-wms

Cliccheremo all'interno della pagina del Geoportale dell'I.S.P.R.A. sul collegamento "Raster Data", raggiungibile anche al seguente indirizzo web:

http://portalesgi.isprambiente.it/lista-servizi-wms/Raster%20Data

Cercheremo la mappa prescelta (in questo nostro esempio sarà la mappa 1:25000 della Regione Lazio, che si troverà nella lista al di sotto della voce "Raster Topografia IGM 1:25.000".
E' fondamentale visualizzare e prendere cognizione delle "capacità" della mappa da utilizzare. Pertanto nel nostro esempio cliccheremo sul collegamento "GetCapabilities" sulla destra della riga relativa alla mappa della Regione Lazio.
All'interno della pagina viene mostrato un codice in linguaggio "xml".
Innanzitutto si cercherà l'URL del ServerMap, che si troverà all'interno dell'informazione individuata dall'etichetta <OnlineResource ....>:

http://sgi2.isprambiente.it/arcgis/services/raster/igm25k_lazio_wgs/ImageServer/WMSServer

Si cercherà l'etichetta <Layer>, che contiene le informazioni dei vari strati, e in questo caso si trova un livello con etichetta <Title>:

<Title>igm25k_lazio_wgs</Title>

, con etichetta <Title>, ma senza l'etichetta <Name>) che contiene altri livelli, questi sì con etichetta Name>: "AU.Administrativeunit", "GN.Geographicalnames" e "PS.Protectedsite". Nella successiva etichetta <Abstract> è riportata una breve sintesi del contenuto:

<Abstract>Carta topografia regione lazio scala 1:25.000</Abstract>



Usare le mappe topografiche IGM 1:25000 di ciascuna Regione, fornite dal Servizio Geologico d'Italia dell'I.S.P.R.A.

Mostriamo un esempio pratico, usando le carte topografiche 1:25000, edite dall'I.G.M. e messe a disposizione dal Servizio Geologico d'Italia dell'I.S.P.R.A., relative all'intero territorio della Regione Lazio:

Private mv As MapView
Private mn1 As Menu
Private mn2 As Menu


Public Sub Form_Open()
 
 Dim tile As _MapTile
 
 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
 End With
 
 With mn1 = New Menu(Me)
   .Caption = "Lat. "
 End With
 With mn2 = New Menu(Me)
   .Caption = " Lon. "
 End With
 
 With mv = New MapView(Me) As "MapView1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H - (Me.H * 0.05)
   .Background = Color.Violet
   .Map.Zoom = 14
   .Map.Center = MapPoint(41.890250, 12.492295)
 End With
 
 With tile = mv.Map.AddTile("Italia Lazio", "http://sgi2.isprambiente.it/arcgis/services/raster/igm25k_lazio_wgs/ImageServer/WMSServer?")
   .MaxBounds = MapBounds(MapPoint(40.781553, 11.449740), MapPoint(42.921401, 14.086235))
   .UseWebMapService = True
   .Copyright = "I.S.P.R.A. - Servizio Geologico d'Italia - http://portalesgi.isprambiente.it/it"
   .WMSArgs!service = "WMS"
   .WMSArgs!request = "GetMap"
   .WMSArgs!version = "1.3.0"
   .WMSArgs!layers = "igm25k_lazio_wgs"
   .WMSArgs!crs = "EPSG:4326"
   .WMSArgs!bbox = "{lat2},{lon},{lat},{lon2}"
   .WMSArgs!format = "image/png"
   .WMSArgs!width = 256
   .WMSArgs!height = 256
 End With
 
End
 

Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
' Otteniamo le coordinate geografiche del punto della carta topografica sul quale si è cliccato con il mouse:
 mn1.Caption = "Lat. " & CStr(mv.Map.PixelToMapPointRel(pt).Lat)
 mn2.Caption = " Lon. " & CStr(mv.Map.PixelToMapPointRel(pt).Lon)
  
End


Note

Pagina in costruzione !