Aiuto   |   Contattaci   |  Mappa del sito   |     

        

 

 

Ricerca

 

cerca

   
 
 
 

Informazioni

Demo

Varie

Siti Preferiti

Accesso Riservato

 

Traduzione manuale del programmatore - Geomedia Web Map©
(il contenuto di tali appunti non costituisce un manuale completo di Geomedia Web Map© -
per la cui cosultazione del quale si rimanda alla documentazione originale, tale traduzione può essere di aiuto per i programmatori, ma non vuol costituire in alcun modo la sostituzione della documentazione originale.)

  

Giuda del Programmatore

Il programma GeoMedia WEB  map genera e distribuisce le mappe attraverso il WEB. 
Per fare questo, il prodotto funziona con un processo “Map Server  Manager” sul server e rinvia un’oggetto gestibile attraverso una pagina ASP (oggetto di MapServerManager).
L'oggetto di MapServerManager restituisce un riferimento ad un Activex (un oggetto  MapServer) su un altro processo. 
Questo processo è denominato processo Map Server. 
L'oggetto di MapServer fornisce la funzionalità per la definizione e la generazione della mappa. 
Il file della mappa prodotto tramite Map Server è in formato Active Computer Graphics Metafile (ACGM o ActiveCGM), in formato JPEG (JPG), o png come specificato dall’implementazione che si vuole realizzare. 
Il MapServer scrive questo file nella directory di cache  (definito da IIS e specificata dall’amministratore).  È trasmesso al client dalla cache come URL definito nel HTML d'uscita. 
Inoltre, il MapServer facoltativamente genera un file Map Server Status (MSS) e lo scrive nella cache.
Questo file contiene la caratteristica, il collegamento e le informazioni di visualizzazione da usare nella mappa. 
Il file di MSS può essere ricaricato da Map server ed essere riutilizzato.  Dal lato del client, un controllo di ActiveCGM o un plug-in visualizza il file della mappa.  Se l’impostazione del file di uscita è ActiveCGM, l'oggetto fornisce i comandi (come lo zoom) e altre funzioni programmabili. 
Le funzioni programmabili sono realizzate lato client con linguaggio JavaScript. 
Una guida fornisce le informazioni per la programmazione dell'oggetto di ActiveCGM. 
 

Requisiti preliminari

prima che possiate generare e distribuire pubblicazioni con Geomedia Web Map, dovete fare quanto segue: 
Installare e configurare Internet Information Server® (IIS) di Microsoft sul server. 
Configurare e abilitare le directory contenenti i progetti WEB da pubblicare.
Installare e configurare il prodotto sul server.  Inclusa la configurazione della virtual  chace directory dell’applicazione di IIS e i log-on dei account di Map Server.
Configurare i permessi ed gli accessi sulle fonti di dati (ove necessario) per permettere i collegamenti attraverso l’applicazione.
 

Il workflow di base

Il workflow di base per la creazione di una mappa è il seguente:
·        Utilizzo di Map Server.
·        Assegnazione del sistema di coordinate.
·        Collegando ad un database.
·        Definizione degli insiemi di feature.
·        Definizione delle regole di pubblicazione per gli insiemi di feature. 
·        Determinazione dell’ intervallo per la mappa da generare. 
·        Generazione della mappa.
 
 
 

Utilizzo di Map Server

La restituzione dell’oggetto Map Server  richiede due oggetti;  uno Map Server Manager e l'altro per il processo Map Server. 
L'oggetto Map Server Manager è creabile usando il metodo di IIS Server.CreateObject.
Dopo la generazione dell'oggetto Map Server Manager, l'oggetto di MapServer è restituito con il metodo MapServerManager.MapServer
Nota:  Per la restituzione dell’oggetto MapServer, dev’esserci al minimo un processo Map Server disponibile, se l’oggetto Map Server non è disponibile, il processo Map Server Manager aspetta il tempo prestabilito affichè sia disponibile. 
Questa durata massima (time out) è impostabile tramite il modulo GeoMedia Web Map Administrator
Un processo Map Server mantiene le informazioni sull'ultima mappa generata dal server.
Ciò include le informazioni della oggetti e del collegamento. 
Il metodo Clear rimuove le informazioni degli oggetti se non si desidera riutilizzarli. 
E’ necessario usare il metodo DataSources.Remove per rimuovere e chiudete un collegamento. 
 
Il seguente esempio ottiene un oggetto MapServer.  L'esempio elimina le informazioni dell’ultima generazione. 
La stringa vuota ("") usata nel metodo di MapServer dice all'oggetto di MapServerManager di non cercare un processo Map Server che contenga un MSS specifico.
Invece, gli dice di restituire il prossimo processo Map Server disponibile.
 
HTML>
<HEAD>
</HEAD>
<BODY>
<%
   Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
   Set objMS = objSesMgr.MapServer("")
   objMS.Clear
%>
</BODY>
</HTML>
 
 
Restituzione di un Map Server specifico
In alcuni casi si puo aver bisogno di ottenere un Map Server con le informazioni da una mappa precedentemente generata.  Per esempio, un client può zoomare e, così, richiedere le stesse feature e collegamenti precedentemente utilizzati. 
Utilizzare un Map Server specifico ottimizza il tempo di rigenerazione della mappa perché il preload di dati del collegamento e delle features sono già stati eseguito dal Map Server.  Ottenere uno specifico Map Server richiede che, Map Server che originalmente ha generato la mappa sia disponibile e non sia stato riutilizzato.
Per esempio, se ci sono due Map Server attivi e nessun’altra richiesta è fatta per i Map Server (tranne la vostra), il Map Server Manager si alterna fra i due Map Server ad ogni richiesta. 
Tuttavia, se è richiesto Map Server specifico, il Map Server Manager restituisce lo specifico Map Server. 
Per ottenere uno specifico Map Server, basta fornire il nome del map file temporaneo come argomento al metodo MapServer. 
Questi file temporanei sono file Map Server Status (MSS) ed hanno un'estensione .mss.  L'oggetto di MapServer genera un file MSS per ogni mappa ed immagazzina la posizione ed il nome della file nella relativa proprietà dell’MSS. 
Questi files risiedono nella cache directory del server.
Tipicamente, si salva il nome del file MSS ed il percorso in una variabile e quindi si passa tale variabile al metodo di MapServerManager.MapServer.
 Importante: Non usare il metodo Clear su uno specifico Map Server
 
Il seguente esempio richiede uno specifico  Map Server.  L'esempio presuppone  che la variabile locale ASP (strMSSFile) contenga il nome del file MSS per una mappa precedentemente generata:
 
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Dim objSesMgr, objMS
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer(strMSSFile)
%>
</BODY>
</HTML>
 
 
Ottenere la restituzione di un MapServer specifico  dipende da quanto segue:
  • Traffico corrente del sito.  Se il numero di richieste da quando la mappa voluta è stata generata eccede o è uguale al numero di MapServer funzionanti, le informazioni salvate temporaneamente  da MapServer sono sostituite.
  • Il numero di MapServer disponibili.  L'aumento del numero di MapServer disponibili aumenta le probabilità che il MapServer voluto sia ancora disponibile.  Il numero di MapServer funzionanti dipende dal numero massimo di MapServer autorizzati (2, 12, o 96) e dal numero configurato per funzionare contemporaneamente (configurato tramite il modulo di Amministrazione). 
  • La durata da quando il client ha utilizzato l'ultima volta il MapServer.  Il MapServer richiede un file provvisorio della mappa dalla directory di cache.  Tuttavia, il MapServer Manager elimina i files dalla directory di cache ad un intervallo specificato (tipicamente, 25 minuti).  Questo intervallo è impostabile tramite il modulo di Amminstrazione. 
 
 
Se nessuna di queste circostanze accadono, il metodo MapServer restituisce il successivo MapServer disponibile.
 
 
Specifica del formato di uscita
Può essere uno di tre tipi.  Il primo tipo è il formato ActiveCGM (ACGM), il secondo è il formato JPEG ed il terzo è il formato png.  La proprietà MapServer.OutputType determina il formato d’uscita della mappa. Le mappe  che escono in formato png e JPEG sono mappe raster. 
Non processano interattività, azioni, o manipolazioni  lato client come il formato ActiveCGM.  Tipicamente, la disposizione del programma è ActiveCGM.  Tuttavia, è possibile rilevare il browser del client e fornire mappe in formato png o JPEG per i browsers che non supportano formato ActiveCGM.
 
 
 
 
L'assegnazione del sistema di coordinate
GeoMedia Web Map richiede una definizione di sistema di coordinate definire per le mappe.  Ciò è fatta assegnando una lima di sistema coordinata all'assistente del programma.  Questo file si può creare e configurare con il programma di utilità per la definizione del sistema di coordinate fornito con programma GeoMedia Web Map. 
Il metodo di MapServer.SetCoordinateSystem applica la definizione di sistema coordinate alla mappa.  Il seguente esempio assegna una definizione di sistema di coordinate: 
 
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Dim objSesMgr, objMS
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear

  objMS.SetCoordinateSystem "C:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
%>
</BODY>
</HTML>
 
 
 
Importante - il sistema di coordinate impostato con il metodo SetCoordinateSystem serve per la visualizzazione degli oggetti nella mappa.  Applica le trasformazioni ai dati della geometria degli oggetti.  Non viene usato il sistema di coordinate dalla fonte di dati. 
Quindi, MapServer deve individuare ed identificare il sistema di coordinate prima che la fonte dati faccia un collegamento.  Durante l’accesso di alcune fonti dati espongono le informazioni del sistema di coordinate all'interno.  Tuttavia, da altre fonti di dati, quale un progetto MGE, si estraggono le informazioni del sistema di coordinate dal file di disegno DGN. 
Ci si può riferire ai sottocapitolo che tratta il collegamento di fonte di dati per le informazioni sull'individuazione dei sistemi di coordinate. 
Nota:  MapServer esamina il file del sistema di coordinate quando ASP chiama il metodo SetCoordinateSystem. 
Se il nome del file non è cambiato, i parametri del sistema di coordinate non vengono ricaricati.  Di conseguenza, se si cambia o modifica qualsiasi configurazione nel CSF attualmente specificato, dovete fermare e far ripartire MapServer oppure si devono cambiare il nome del CSF e specificare nell’ASP di usare il nuovo nome.
 
Informazioni supplementari sui Sistemi di Coordinate
Ulteriori informazioni sulle impostazioni dei sistemi di coordinate possono essere trovate alle seguenti posizioni nella guida Getting Started: 
Tratta la modifica dei sistemi di coordinate basata su differenti sistemi di riferimento Geodetici e tratta la configurazione del file autodt.ini. 
Visualizzazione dei dati senza Sistema di Coordinate
fornisce le istruzioni per la generazione della definizione di sistema coordinata per i dati che non hanno un sistema di coordinate.
Lavorare con i file di definizione del Sistema di Coordinate: fornisce le istruzioni per usare il programma per la definizione del sistema di coordinate. 
Informazioni sul sistema di coordinate – fornisce informazioni supplementari sul progetto, trasformazione e parametri geodetico.
 
 
DataSource Object and Collection 
Ogni collegamento riuscito genera un oggetto DataSource.  L'oggetto DataSource si aggiunge alla collezione MapServer.DataSources.
È accessibile come segue: 
MapServer.DataSources.Item("ConnectionName")
Da notare che la proprietà Item richiede un valore di tipo stringa.  Questo valore è il nome e il percorso che è stato impostato alla fonte di dati nel collegamento. 
Ogni oggetto DataSource restituisce le informazioni sul collegamento di dati.  Queste informazioni includono il nome ed il percorso della fonte di dati e del relativo PROGID.  L'oggetto DataSource inoltre restituisce la stringa di fonte usata nel collegamento (se applicabile) ed un puntatore all'oggetto GDatabase.  Questo oggetto rappresenta il contenitore dei dati. 
Il seguente esempio collega alla fonte dati USSampleData.mdb e scrive la posizione, il PROGID e la lista delle tabelle contenute nella fonte dati dati:
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
‘Restituisce un MapServer.
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear

’Imposta il sistema di coordinate
  objMS.SetCoordinateSystem "C:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
‘Si connette alla fonte dati Access
  objMS.Connect "Access.GDatabase", _
                "C:\Warehouses:\USSampleData.mdb", _
                "", "USA"

  Set objDB = objMS.DataSources("USA")
  Response.Write "Data source name = " & objDB.DBName & "<BR>"
  Response.Write "ProgId = " & objDB.GDOServer & "<BR><BR>"
  Response.Write "Data Source Tables:" & "<BR>"

’Scrive il nome delle tabelle nella fonte dati.
  For I = 0 to objDB.Database.GTableDefs.Count -1
    Response.Write objDB.Database.GTableDefs(I).Name & "<BR>"
  Next

%>
</BODY>
</HTML>
Definizione degli insiemi di feature
Si possono generare insiemi di features in tre modi
  • Con l’oggetto query,
  • Con l’oggetto QueryScript
  • e gli oggetti Marker.
 
  Ogni metodo può essere usato per estrarre tutti i record e gli attributi associati agli oggetti  o estrarre soltanto i record degli oggetti che rispondono ad un criterio di selezione. 
Il criterio di selezione può essere spaziale, alfanumerico, o una combinazione dei due.
Ogni metodo può anche essere usato per estrarre soltanto i dati afanumerici da campi specificati. 
I dati degli oggetti possono essere dati spaziali o raster. 
Per estrarre i dati, si deve stabilire un collegamento ad un sorgente di dati e si deve conoscere il nome della tabella che contiene i dati dell’oggetto. 
Ogni insieme di oggetti ha un metodo corrispondente nell’oggetto MapServer che genera l’insieme di oggetti stabilito ed estrae i dati dell’oggetto dalla sorgente di dati.
Questi metodi sono: 
AddQuery: genera un oggetto Query
AddQueryScript: genera un oggetto QueryScript
AddMarker: genera un oggetto Marker
 
Gli oggetti Query(Script) sono più efficienti dei Marker e dovrebbero essere usati ove possibile. 
Tuttavia, l'oggetto Marker fornisce una alcune funzionalità, come l’aggiunta di oggetti con il cerchio o il poligono, che gli oggetti Query non hanno. 
Si veda la sezione dei Marker per maggiori dettagli.  Riguardo al metodo di  estrazione, un oggetto DisplayRule controlla ogni insieme di feature.  Ciascuno dei tre oggetti stabiliti della caratteristica ha il metodo di NewDisplayRule per generare l'oggetto di DisplayRule.  Riferiscasi al soggetto di regole dell'esposizione per le informazioni sulla generazione e regole dell'esposizione di controllo.  Per le più informazioni sul usando questi oggetti per definire gli insiemi di features, si veda le sezioni Query, QueryScript e del Marker.
 
 
 
Dim objMarker
Dim objDisplayRule

Set objMarker = objMS.AddMarker("CitiesAll", "USA", "Cities", "", "")
objMarker.AddElements ""

Set objDisplayRule = MapServer.NewDisplayRule
Determinazione del Range per la Output Map
Prima della generazione della output map, dovete determinare o calcolare il range dei limiti da visualizzare della mappa desiderata.  Il range è usata come argomento al metodo CreateMapByRange del Map Server.
In molti casi, userete un recordset di una feature della warehouse per trovare il range da visualizzare;  per esempio, un insieme di features che rispondono ad alcuni criteri di query.  In questi casi, assegnereste una variabile locale ASP alla proprietà Range di un Feature Set  definito. Gli esempi nella sezione Defining Feature Sets lo dimostrano.
In alcuni casi, potete avere bisogno di calcolare i valori inseriti ottenuti da un prodotto di visualizzazione come GeoMedia, ai valori dell'uscita stati necessari dal MapServer.  In questo caso, potete usare il metodo TransformPoint dell’oggetto MapServer.
 
 
Generazione della Mappa
Dopo la generazione degli insiemi di feature e delle regole di visualizzazione, si può generare la mappa.  Per fare questo, si usa il metodo CreateMapByRange dell'oggetto MapServer.  La sintassi per il metodo CreateMapByRange è il seguente:
  MapServer.CreateMapByRange x1, y1, x2, y2, Width, Height, AutoScale
Dove:
x1, y1, x2, y2 = I limiti della mappa.  I limiti sono l’angolo in basso a sinistra e in alto a destra della mappa.  Questi limiti sono in unità nel sistema di oordinate utilizzato.
Width, Height = La larghezza e l'altezza della mappa (in pixel).  Per la grafica vettoriale ed raster scritti nel formato ActiveCGM, questo è la scala di visualizzazione.  Per la grafica raster, questo influenza anche il formato della grafica.  Per il JPEG ed il png il formato delle  mappe, questo è il formato vero della mappa.
AutoScale = Regola di Auto Scale. Questa determina il fattore di estensione minima e massima per l’area coperta.
La mappa ha bisogno di una oggetto ActiveCGM incorporato per mostrare la mappa lato client. Opzionalmente, la mappa può avere un logo.
Il metodo CreateMapByRange genera due file.  Entrambe i file sono salvati nella directory virtuale di cache impostata.  Il primo file è il file della mappa che è trasmessa attraverso il web.  Questo file è un file ActiveCGM, un file JPEG, o una file png secondo il formato di autput specificato.  L'altro file è il Map Server Status file (MSS).
 
 
 

Creazione delle regole di Auto Scale

Il metodo CreateMapByRange richiede una regola di auto scale. Una regola di “auto scale” specifica un fattore di scala (moltiplicatore) con il quale è determinata, e, opzionalmente, la minima e la massima area coperta dalla mappa.
Una regola di auto scale è definita generando e configurando un oggetto RangeScale.  Questo oggetto è automaticamente aggiunto ad una collezione di oggetti AutoScales ed è accessibile attraverso la proprietà MapServer.AutoScales.  Ciò che segue genera un oggetto di RangeScale.
Dim objAutoScale
MapServer.AddRangeAutoScale("AS1")
objAutoScale.Multiplier = 1
objAutoScale.MinimumWindow = 100000
objAutoScale.MaximumWindow = 1000000
La proprietà Multiplier incrementa o decrementa l’area di copertura con un fattore. Un fattore più grande di 1 incrementa l’area coperta. Un fattore minore di 1 ma maggiore di zero decrementa l’area di copertura.
Nota: L’area di copertura è determinata dalle coordinate in basso a sinistra e in alto a destra fornite al metodo CreateMapByRange
Due proprietà addizionali, la proprietà MinimumWindow e MaximumWindow, regola l’area di copertura rispettivamente ai valori minimo e massimo. Questi valori sono specificati in unità nel sistema di coordinate specificato. Di conseguenza, la largezza della zona coperta non sottosta o aumenta sopra l’insieme di valori da queste proprietà se la zona del cambiamento di copertura (quale un cambiamento del moltiplicatore o di uno zoom).
Questi valori sono nelle unità del sistema di coordinate impostate.  Di conseguenza, la larghezza della zona di riempimento non cade sotto o oltre i valori impostati in queste proprietà se la zona di copertura cambia (come un cambiamento del moltiplicatore o uno zoom).

Creazione di un Marchio

Un Logo può essere creato e configurato per la mappa.  Il marchio compare nella parte inferiore a sinistra della mappa ed è della dimensione proporzionale alla larghezza della mappa prodotta.

Le seguenti proprietà dell'oggetto MapServer permettono di configurare un Logo: 

·        Logo: il testo che appare nel marchio
·        LogoBGColor - il colore di sfondo del marchio.
  Questo colore riempe una regione rettangolare intorno al testo.
·        LogoColor - il colore del testo del marchio.
·        LogoFont - il nome del font (per esempio, "Times new roman"). 
·        LogoTootip - il testo del tooltip che è publicato quando il puntatore del mouse è sopra il marchio.  Il tooltip può contenere parole chiave.
·        LogoAction - la risposta al click sul marchio.
Questa risposta può essere una chiamata ad un URL o ad uno script lato client.
 LogoAction può contenere le parole chiavi. 
Ciò che segue configura un Logo:
MapServer.Logo = "Map of the World"
MapServer.LogoColor = RGB (255, 255, 0)
MapServer.LogoBGColor = RGB(200, 200, 200)
MapServer.LogoFont = "Times New Roman"
MapServer.LogoTooltip = "Visit us on the Web"
MapServer.Action = "http://www.intergraph.com"
 
 

Trasmissione della Mappa

Il metodo CreateMapByRange mette i file della mappa (ActiveCGM, JPEG e png) e i file  di Map Server Status (MSS) nella virtual cache directory.  Per trasmettere la mappa, il controllo ActiveCGM si riferisce al file della mappa situata nella virtual cache directory.  Ciò è realizzato mediante il parametro FileName del Tag dell'oggetto.
Di seguito si vede come il controllo ActiveCGM viene incluso nel codice HTML come oggetto.  Il parametro File Name è impostato usando il TAG < param >.  Tipicamente, il valore per il parametro File Name è il percorso della virtual cache directory ed il nome del file della mappa.  La proprietà MapServer.OutputFile restituisce il percorso della virtual cache directory e il nome della mappa.
Si noti che perché il riferimento è in HTML (e non nell'asp), esso dev’essere chiamato come variabile di asp.  Cioè la notazione "<%=variabile% >" è obbligatoria.
<OBJECT classid="clsid:F5D98C43-DB16-11CF-8ECA-0000C0FD59C7"
        WIDTH=500 HEIGHT=500 >
  <param name=FileName value="<%=objMS.OutputFile%>">
  <embed src="<%=MS.OutputFile%>" width="500" height="350">
</OBJECT>
Note:  Il parametro <embed> is obbligatorio per il PlugIn “ActiveCGM NetScape® “.
 

Connessione a una sorgente dati

GeoMedia Web Map permette collegamenti a fonti di dati multiple (anche conosciute come warehouses) di diverso tipo.  Per esempio, si può collegare ad una fonte di dati di Access per alcune Feature ad un progetto MGE usando database oracle per un altro insieme di feature.
Il metodo MapServer.Connect si connette ad una sorgente dati. Questo metodo ha parecchi argomenti.  Il numero di argomenti richiesti dal metodo dipende dalla sorgente dati.
 La sintassi è la seguente:
MapServer.Connect GDOServer, DBName, Source, ConnectionName
GDOServer – Identificatore Programmatic Identifier (ProgID) della sorgente dati.  Ad esempio, "Access.GDatabase".
DBName – Il percorso e il nome del file (o directory) per il database.
Source – Questo è un’espressione stringa che specifica gli argomenti di connessione  ODBC.  Se la sorgente dati non richiede argomenti di connessione ODBC, assegnare NULL valore ("") a questo argomento.  Il nome di segmento FRAMME viene specificato qui quando occorre connettersi a una sorgente dati FRAMME.
ConnectionName – Questo è il nome con il quale la sorgente connessa è riferita nelle pagine ASP del sito.  Ogni connessione deve avere un nome univoco.  Molti metodi come il metodo AddMarker  richiedono il nome della connessione.
Ul teriori informazioni si trovano nei seguenti capitoli della giuda Getting Started:
Working with Warehouses – Fornisce un workflow generico e una visione di insieme delle sorgenti dati alle quali si può connettere GeoMedia Web Map.
Working with Connections – Contiene informazioni e limitazioni per la connessione a una sorgente dati. 
Creating Data Server .INI files – Fornisce una introduzione per la fonfigurazione dei file .ini.  Questi file sono necessari per alcuni data server  (come MGE o FRAMME) ma non per altri (come ad esempio Access).
Le seguenti sezioni forniscono informazioni e la sintassi per il collegamento a varie fonti dati.  Inoltre sono forniti i parametri supplementari per la preparazione e la configurazione delle fonti di dati (dove possibile).

Connessione ad una sorgente dati Access

Collegandosi a una fonte dati di Access è richiesto il ProgID, il percorso ed il nome del file dell’mdb e di un nome da attribuire alla connessione. 
Il seguente esempio collega una fonte dati di Access:
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear

' Set the Coordinate System
  objMS.SetCoordinateSystem "C:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
' Connect to the Access Data Source
  objMS.Connect "Access.GDatabase", _
                "C:\Warehouses\USSampleData.mdb", _
                "", "USA"

%>
</BODY>
</HTML>
Da notare che la stringa di connessione contiene un valore Nullo per l’argomento Source.

Connessione ad una sorgente dati ARC/INFO

Connecting to an ARC/INFO data source requires the ProgID, the path to the ARC/INFO workspace directory (not to a file), and a connection name.  The following example connects to an ARC/INFO data source:
Collegandosi ad una fonte dati ARC/info si richiede il ProgID, il percorso della dirctory dell’ambiente di lavoro di ARC/info (non ad un file) ed il nome della connessione. 
Il seguente esempio collega una fonte dati ARC/info:
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear

' Set the Coordinate System
  objMS.SetCoordinateSystem "C:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
' Connect to the ARC/INFO Data Source
  objMS.Connect "AI.GDatabase", _
                "C:\Projects\ARCINFO\usa", _
                "", "USA"

%>
</BODY>
</HTML>

Circostanze che interessano connessioni ARC/INFO

La fonte di dati ARC/info richiede un file .ini.  Le informazioni supplementari sul collegamento ad una fonte di dati ARC/info e sulla preparazione del file .ini sono nelle seguenti sezioni della guida Getting Started:
Connecting to an ARC/INFO Warehouse – Elenca e spiega i punti da verificare prima di tentare la connessione ad una base dati ARC/INFO.
The ARC/INFO Data Server .INI File – Descrive e spiega come preparare e modificare il file .ini per i dati ARC/INFO.

Connessione ad una sorgente dati ArcView

Connettersi a una sorgente dati ArcView richiede il ProgID, il percorso alla cartella di lavoro di ArcView (non ad un file), e il nome della connessione.  Il seguento esempio mostra una connessione ad una sorgente dati ArcView:
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear

' Set the Coordinate System
  objMS.SetCoordinateSystem "C:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
' Connect to the ArcView Data Source
  objMS.Connect "AV.GDatabase", _
                "C:\Projects\Canada", _
                "","Canada"

%>
</BODY>
</HTML>

Circostanze che interessano connessioni ArcView

La fonte di dati ARC/Viewrichiede un file .ini.  Informazioni supplementari sul collegamento ad una fonte di dati ARC/View e sulla preparazione del file .ini sono nelle seguenti sezioni della guida Getting Started:
Connecting to an ArcView Warehouse Elenca e spiega i punti da verificare prima di tentare la connessione ad una base dati ArvView.
The ARCView Data Server .INI File - Descrive e spiega come preparare e modificare il file .ini per i dati ArcView.
 
….
 

Utilizzo dell’oggetto Query

Un oggetto Query fornisce un modo di estrarre i dati dall’oggetto da una fonte di dati GDO.  Ciò porta ad una domanda sulla fonte di dati ed estrae oggetti con criteri di selezione e/o estrarre i dati della caratteristica con i dati limitati di attribuzione.
Una query è rappresentata da un oggetto Query.  L'oggetto Query è generato con una chiamata al metodo AddQuery dell'oggetto MapServer.  L'oggetto appena generato è collegato automaticamente alla collezione Queries dell’oggetto MapServer.
Cis ono due passaggi per creare e definire una Query. I passi sono i seguenti:
  1. Creare un’oggetto Query usando il metodo AddQuery dell’oggetto MapServer
  2. Definire i criteri di selezione della feature:
    • Criteri sugli attributi vengono definiti utilizzando la proprietà WhereClause
    • Criteri spaziali sono definiti con le proprietà SpatialFilterGeometry e SpatialFilterOperator.
L’oggetto Query richiede una regola di visualizzazione (rappresentata dall’oggetto DisplayRule) per mostrare l’oggetto nella mappa.

Workflow per la visualizzazione dei interrogazione sulle feature

  1. Creare un’oggetto Query.
  2. Creare un’oggetto DisplayRule per la Query.

    Workflow per la Display Rule:
1.      Creare e configurare un’oggetto FeatureSymbology per i dati della feature della Query.
2.      (Opzionale) Creare e configurare una oggetto simbologia (FeatureSymbology) per la simbologia dell’hotspot (aspetto quando il mouse passa sopra l’oggetto).
3.      (Opzionale) Impostare il criterio di display range.
4.      (Opzionale) Assegnare etichette associate al mouse (tips) e azioni associate al click.
5.      (Opzionale) Assegnazione di un nome al livello.
6.      (Opzionale) Assegnazione di una priorità.
  1. Generazione della mappa.

 

 
 
 
 
 
 
 
 

Cereazione e manipolazione di un oggetto Query

Il metodo AddQuery dell’oggetto MapServer crea un’oggetto Query. Questo metodo richiede tre argomenti. Gli argomenti sono i seguenti:
  1. Name – Un nome univoco (all’interno della collezione Queries) che identifica la query.
  2. Connection – Il nome della connessione (Data source) che contiene i dati della feature.
  3. Table – La tabella sorgente contenente le feature desiderate. Questa dev’essere una tabella che contiene anche dati geometrici.
Nota: Il metodo AddQuery genera l’oggetto Query e specifica da quale tabella dati pescare e la tabella da cui estrarre i dati, ma non richiama i dati. L’estrazione dei dati  non avviene finchè non viene chiamata la prorietà Range oppure viene chiamato il metodo CreateMapByRange  di  MapServer.

Esempio di codice

La sintassi del metodo AddQuery è la seguente:
Set objQuery = MapServer.AddQuery("Name","Connection","Table")
Dopo aver creato l’oggetto Query, dev’essere associato un’oggetto DisplayRule con la Query. La sintassi per il metodo NewDisplayRule è la seguente:
Set objDisplayRule = objQuery.NewDisplayRule
Quindi, un oggetto FeatureSymbology dev’essere creato e assegnato alla proprietà DisplaySymbology della DisplayRule. La sintassi è la seguente:
'Create the FeatureSymbology object
Set objSym = objMapSvr.CreateObject("GMWebMap.GWMFeatureSymbology")
'Set the desired symbology attributes
objSym.Color = RGB(0,0,255)
objSym.Weight = 1
objSym.Style = 0
 
Nota:  Ci sono molti altri attributi che possono essere impostati per gli oggetti FeatureSymbology, quale FillColor.  Si veda il capitolo dell'oggetto FeatureSymbology per maggiori dettagli. 

E’ possibile facoltativamente richiamare il rettangolo di minimo ingombro delle features della query accedendo alla proprietà Range.  Questa proprietà restituisce un’array di coordinate che rappresentano l’angolo in basso a sinistra e in alto a destra dell’MBR. 
La sintassi è la seguente:
Rng = objQuery.Range
'Access the coordinates using Rng(0), Rng(1), Rng(2), Rng(3)
Infine, si fa una chiamata al comando CreateMapByRange per mostrare l’insieme di features.
La sintassi è la seguente:
objMapSvr.CreateMapByRange Rng(0),Rng(1),Rng(2),Rng(3),400,300,"AutoScaleRule"
Vedi la pagina  Esempio di query per un’esempio funzionante.
 

Esempio di Query

Il seguente esempio estrae tutti  record dalla tabella States della sorgente dati  USDemo.mdb
Questo esempio contiene un comando di azione. Questo comando carica un’altra pagina ASP quando si seleziona uno stato . L’indirizzo URL permette che il comando contenga il nome dello stato selezionato in una stringa di query. Premi  qui per il codice di questa pagina ASP.
Running the Example
Per lanciare questo esempio il server dev’essere configurato per gli esempi dell’help. Premi qui per  le istruzioni di come configurare il server per lanciare gli esempi dell’help. Dopo aver configurato il server per lanciare gli esempi dell’help, puoi premere il pulsante Run Example.
Codice di esempio e Workflow
<% Option Explicit %>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
  Dim objSesMgr
  Dim objMS
  Dim AS1
  Dim objQry
  Dim objSym
  Dim objDisplayRule
  Dim Rng

' Return a Map Server.
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
 

' Set the coordinate system.
  objMs.SetCoordinateSystem "W:\Warehouses\USA.csf"

' Connect to the Access Data Source.
  objMS.Connect "Access.GDatabase", "W:\Warehouses\USDemo.mdb", "", "USA"

' Create auto scale rule.
  Set AS1 = objMS.AddRangeAutoScale("AS1")
  AS1.Multiplier = 1

' Create the States Query
  Set objQry = objMS.AddQuery("StatesQuery", "USA", "States")

' Store the Range of the States to use in the call to CreateMapByRange
   Rng = objQry.Range

' Create the display rule for all features in the States table.
  Set objDisplayRule = objQry.NewDisplayRule

' Create a FeatureSymbology object and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = RGB(0, 0, 0)
  objSym.FillColor = RGB(255,255,204)
  objSym.Weight = 1
  objSym.Style = 0

  objDisplayRule.DisplaySymbology = objSym

' Assign a tool tip.  This example displays the name of the state.
  objDisplayRule.ToolTip = "State of <%.STATE_NAME%" & ">"

' Create a FeatureSymbology object for hotspot symbology and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.FillColor = RGB(255, 255, 0)
  objSym.Weight = 2

  objDisplayRule.HotspotSymbology = objSym

' Assign an action to the Display Rule
  objDisplayRule.Action = "<%Root%" & ">\" & _
     "GWMHelp\PG_GetState.asp?StateName=<%.STATE_NAME%" & ">"

' Use the CreateMapByRange method to generate the map.
  objMS.CreateMapByRange Rng(0), Rng(1), Rng(2), Rng(3), 500, 300, "AS1"

' Embed the Active CGM control and reference the output CGM file.
%>

<CENTER>
<OBJECT classid="clsid:F5D98C43-DB16-11CF-8ECA-0000C0FD59C7" _
        WIDTH=500 HEIGHT=300 >
<param name=FileName value="<%=objMS.OutputFile%>">
</OBJECT>
</CENTER>

<%
' Set objects to Nothing in reverse order of creation
  Set objSym = Nothing
  Set objDisplayRule = Nothing
  Set objQry = Nothing
  Set AS1 = Nothing
  Set objMS = Nothing
  Set objSesMgr = Nothing
%>

</BODY>
</HTML>

Utilizzo dell’oggetto QueryScript

Un oggetto QueryScript fornisce un modo di estrarre i dati della feature da una fonte dati GDO, tanto come un oggetto Query.  Tuttavia, il QueryScript vi dà il controllo completo della creazione del recordset risultante della feature.  Questo è svolto con la tecnologia di Windows Scripting.  Il QueryScript usa un file script esterno per realizzare la creazione reale del recordset.  Il file script può essere scritta in qualsiasi linguaggio supportato dal server Windows Scripting, quali VBScript o JScript.
 Per maggiori informazioni sulle specifiche del file script, si veda la sezione Query Script File.
 
Un QueryScript è rappresentato da un oggetto di QueryScript.  L'oggetto di QueryScript è generato con una chiamata al metodo di AddQueryScript dell'oggetto MapServer.  L’ultimo oggetto generato da QueryScript è aggiunto automaticamente alla collezione degli Scripts di MapServer. 
Nota:  Mentre la generazione dell'oggetto QueryScript coinvolge soltanto una chiamata al metodo, la maggior parte dell'elaborazione di QueryScript avviene nel file script.  Si veda la sezione Query Script File per ulteriori particolari.
L'oggetto QueryScript richiede una regola di visualizzazione (rappresentata da un oggetto DisplayRule) per visualizzare i dati relativi della feature nella mappa. 
Inoltre, l'oggetto DisplayRule richiede altri oggetti e configurazioni prima di poter visualizzare i dati della feature. 
Workflow  del QueryScript  Display delle Features:
  • Generazione di un oggetto QueryScript. 
  • Generazione di un oggetto DisplayRule per il QueryScript. 
    • Workflow della DisplayRule: 
      • Generi e configuri un oggetto FeatureSymbology per i dati della feature del QueryScript. 
      • (facoltativo) generi e configuri un oggetto FeatureSymbology per la simbologia dell’hotspot. 
      • (facoltativo) regoli i criteri di range di visualizzazione. 
      • (facoltativo) assegni le tips e le azioni. 
      • (facoltativo) assegni un nome del foglio. 
      • (facoltativo) assegni una priorità. 
  • Generi la mappa.
 

Creazione e manipolazione di un oggetto QueryScript

Il metodo AddQueryScript dell’oggetto MapServer crea un’oggetto QueryScript. Questo metodo richiede tre argomenti. Gli argomenti sono i seguenti:
  1. Name – Un nome univoco (All’interno della collezione Scripts) che identifica il QueryScript.
  2. EngineProgID - Il ProgID del motore di scripting che si desidera utilizare per lanciare il file script. Per esempio - "VBScript" o "JScript".
  3. ScriptFile – Il percorso completo per il file script.
Nota: Il metodo AddQueryScript genera l’oggetto QueryScript object e specifica quale motore di scripting e quale file script usare, ma non esegue lo script file. La vera esecuzione non avviene fintantochè la proprietà Range è valorizzata o il metodo CreateMapByRange  di MapServer non è chiamato.

Codice di esempio

La sintassi del metodo AddQueryScript è la seguente:
Set objQScript = MapServer.AddQueryScript("QrScript1","VBScript","C:\QrScript.vbs")
Dopo aver creato l’oggetto QueryScript, dev’essergli associato un’oggetto DisplayRule.
La sintassi del metodo NewDisplayRule è la seguente:
Set objDisplayRule = objQScript.NewDisplayRule
Quindi, un oggetto FeatureSymbology deve essere creato ed assegnato alla proprietà DisplaySymbology del DisplayRule. 
La sintassi è la seguente:
'Create the FeatureSymbology object
Set objSym = objMapSvr.CreateObject("GMWebMap.GWMFeatureSymbology")
'Set the desired symbology attributes
objSym.Color = RGB(0,0,255)
objSym.Weight = 1
objSym.Style = 0
objDisplayRule.DisplaySymbology = objSym
Nota: Ci sono molti altri attributi che possono essere impostati per l’oggetto FeatureSymbology, come il FillColor. Vedi la sezione dell’oggetto FeatureSymbology per maggiori dettagli.
Volendo si può cercare il rettangolo di minimo ingombro per gli oggetti QueryScript's accedendo alla proprietà  Range. Questa proprietà restituisce un array di coordinate che contiene l’angolo in basso a sinistra e in alto a destra dell’MBR.
La sintassi è la seguente:
Rng = objQScript.Range
'Access the coordinates using Rng(0), Rng(1), Rng(2), Rng(3)
Infine, si chiama  CreateMapByRange per visualizzare l’insieme di oggetti.
La sintassi è la seguente:
objMapSvr.CreateMapByRange Rng(0),Rng(1),Rng(2),Rng(3),400,300,"AutoScaleRule"
Vedi la pagina dei Query Script Examples per un esempio funzionante.
Vedi anche la sezione Thematic Map di GeoMedia Web Map Demo per un’uso più avanzato dei QueryScript.

Esempio di Oggetto QueryScript

Il seguente esempio estrae tutti i record dalla tabella  delle condizioni della fonte dati di USDemo.mdb. 
Questo esempio contiene una comando action.  Questa dichiarazione carica un altro asp quando una condizione è verificata.  L' URL fornito alla dichiarazione di azione contiene il nome della condizione selezionata in una stringa di query.  Il codice di questo asp è qui di seguito. 
Il file script (QueryScript.vbs) usato in questo esempio di QueryScript può essere trovato nella sezione file di script  . 
 
Funzionamento dell'esempio  
Per fare funzionare questo esempio, il vostro server deve essere configurato per gli esempi di aiuto.  Fare click qui  per le istruzioni sulla configurazione del vostro server per fare funzionare gli esempi dell'help.  Dopo aver configurato il server per fare funzionare gli esempi dell'help, potete fare funzionare l'esempio premendo il tasto di esempio
Codice di esempio e Workflow
<% Option Explicit %>

<HTML>
<HEAD>
<!--#INCLUDE FILE="GWEcss.inc"-->
</HEAD>
<BODY>

<%
  Dim objSesMgr
  Dim objMS
  Dim AS1
  Dim objQScript
  Dim objSym
  Dim objDisplayRule
  Dim Rng

' Return a Map Server.
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
  objMS.OutputType = 0

' Set the coordinate system.
  objMs.SetCoordinateSystem "W:\Warehouses\USA.csf"

' Connect to the Access Data Source.
  objMS.Connect "Access.GDatabase", "W:\Warehouses\USDemo.mdb", "", "USA"

' Create auto scale rule.
  Set AS1 = objMS.AddRangeAutoScale("AS1")
  AS1.Multiplier = 1

' Create the States QueryScript
  Set objQScript = objMS.AddQueryScript("States", "VBScript", Server.MapPath("QueryScript.vbs"))
' Set the connection and feature class to extract
' using the "Engine" property of the QueryScript object.
' sConnection and sFeature are global variables defined
' in the script file QueryScript.vbs.
  objQScript.Engine.sConnection = "USA"
  objQScript.Engine.sFeature = "States"
  Rng = objQScript.Range

' Create the display rule for all features in the States table.
  Set objDisplayRule = objQScript.NewDisplayRule

' Create a FeatureSymbology object and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = RGB(0, 0, 0)
  objSym.FillColor = RGB(255,255,204)
  objSym.Weight = 1
  objSym.Style = 0
  objDisplayRule.DisplaySymbology = objSym

' Assign a tool tip.  This example displays the name of the state.
  objDisplayRule.ToolTip = "State of <%.STATE_NAME%" & ">"

' Create a FeatureSymbology object for hotspot symbology and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.FillColor = RGB(255, 255, 0)
  objSym.Weight = 2
  objDisplayRule.HotspotSymbology = objSym

' Assign an action to the Display Rule
  objDisplayRule.Action = "<%Root%" & ">\" & _
     "GWMHelp\PG_GetState.asp?StateName=<%.STATE_NAME%" & ">"

' Use the CreateMapByRange method to generate the map.
  objMS.CreateMapByRange Rng(0), Rng(1), Rng(2), Rng(3), 500, 300, "AS1"

' Embed the Active CGM control and reference the output CGM file.
%>

<CENTER>
<OBJECT classid="clsid:F5D98C43-DB16-11CF-8ECA-0000C0FD59C7" _
        WIDTH=500 HEIGHT=300 >
<param name=FileName value="<%=objMS.OutputFile%>">
</OBJECT>
</CENTER>

<%
' Set objects to Nothing in reverse order of creation
  Set objSym = Nothing
  Set objDisplayRule = Nothing
  Set objQScript = Nothing
  Set AS1 = Nothing
  Set objMS = Nothing
  Set objSesMgr = Nothing
%>

</BODY>
</HTML>
 
Il file script QueryScript
Ogni oggetto  di QueryScript ha uno script file associato.  Lo scopo del file di script è di generare e restituire al MapServer un recordset risultante che contiene gli oggetti geometrici.  La maggior parte dell' elaborazione di QueryScript avviene nel file script.  Il file può essere scritto in qualsiasi linguaggio supportati dal server che ospita il sito: VBScript e JScript. 
 
Struttura del file di Script
Il file di script si compone delle dichiarazioni delle variabili locali e globali variabili, delle procedure e  delle funzioni globali e private.  I componenti globali e cioè le funzioni e le varabili dichiarate globali possono essere intercettate al di fuori del file di script, usando la proprietà Engine dell'oggetto   QueryScript (l'esempio QueryScript  mostralo script).  C’è solo un elemento che dev’essere nel file di script, la procedura CreateRecordset.  Questa procedura è chiamata dall'oggetto MapServer per generare e restituire il recordset voluto.  CreateRecordset  non prende alcun argomento né restituisce alcun valore.
 
Restituisce il recordset generato attraverso un oggetto Helper Web Map rende disponibile allo scipt, chiamato ScriptHelper   
·        L’oggetto ·  ScriptHelper - poiché linguaggi di scripting differenti possono presentare limitazioni nel passare argomenti ad un modulo chiamata, un altro oggetto di automazione è messo a disposizione dello script.  Lo script si riferisce a questo oggetto con un nome predefinito, ScriptHelper. L'oggetto  ScriptHelper ha le seguenti proprietà:
OutputRecordset:   Il recordset generato dallo script. 
OutputGeometryField:   Il campo della geometria prodotto dallo script. 
 
 
La procedura  CreateRecordset deve impostare queste due proprietà dell'oggetto  ScriptHelper.  Esempio: 
' creazione del recordset voluto
objOutRS = MapServer.DataSources("USA").Database.OpenRecordset("Select * from States")
' impostazione dei parametri di output.  Queste due proprietà sono obbligatorie. 
ScriptHelper.OutputGeometryField = objOutRS.GFields("Geometry")
ScriptHelper.OutputRecordset = objOutRS
 
Lo script inoltre ha accesso ad un altro oggetto di automazione predefinito, l'oggetto  MapServer.  Lo script può accedere a tutti i metodi e le proprietà dell’oggetto MapServer, così come il codice  VBScript in un file asp.
 Esempio: 
Set RS = MapServer.DataSources("USA").Database.OpenRecordset("States")

Importante:   Lo script inoltre deve effettuare una trasformazione di sistema di coordinate sul recordset i uscita prima di assegnarlo alla proprietà  ScriptHelper.OutputRecordset.  Mentre lasciare questo passo al di fuori non è errato (lo script funzionerà se lo saltate), la geometria del recordset dev’essere corretta, a meno che il map server ed la warehouse stiano usando lo stesso sistema di coordinate. L'esempio sotto mostra come fare ciò e fornisce una funzione che potete usare. 
 
File di esempio QueryScript
Il seguente esempio mostra  il file  script QueryScript.vbs usato nella sezione  di esempio di QueryScript. 
Da tener in considerazione quanto segue: 
·        TransformRS   Questa funzione trasforma il recordset specificato nell’argomento objRS. Il recordset è trasformato nel sistema di coordinate specificato nel MapServer.  Questa funzione può essere usata nei file script generati dall’utente. 
 
Codice di Esempio
 
Option Explicit

'Variabili globali
Dim sConnection 'the connection to use
Dim sFeature 'the feature to extract

'******************************************************************
' Sub: WriteLog
' Abstract: 
'   Usato per scrivere le informazioni di debug nei logfiles di MapServer . 
' Arguments:
'   sString – la stringa da scrivere nel log file
' Notes:
'   Il primo argomento della funzione WriteLog descrive il massimo livello
'   di log al di sotto del quale il Log viene scritto. 
'******************************************************************
Sub WriteLog(sString)
  MapServer.WriteLog 5, "QueryScript::" & sString
End Sub

'******************************************************************
' Function: TransformRS 
' Abstract: 
'   Questa funzione locale allo script trasforma un recordset al sistema di
' coordinate di MapServer
'   Per maggiori informazioni sul sistema di coordinate e come rasformare i
' recordset vedere "Building on the Geomedia Engine" documentazione che si può
' rintracciare con Geomedia.
' Arguments:
'   objRS – Il recordset che dev’essere trasformato
'   GeomFieldName – Il campo della Geometria del recordset di input
' Outputs:
'   TransformRS restituisce il recodset trasformato
'******************************************************************
Function TransformRS(objRS, GeomFieldName)
  Dim objCSSPipe 'as CSSTransformPipe
  WriteLog "TransformRS() Called"

  'Create a CSSTransformPipe object
  Set objCSSPipe = MapServer.CreateObject("Geomedia.CSSTransformPipe")

  'Get the Coordinate Systems Manager from the MapServer object
  Set objCSSPipe.CoordSystemsMgr = MapServer.CoordSysMgr

  'Set the input recordset
  Set objCSSPipe.InputRecordset = objRS
  'Set the input geometry field name
  objCSSPipe.InputGeometryFieldName = GeomFieldName

  'Retrieve the output recordset
  Set TransformRS = objCSSPipe.OutputRecordset

  'Clean up and exit
  Set objCSSPipe = Nothing
  WriteLog "TransformRS() Exiting"
End Function

'******************************************************************
' Function: CreateRecordset 
' Abstract: 
'   Questa funzione è richiesta per trattare l’oggetto QueryScript.
'   Si prende il recordset desiderato si usa la variabile Pop 
'   impostata sopra (attraverso il motore di script nella funzione definita),
'   e passa il recordset attraverso la funzione CSSTransformPipe  
'   e la funzione TransformRS. 
' Arguments:
'   None.
' Notes:
'   Dev’essere sempre fatta la trasformazione del sistema di coordinate nel 
' recordset di uscita.
'******************************************************************
Sub CreateRecordset()
  Dim objTxRS 'Il recordset finale trasformato
  Dim RS
  Dim QString

  WriteLog "CreateRecordset() Called"

  'Costruisce la query usando la variabile sFeature
  QString = "Select * from " & sFeature & ";"
  'Prende il recordset dal database del MapServer
  Set RS = MapServer.DataSources(sConnection).Database.OpenRecordset(QString)
  
  'Chiama TransformRS per eseguire la trasformazione del CS Transform del recordset
  Set objTxRS = TransformRS(RS,"Geometry")
  
  'Le due linee sotto sono obbligatorie, impostano l’uscita del query script
  ScriptHelper.OutputGeometryField = objTxRS.GFields("Geometry")
  ScriptHelper.OutputRecordset = objTxRS
  Set objTxRS = Nothing
  Set RS = Nothing

  WriteLog "CreateRecordset() Exiting"
End Sub
Markers
 
Un marker fornisce un modo per estrarre i dati della feature da una fonte di dati GDO.  Un marker esegue una query sulla fonte di dati ed estrae i dati della feature basati su un criterio di selezione e/o estrae i dati della feature con i dati alfanumerici filtrati. 
Un marker è rappresentato dall’oggetto Marker.  Ogni marker si aggiunge automaticamente alla collezzione dei Markers .  Questa collezione  è accessibile dall’oggetto MapServer.Markers
 
I Marker restituiscono un recordset.  Questo recordset contiene i record dalla tabella della feature che rispondono al criterio di selezione.  Il recordset è accessibile attraverso la proprietà recordset di Marker. Per default, il recordset contiene soltanto due colonne.  La prima colonna è la colonna che identifica univocamente il record ed il secondo è la colonna della geometria.  Per includere colonne aggiuntive, si deve specificare  le colonne volute all’atto della generazione del Marker.
 
Ci sono due passi per la generazione ed la definizione di un Marker.
 I passi sono i seguenti: 
Generazione di un oggetto  Marker.
Definizione dei criteri di selezione sulla feature.
 
L'oggetto  Marker richiede una regola di visualizzazione (rappresentata dall’oggetto DisplayRule) per visualizzare i relativi dati della feature nella mappa.  Inoltre, l'oggetto DisplayRule richiede altri oggetti e configurazioni prima che possiate visualizzare i dati della feature di un Marker
 
Workflow  per la visualizzazione dei Marker
  1. Creazione di un’oggetto Marker.
  2. Generazione di un recordset.
  3. Creazione di un’oggetto DisplayRule per il marker.
    Workflow per la creazione di una Display Rule:
    1. Creare e configurare un oggetto FeatureSymbology per i dati associati alla feature del Marker.
    2. (Opzionale) Creazione e configurazione dell’oggetto FeatureSymbology per la simbologia dell’hotspot.
    3. (Opzionale) Impostazione del criterio di display range.
    4. (Opzionale) Assegnazione di tool tips e azioni.
    5. (Opzionale) Assegnazione di un nome di livello.
    6. (Opzionale) Assegnazione della priorità.
  4. Generazione della mappa.

Creazione e manipolazione di un oggetto Marker

Il metodo AddMarker dell’oggetto MapServer crea un oggetto Marker. Questo metodo richiede quattro parti di informazioni e 5 argomenti (un’argomento non è utilizzato).
Questi argomenti sono i seguenti:
  1. Name – Un nome univoco (all’iterno della collezione Markers) per l’oggetto Marker.
  2. Connection – Il nome della connessione (sorgente dati) contenente i dai della feature.
  3. Table - La tabella dati contenente gli oggetti. Questa dev’essere una tabella che contiene i dati geometrici.
  4. Column – Richiede una stringa vuota (""). Questo argomento non accetta altri valori ne può essere omesso o lasciato vuoto.
  5. Attributes – Accetta un array di nomi di colonne. Questo array definisce le colonne della tabella che contengono gli attributi da includere nel recordset del Marker. Se nel Marker non bisogna includere altre informazioni addizionali utilizzare la stringa vuota (""). Se una display rule ha necessità di avere un attributo per un tool tip o per una stringa da utilizzare per un’azione, includere il campo dell’attributo  nell’array.
Nota:  Il metodo AddMarker genera l’oggetto Marker e specifica quali colonne di attributi addizionali (se necessario) debbano essere estratte, ma questo non genera il recordset.  Il recordset è un risultato dell’esecuzione di uno dei molti metodi  dell’oggetto Marker.
La sintassi per il metodo AddMarker è il seguente:
Set objMarker = MapServer.AddMarker("Marker", "Connection", _
                "Table", "", Attributes)
Di default, il recordset per un marker ha solo due colonne di dati: la colonna contenente l’identificativo e quella contenente la geometria.  L’argomento Attributes può accettare un’array per i nomi delle colonne. Ciò imposta colonne addizionali di attributi  nel recordset.  L’esempio seguente crea un marker con attributi addizionali:
Dim Cols(2)
Cols(0) = "ANNULRAIN"
Cols(1) = "ANNULSNOW"
Cols(2) = "STATE_NAME"

Set objMarker = MapServer.AddMarker("Mark1", "USA","States", "", Cols)
Nota:  L’argomento Attributes non è una stringa.  Nell’esempio, Cols è il nome di un array.
 

Generazione di un Recordset per il Marker

Un marker di un recordset può contenere tutte le features da una tabella, feature che incontrano le richieste specificate sugli attributi, o che incontrano richieste spaziali, o incontrano relazioni spaziali, o feature che incontrano una combinazione di rechieste spaziali e alfanumeriche
Dopo aver usato il metodo AddMarker per creare un oggetto Marker, si può usare uno dei quattro metodo per creare un recordset.
I metodi sono i seguenti:
AddElements -  Generara un recordset che soddisfa un criterio alfanumerico(come ad esempio tutte le città con una popolazione maggiore di 100,000). Nota: Se questa è l’unica funzionalità richiesta , si raccomanda di usare l’oggetto Query anzichè Marker dal momento che loggetto Query offre migliori  performance. L’oggetto Marker dovrebbe essere usato solo in uno dei tra casi specificati sotto, o se il recordset generato dev’essere usato dopo nello script.
AddElementsByCircle -  Genera un recordset contenente solo le features che hanno una relazione spaziale con un cerchio definito. Questo metodo accetta anche un criterio sugli attributi.
AddElementsByPolygon -  Genera un recordset contenente features che hanno una relazione spaziale con un poligono specificato. Questo metodo accetta anche un criterio sugli attributi.
AddElementsByRecordset -  Genera un recorset che contiene features che hanno una relazione spaziale con features in un altro recordset.  Questo metodo accetta anche un criterio sugli attributi.
Utilizzo del metodo AddElements
Il metodo AddElements crea un recordset che contiene oggetti che risolvono un criterio sugli attributi. Il criterio sugli attributi è una clausola SQL WHERE. Il metodo AddElements accetta questa clausola come argomento (l’argomento aWhereClause).
Nota: Per selezionare tutti gli oggetti, usare la stringa "" per l’argomento aWhereClause.
 
Esempio di Add Elements
Il seguente esempio accetta il nome dello stato (passato a una questy a un indirizzo URL). Questo esempio crea un mappa dello stato e tutte le città con una popolazione maggiore di 50,000 abitanti. Da notare che questa particolare funzionalità può essere meglio implementata con utilizzando l’oggetto Query . Questo esempio può essere visto come una lezione di come usare il metodo AddElements non di quando. L’addizione dell’oggetto Query e QueryScript allevia il bisogno del metodo AddElements, per la maggioranza dei casi. Tuttavia, il metodo AddElements è utili quando il recordset risultante è necessario per ulteriori processi, dal momento che gli oggetti Query e QueryScript non mettono a disposizione il recordset per ulteriori processi
.
Codice di esempio e Workflow
 
<% Option Explicit %>

<HTML>
<HEAD>
<!--#INCLUDE FILE="GWEcss.inc"-->
</HEAD>
<BODY>

<%
  Dim objSesMgr
  Dim objMS
  Dim AS1
  Dim objMkr
  Dim Cols(0)
  Dim objDisplayRule
  Dim objSym
  Dim Rng
  Dim strName

' Get state name from query string.
  strName = Request.QueryString("StateName")

' Return a Map Server.
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
  ObjMS.OutputType = 0

' Set the coordinate system.
  objMs.SetCoordinateSystem "W:\Warehouses\USA_geo.csf"

' Connect to the Access Data Source.
  objMS.Connect "Access.GDatabase", "W:\Warehouses\USDemo.mdb", "", "USA"

' Set Logo.
  objMS.Logo = strName
  objMS.LogoColor = 0
  objMS.LogoBGColor = RGB(255,255,255)
  objMS.LogoFont = "Times New Roman"

' Create auto scale rule.
  Set AS1 = objMS.AddRangeAutoScale("AS1")
  AS1.Multiplier = 1

' Create a marker for all features in the States table.
  Cols(0) = "State_Name"
  Set objMkr = objMS.AddMarker("Mkr1", "USA", "States", "", Cols)
  objMkr.AddElements "Where STATE_NAME = " & strName
  Rng = objMkr.Range

' Create a Display Rule for the marker.
  Set objDisplayRule = objMkr.NewDisplayRule

' Create a FeatureSymbology object and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = RGB(0, 0, 0)
  objSym.FillColor = RGB(255,255,204)
  objSym.Weight = 1
  objSym.Style = 0
  objDisplayRule.DisplaySymbology = objSym

' Create a Marker for all cities in the selected state with a population > 50,000.
  Cols(0) = "City_Name"
  Set objMkr = objMS.AddMarker("Mkr2", "USA", "Cities", "", Cols)
  objMkr.AddElements "Where State_Name = " & strName & " and Pop > 50000"

' Create a DisplayRule for the Marker.
  Set objDisplayRule = objMkr.NewDisplayRule

' Create a FeatureSymbology object and assign it to the display rule.
  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = 0
  objSym.Weight = 2
  objDisplayRule.DisplaySymbology = objSym

' Assign a tool tip.  This example displays the name of the state.
  objDisplayRule.ToolTip = "City of <%.City_Name%" & ">"

' Use the CreateMapByRange method to generate the map.
  objMS.CreateMapByRange Rng(0), Rng(1), Rng(2), Rng(3), 500, 300, "AS1"

' Embed the Active CGM control and reference the output CGM file.
%>

<CENTER>
<OBJECT classid="clsid:F5D98C43-DB16-11CF-8ECA-0000C0FD59C7" _
        WIDTH=500 HEIGHT=300 >
<param name=FileName value="<%=objMS.OutputFile%>">
</OBJECT>
</CENTER>

<%
' Set objects to Nothing in reverse order of creation.
  Set objSym = Nothing
  Set objDisplayRule = Nothing
  Set objMkr = Nothing
  Set AS1 = Nothing
  Set objMS = Nothing
  Set objSesMgr = Nothing
%>

</BODY>
</HTML>

 

 

Displaying Raster Data

I dati raster si aggiungono ad una mappa usando il metodo AddQuery dell'oggetto MapServer.  Per aggiungere i dati raster ci si deve  riferire alla tabella che contiene i collegamenti al/ai file(s) raster.
Nota:  Soltanto le warehouses di GeoMedia immagazzinano raster in un formato compatibile con  GeoMedia Web Map.  Di conseguenza, i dati raster devono essere immessi in una warehouse di GeoMedia prima che possano essere letti da GeoMedia Web Map ed essere inclusi nella mappa.

Esempio Raster

Questo esempio mostra dei dati raster nella mappa.
Esecuzione dell’esempio
Per lanciare questo esempio il server dev’essere configurato per gli esempi dell’help. Premi qui per  le istruzioni di come configurare il server per lanciare gli esempi dell’help. Dopo aver configurato il server per lanciare gli esempi dell’help, puoi premere il pulsante Run Example.
<% Option Explicit %>

<HTML>
<HEAD>
  <Style>
    Body { background-Color=RGB(255, 255, 255)}
  </Style>
<!--#INCLUDE FILE="GWEcss.inc"-->
</HEAD>
<BODY>

<%
  Dim objSesMgr
  Dim objMS
  Dim objQry
  Dim objDisplayRule
  Dim AS1
  Dim Rng
  Dim objSym

' Restituisce un Map Server.
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
  objMs.backgroundColor =  vbWhite
  objMS.OutputType = 0

' Impostazione del coordinate system.
  objMs.SetCoordinateSystem "W:\Warehouses\USA.csf"

' Connessione ad un database Access.
  objMS.Connect "Access.GDatabase", "W:\Warehouses\USDemo.mdb", "", "USA"

' Creazione di una regola di AutoScale.
  Set AS1 = objMS.AddRangeAutoScale("AS1")
  AS1.Multiplier = 1.5

' Crea un oggetto Query per gli stati.  Restituisce il range della query.
  Set objQry = objMS.AddQuery("Qry1", "USA", "States")
  objQry.WhereClause = "Where State_Name = 'Mississippi' or " & _
      "State_Name='Arkansas' or State_Name='Alabama' "
  Rng = objQry.Range
  set objDisplayRule = objQry.NewDisplayRule

' Crea una simbologia per l’insieme di feature.

  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = RGB(0, 0, 0)
  objSym.FillColor = RGB(176, 173, 138) 
  objSym.Weight = 1
  objSym.Style = 0
  objDisplayRule.DisplaySymbology = objSym

' Crea la query per le immagini raster.
  Set objQry = objMS.AddQuery("RasterQuery", "USA", "GMImages1")
  Set objDisplayRule = objQry.NewDisplayRule

' Usa il metodo CreateMapByRange per generare la mappa.
  objMS.CreateMapByRange Rng(0), Rng(1), Rng(2), Rng(3), 500, 300, "AS1"

' Acclude il controllo ActiveCGM e si riferisce al file cgm di output.
%>

<CENTER>
<OBJECT classid="clsid:F5D98C43-DB16-11CF-8ECA-0000C0FD59C7" _
        WIDTH=450 HEIGHT=300 >
<param name=FileName value="<%=objMS.OutputFile%>">
</OBJECT>
</CENTER>

</BODY>
</HTML>
 


Regole di visualizzazione (display rules) specifiche per i Raster

Le regole di visualizzazione che usano gli insiemi di feature raster funzionano diversamente degli insiemi che contengono i dati geometrici.  Le differenze e le somiglianze sono le seguenti:
  • Le Display rules per Raster non richiedono uso di feature symbology. Cioè, non generate un oggetto FeatureSymbology e non lo assegnate alla regola di visualizzazione.
  • Tool tips e actions non si applicano alle regole di visualizzazione dei raster.
  • Range criteria è funzionale per le regole di visualizzazione dei raster.
  • I dati Raster non possono essere estratti con i Markers.

 

Display Rules

Ogni insieme di feature necessita almeno una regola di visualizzazione per visualizzare la mappa.  Una regola di visualizzazione è rappresentata da un oggetto DisplayRule. 
Questo oggetto controlla quanto segue:

  • Simbologia Feature -  La simbologia  della feature definisce le caratteristiche di visualizzazione dei dati.  Queste includono colore, spessore e lo stile.
  • Simbologia Hotspot -  La simbologia della feature definisce le caratteristiche di visualizzazione dei dati quando il cursore è sopra una feature dell’insieme oggetti influenzati dalle display rule.  La simbologia include colore, spessore, e stile.
  • Criterio  Range -  Il criterio range determina l’intervallo di scala della mappa (ad esempio come tra 10000  e 1000000 metri) nel quale gli oggetti vengono visualizzati nella mappa.
  • Action  -  Definisce la risposta all’utente che clicca sulla feature nell’insieme di feature.  Questa risposta può essere andare a un’indirizzo URL o esguire uno script.
  • Tool tip  -  Specifica il testo da far comparire ogni volta che il mouse è sopra una feature nell’insieme di feature.
  • Sheet Name -  Assegna le regole di visualizzazione all’insieme di feature a un  foglio deominato nel file ACGM.   Se il foglio non esiste, la regola di visualizzazione ne crea uno.
  • Priority -  Imposta la priorità di visualizzazione (layering) nel file ACGM.  Più basso è il numero priorità, più alta è la priorità nella sequenza di visualizzazione dell’oggetto.
Al minimo l’oggetto DisplayRule richiede una simbologia di visualizzazione. L’unica eccezione a questo è se l’insieme di oggetti sono di tipo raster. In questo caso, la sombologia viene ignorata.
La simbologia della feature si realizza creando e configurando un oggetto FeatureSymbology e assegnando alla proprietà DisplayRule.DisplaySymbology.  Le caratteristiche restanti della regola di visualizzazione sono opzionali (hot spot, criteri range e tool tips) sono facoltative.
 

Creazione di una Display Rule

Per oggetti Query, QueryScript, Marker, il metodo NewDisplayRule crea un oggetto DisplayRule ogni volta che viene chiamato.  Tipicamente, il metodo NewDisplayRule è chiamato dopo aver creato l’oggetto feature set. 
Il seguente esempio mostra la creazione di un display rule per un Marker:
Dim objMarker
Dim objDisplayRule

Set objMarker = objMS.AddMarker("CitiesAll", "USA", "Cities", "", "")
objMarker.AddElements ""

Set objDisplayRule = MapServer.NewDisplayRule

Impostazioni di una Display Rule per la simbologia delle Feature

Le regole di visualizzazione usano la simbologia delle feature per definire la rappresentazione degli oggetti nella mappa.  Queste caratteristiche includono peso, colore, spessore, ecc., per le feature spaziali, testo, e simboli.  Le regole di visualizzazione usano anche la simbologia per gli hot spots.
Nota:  La simbologia delle Feature non è applicabile ai dati raster.
La simbologia delle feature è definita mediante l’oggetto FeatureSymbology. Questi sono oggetti generabili e sono assegnati alla proprietà DisplaySymbology, e, opzionalmente, alle proprietà HotspotSymbology dell’oggetto DisplayRule.
Nota: Non usare la parola chiave “Set” nell’assegnazione dell’oggetto FeatureSymbology, all’oggetto DisplayRule. Facendo così si genererà un’errore
L’oggetto FeatureSymbology ha numerose proprietà. L’applicabilità delle proprietà dipende dal tipo di feature da trattare. Per esempio, peso, colore, e stile linea sono proprietà pertinenti gli oggetti lineari, ma i font e il colore di riempimento non lo sono. Tuttavia, alcune feature (come i punti) possono essere rappresentati in una varietà di modi. Per esempio, i punti possono apparire come puntini, caratteri, o simboli.
Il seguente esempio crea e definisce un’oggetto FeatureSymbology e distingue e lo assegna a una regole di visualizzazione:
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
' Return a Map Server.
  Dim objSesMgr, objMS
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
' Set the coordinate system.
  objMS.SetCoordinateSystem "D:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
' Connect to the Access Data Source.
  objMS.Connect "Access.GDatabase", _
                "D:\Warehouses:\USSampleData.mdb", _
                "", "USA"

' Create a DisplayRule object.
  Dim objDisplayRule  ' DisplayRule object
  Dim objSym  ' FeatureSymbology object
  Dim objQuery  ' Query object

Set objQuery = MapServere.AddQuery("States", "USA", "States")  
Set objDisplayRule = objQuery.NewDisplayRule
' Create a FeatureSymbology object for the display rule's display symbology.
  Set objSym = MapServer.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.Color = RGB(255,0,0) 'Borders are red
  objSym.Weight = 2
  objSym.FillColor = -1 'Background is transparent

  objDisplayRule.DisplaySymbology = objSym
%>
</BODY>
</HTML>
 
 
 

Impostazione criteri Range

Una regola di visualizzazione può controllare la scala della mappa per cui venga visualizzato un certo insieme di feature.  Questo si realizza assegnando un intervallo  di valori alla regola di visualizzazione.  Questo criterio determina l’estenzione minima e massima della mappa alla quale la mappa includa la feature set associata con tale regola.  Tipicamente, la regola di visualizzazione usa criteri range per fornire dettagli aaggiuntivi o per rimuovere dettagli al cambiare della scala di visualizzazione della mappa (come per esempio con uno zoom).
Nota:  Il criterio range ha effetto quando viene rigenerata la mappa  ad una nuova scala.  Non ha effetto quando il client usa I controlli di zoom su un’oggetto ActiveCGM .
Si imposta  il criterio range creando un’oggetto RangeCriteria e applicandolo a una proprietà DisplayRule.Criteria.  Il Map Server aggiunge ogni oggetto RangeCriteria a una collezione Criterias.  La collezione è accessibile attraverso la proprietà MapServer.Criterias.
Il metodo AddRangeCriteria dell’oggetto MapServer crea un oggetto RangeCriteria.  Il metodo AddRangeCriteria richiede un argomento.  Questo argomento è una stringa che specifica il nome del nuovo oggetto RangeCriteria.  Questo nome dev’essere unico nella collezione Criterias.  
Il seguente esempio crea un nuovo oggetto RangeCriteria:
Dim objRange
Set objRange = MapServer.AddRangeCriteria("Range1")
L’oggetto RangeCriteria ha due proprietà.  La proprietà MinimumRange che specifica la minima larghezza della mappa nel quale è inclusa l’insieme di feature specificate.  La proprietà MaximumRange specifica la massima larghezza della mappa nel quale l’insieme di feature dev’essere inclusa.  Il valore di queste proprietà dev’essere in unità nel sistema di coordinate in cui si sono registrate le informazioni geografiche.  Impostare una o entrame le proprietà è opzionale.  Il valore di default per entrambe è "no limit".
Dopo aver impostato le proprietà per l’oggetto RangeCriteria, si applica all’oggetto DisplayRule.  Questo si realizza con l’impostazione della proprietà DisplayRule.Criterias al nome dell’oggetto RangeCriteria
Il seguente esempio crea un’oggetto RangeCriteria, imposta il range, e lo applica alla display rule:
Dichiarazione delle variabili degli oggetti.
  Dim objMarker
  Dim objDisplayRule
  Dim objRange
Crazione di un’oggetto Marker.
  Set objMarker = objMS.AddMarker("CitiesAll", "USA", "Interstates", "", "")
  objMarker.AddElements ""
Creazione di un’oggetto DisplayRule.
  Set objDisplayRule = MapServer.NewDisplayRule
Creazione di un’oggetto RangeCriteria ed impostazione del range.
  Set objRange = MapServer.AddRangeCriteria("Range1")
  objRange.MinimumRange = 10000
  objRange.MaximumRange = 5000000
Applicazione dell’oggetto RangeCriteria all’oggetto DisplayRule.
  objDisplayRule.Criteria = "Range1"
 
 
 
 
 
 
 
 
 

Creazione Tool Tips

Un tool tip è il testo che è publicato quando il puntatore del mouse resta sopra una feature nella mappa di tipo ActiveCGM.  Si può impostare un tool tip per ogni display rule.  Di conseguenza, il tool tip è fondamentalmente lo stesso per ogni feature nell’insieme di feature associata alla regola display rule.  Tuttavia, potete inserire informazioni univoche della feature (gli attributi).
La proprietà DisplayRule.ToolTip accetta un valore stringa.  Questo valore può essere solo testo,  un pezzo di codice, una combinazione di testo e codice. 
Un’esempio di codice:
  Set DisplayRule = objMS.AddGeomColumn("Data Source Name", "Table", "")
  DisplayRule.ToolTip = "I am a tool tip"
Comandi per I Tool Tips
Le parole chiave sono variabili definite che ASP sostituisce con i corrispondenti valori.  
Le parole chiave sono le seguenti:
Session – Mostra il percorso e il nome del file di sessione (file .mss).
CGM – Mostra il percorso e il nome del file ACGM.
Root – Mostra il percorso URL del server (nel formato http://).
.Attribute – Mostra un valore di un’attributo dalla tabella dei dati della feature.
Le parole chiave devono essere dentro i delimitatori ASP ("<%Keyword%" & ">").  Il codice seguente mostra il percorso del server su di un ToolTip:
  DisplayRule.ToolTip = "Root URL = <%Root%" & ">"
Importate – Da noteare che il carattere “%” e “>” della delimitazione del codice ASP dev’essere separato.  Questo perche senza la separazione la stringa %> chiude il codice corrente aperto dalla pagina ASP in cui si utilizza la parola chiave.   La parte “<%” può rimanere perche il codice ASP è già aperto.
 
 
 
 
 
 
 
 
 
 
 
Parole chiave per gli Attributi
Le parole chiave per gli attributi sono nella forma "<%.Attrubuto%" & ">".  La parola "Attributo" è il nome del campo della tabella associata alla feature. Per esempio, "<%.Nome%" & ">" restituisce il valore del campo Nome.  Da notare che un punto deve precedere il nome del campo.
L’uso delle parole chiave dipende da come si è generato il feature set. Se si usa il metodo AddGeomColumn, tutti gli attributi sono disponibili. 
Tuttavia se si usa un marker sono disponibili solo i campi utilizzati dal marker. Quindi , se si desidera usare una parola chiave di un attributo di un campo  dovete includere il nome del campo nell’argomento Attributes del metodo AddMarker
Utilizzo di una parola chiave associata ad un campo:
   Dim Cols(2)
  Cols(0) = "ANNULRAIN"
  Cols(1) = "ANNULSNOW"
  Cols(2) = "STATE_NAME"

  Dim objMarker
  Dim objDisplayRule

  Set objMarker = MapServer.AddMarker("Mark1", "USA", _
                 "States", "", Cols)
  objMarker.AddElements ""

  Set objDisplayRule = objMarker.NewDisplayRule
  objDisplayRule.ToolTip = "Tool Tip = <%.STATE_NAME%" & ">"
Importante – da notare che l’argomento Attributes del metodo AddMarker è un array (Cols)  e non una stringa ("Cols").  Quindi, l’uso di una stringa ("Cols") tutela la parola chiave dall’essere sostituita dal suo valore.
In questo esempio, il tool tip può mostrare i valori dei campi ANNULRAIN, ANNULSNOW, o STATE_NAME. Per esempio, se il puntatore è sullo stato del Colorado, il tool tip appare così:
Tuttavia, il riferirsi ad un’altro campo (come il campo AVETEMP) che non è nel’array dei nomi dei campi forniti tramite il metodo AddMarker non mostra il valore del campo. Invece, la stringa di lettere appare . Per esempio, se il tool tip dell’esempio precedente viene inpostato nel seguente modo
objDisplayRule.ToolTip = "<%.AVETEMP%" & ">"
il tool tip mostra quanto segue:
 
 

Assegnazione di un’azione

Alle regole di visualizzazione (Display rules) possono avere associate azioni  che avvengono quando l’utente fa click su una feature.  Azioni includono chiamate a URL o esecuzione di script.  La proprietà DisplayRule.Action accetta un stringa contenente l’azione da eseguire. Come i tool tips, questi comandi possono contenere parole chiave.
Di seguito si vede come assegnare un’azione alla regole di visualizzazione che apre il sito internet di Intergraph quando l’utente fa click sulla feature associata con la display rule:
  Set objDisplayRule = objMS.AddGeomColumn("Data Source Name", "Table", "")
  objDisplayRule.Action = "Http://www.intergraph.com"
Di seguito si vede l’esecuzione di uno script (ShowAction) quando l’utente fa click sulla feature associata con la display rule.  Lo script mostra una Alert box che mostra un messaggio che l’azione è andata a buon fine.
<HTML>
<HEAD>
</HEAD>

<BODY>
<%
  . . . .
  . . . .

  Set objDisplayRule = objQuery.NewDisplayRule
  objDisplayRule.Action = "javascript:ShowAction()"

  . . . .
  . . . .
%>

  <SCRIPT Language="JavaScript">
    function ShowAction()
    {
      window.alert("Successful");
    }
  </SCRIPT>

</BODY>
</HEAD>

Simbologia degli Hotspot

Con la regolazione della proprietà Action, le azioni richiedono che la regola di visualizzazione abbia una simbologia del hotspot.  Per stabilire la simbologia del hotspot, si genera un oggetto  FeatureSymbology e si assegna alla proprietà DisplayRule.HotspotSymbology.
Importante – L’azione viene eseguita se la DisplayRule non contiene l’impostazione della simbologia di hotspot.
Il seguente esempio crea e assegna la simbologia di hotspot a una DisplayRule e assegna come valore un indirizzo URL. L’URL ha una stringa di query che ricerca il nome dello stato selezionato. L’ASP chiamato attraverso l’URL riceve e processa il nome dello stato.
Nota:  Non si usa la parola chiave "Set" nell’assegnazione dell’oggetto FeatureSymbology all’oggetto DisplayRule.  Se si prova ad eseguire il Set si ottiene un’errore.
<HTML>
<HEAD>
</HEAD>

<BODY>
<%
'Restituzione dell’oggetto Map Server.
  Dim objSesMgr, objMS
  Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
  Set objMS = objSesMgr.MapServer("")
  objMS.Clear
' Impostazione del sistema di coordinate.
  objMS.SetCoordinateSystem "D:\Program Files\GeoMedia Web Map\Cfg\USA.csf"
' Connessione alla sorgente dati Access.
  objMS.Connect "Access.GDatabase", _
                "D:\Warehouses:\USSampleData.mdb", _
                "", "USA"

' La dimensione degli oggetti per il marker, la regola di visualizzazione, e la simbologia dell’hotspot.

  Dim objMarker
  Dim objDisplayRule
  Dim objSym

' Creazione dell’oggetto Marker.

   Dim Cols(1)
  Cols(0) = "STATE_NAME"
  Cols(1) = "TOTCRIME"

  Set objMarker = MapServer.AddMarker("Mark1", "USA", _
                 "States", "", Cols)
  objMarker.AddElements ""
' Creazione dell’oggetto DisplayRule.

  Set objDisplayRule = objMarker.NewDisplayRule
' Creazione di un oggetto FeatureSymbology per la simbologia dell’hotspot per la regola di visualizzazione.

  Set objSym = objMS.CreateObject("GMWebMap.GWMFeatureSymbology")
  objSym.FillColor = RGB(255,0,0)
  objSym.Color = RGB(100, 100, 100)
  objSym.Weight = 2
  objDisplayRule.HotspotSymbology = objSym
' Assegnazione di un URL all’azione.  Da notare che la parola chiave ".Attribute" è una parte della ‘stringa di query string e che il nome del campo associato era applicato al metodo AddMarker
' come una parte dell’array dei nomi delle collone.

  objDisplayRule.Action = "<%Root%" & ">" & _
     "/State.asp?StateName=<%.STATE_NAME%" & ">"
%>
</BODY>
</HTML>
 

Utilizzo dell’Oggetto DisplayRuleScript

L’Oggetto DisplayRuleScript fornisce un modo  per modificare ulteriormente una feature set in output prima di visualizzarla. Come l’oggetto QueryScript, ciò si attua mediante la teconologia di scripting di Windows.
La prerogativa del DisplayRuleScript è di fornire all’utente la possibilità di lanciare uno script su un recordset generato da una Query o un oggetto Marker. Ogni oggetto DisplayRuleScript deve essere associato con un appropriato oggetto DisplayRule. Questo si ottiene impostando la proprietà Script dell’oggetto DisplayRule al nome del nuovo oggetto DisplayRuleScript. L’oggetto DisplayRule padre passa il recordset e il campo geometria ricevuto da una Query o un Marker allo script, che usa un file esterno di script  per modificare il recordset di input e restituisce un nuovo recordset e un campo contenente la geometria. Il file di script può essere scritto in qualsiasi linguaggio campatibile con il Windows Scripting del server, come VBScript o JScript. Per maggiori informazioni sulle specifiche dei file script, vedere la sezione DisplayRuleScript File.
Un DisplayRuleScript è rappresentato dall’oggetto DisplayRuleScript. L’oggetto DisplayRuleScript viene  creato mediante una chiamata al metodo AddDisplayRuleScript dell’oggetto MapServer. Il nuovo oggetto DisplayRuleScript creato p aggiunto automaticamente alla collezione di Script dell’oggetto MapServer.
Nota: Durante la creazione dell’oggetto DisplayRuleScript si coinvolge una sola chiamata ad un metodo, la maggior parte delle operazioni di DisplayRuleScript vengono svolte nello script. Vedi la sezione DisplayRuleScript File per maggiori dettagli.
DisplayRuleScript Workflow:
  1. Creare una feature set usandol’oggetto Query, QueryScript, o Marker.
  2. Creare un’oggetto DisplayRule per la feature set.
    Workflow del Display Rule:
    1. Creare e configurare un’oggetto FeatureSymbology per i dati degli oggetti che vengono selezionati dalla QueryScript.
    2. (Opzionale) Creare e configurare un’oggetto FeatureSymbology per la simbologia dell’hotspot.
    3. (Opzionale) Impostazione del criterio del display range.
    4. (Opzionale) Assegnazione dei tool tips e delle azioni.
    5. (Opzionale) Assegnazione del nome del livello.
    6. (Opzionale) Assegnazione della priorità.
    7. Creazione dell’oggetto DisplayRuleScript, e assgnazione dell’oggetto stesso alla proprietà Script dell’oggetto DisplayRule.
  3. Generazione della mappa.
 
 
 
 

Creazione e manipolazione di un oggetto DisplayRuleScript

Il metodo AddDisplayRuleScript dell’oggetto MapServer crea un’oggetto DisplayRuleScript. Questo metodo richiede tre argomenti. Gli argomenti sono i seguenti:
  1. Name – Un nome univoco (nella collezione Scripts identifica l’oggetto DisplayRuleScript).
  2. EngineProgID – L’identificativo del motore di scripting che viene utilizzato per eseguire lo script. Esempio - "VBScript" o "JScript".
  3. ScriptFile – Il percorso completo dello script file.
Nota: Il metodo AddDisplayRuleScript genera l’oggetto DisplayRuleScript e specifica quale linguaggio è stato utilizzato nello script file, ma non esegue lo script file. La vera esecuzione dello script non avviene finché il feature set è generato dal Map Server.

Esempio

La sintassi del metodo AddDisplayRuleScript è la seguente:
Set objDRScript = MapServer.AddDisplayRuleScript("DisplayRuleScript1", _
                                                 "VBScript", _
                                                 "C:\QueryScript.vbs")
Dopo aver creato l’oggetto DisplayRuleScript, esso dev’essere associato con un oggetto DisplayRule impostando la proprietà Script del DisplayRule. La sintassi della proprietà Script è la seguente:
objDisplayRule.Script = "DisplayRuleScript1"
Lo script sarà eseguito quando una feature set sarà generata. Vedi la pagina DisplayRuleScript Examples per un’esempio funzionante. Vedi anche la sezione DisplayRuleScript File per dettagli sul contenuto del file script.
 
 

Il file script del DisplayRuleScript

Ogni oggetto DisplayRuleScript  ha associate un file script. Lo scopo del file script è di processare e restituire al MapServer un recordset in uscita. Molti processi del DisplayRuleScript vengono eseguiti nello script file. Il file può essere scritto in qualsiasi linguaggio supportato dal server Windows, come  VBScript o JScript.

Struttura del file Script

Il file script è composto da variabili private e globali, procedure, e funzioni. Le variabili globali sono accessibili dall’esterno dello script file usando la proprietà Engine dell’oggetto DisplayRuleScript (l’esempio DisplayRuleScript lo mostra in azione). C’è sono un’oggetto che richiede di essere nello script file, la procedura ProcessRecordse. Questa procedura è chiamata dall’oggetto MapServer per processare e restituire il recordset desiderato ProcessRecordset ha due argomenti:
  1. InputRecordset – Il recordset in imput. Lo script modificherà tale recordset in qualche modo e lo restituirà al Map Server.
  2. GeometryField – Il campo della geometria del recordset in input.
Il DisplayRuleScript restituisce il recordset creato attraverso un oggetto helper che Web Map rende disponibile allo script, chiamato ScriptHelper:
  • L’oggetto ScriptHelper – Da momento che linguaggi differenti possono avere alcune limitazioni passando argomenti al modulo chiamante, un altro oggetto di automazione è fornito allo script. Lo script si riferisce a questo oggetto tramite un nome predefinito, ScriptHelper. L’oggetto ScriptHelper ha le seguenti proprietà:
    1. OutputRecordset – Il recordset generato dallo script.
    2. OutputGeometryField – Il campo contenente le geometrie generato dallo script.
La procedura ProcessRecordset deve impostare queste due proprietà dell’oggetto ScriptHelper. Esempio:
'Impostazione delle proprietà di output. Queste due proprietà sono necessarie.
ScriptHelper.OutputGeometryField = objOutRS.GFields("Geometry")
ScriptHelper.OutputRecordset = objOutRS
Lo script ha anche accesso ad un altro oggetto di automazione predefinito, l’oggetto MapServer. Lo script può avere accesso a tutti i metodi e le proprietà dell’oggetto MapServer, così come il codice VBScript in un file ASP. 
Esempio:
Set RS = MapServer.DataSources("USA").Database.OpenRecordset("States")
 

Esempio di file DisplayRuleScript

Il seguente esempio mostra lo script file DisplayRuleScript.vbs utilizzato nella sezione DisplayRuleScript Example. Da tenere presente la seguente nota:
  • GetInputRecordsetFieldNames – Questa funzione informa il Map Server di tutti i campi attributo che saranno necessari nel processo dello script file, tanto come l'argomento Attributes del metodo AddMarker.

Codice di esempio

Option Explicit

Dim sFilter

'******************************************************************
' Sub: WriteLog
' Abstract: 
'   Used to write debug information to the MapServer logfiles. 
' Argomenti:
'   sString – La stringa da scrivere nel file di log
' Nota:
'   Il primo argomento della funzione WriteLog descrive il massimo livello di log
'   sotto il quale il log verrà eseguito. 
'   You must have logging turned on in GWM Administrator to the
'   level specified below (or higher).
'******************************************************************
Sub WriteLog(sString)
  MapServer.WriteLog 5, "DRScript::" & sString
End Sub

'*******************************************************************
' Sub: GetInputRecordsetFieldNames
' Abstract:
'   Used to specify any fields of the recordset that need to be 
'   retrieved for the ProcessRecordset function. Some fields are 
'   retrieved by default, such as any that are used for tooltips, 
'   etc. However, all others that are needed must be specified 
'   here in a comma-delimited string.
' Arguments:
'   None.
' Notes:
'   This is an optional function. If no further fields are required, 
'   assign an empty string ("") to the InputRecordsetFieldNames property
'   or omit this function.
'*******************************************************************
Sub GetInputRecordsetFieldNames()
  ScriptHelper.InputRecordsetFieldNames = "POP"
End Sub

'*******************************************************************
' Sub: ProcessRecordset 
' Abstract:
'   This is the required function for DisplayRuleScripts. This 
'   is where the main processing takes place. For this particular 
'   example, we filter out some records by using an AttributeFilterPipe.
' Arguments:
'   InputRecordset - The input recordset
'   GeometryField - The geometry field of the input recordset
' Notes:
'   This is a good example of what types of operations can be 
'   performed with the DisplayRuleScript, although this particular 
'   functionality could be better implemented in a Query object.
'*******************************************************************
Sub ProcessRecordset(InputRecordset, GeometryField)
  dim objAF

  WriteLog "ProcessRecordset() Called"

  'Create and set up the AttributeFilterPipe.
  Set objAF = CreateObject("Geomedia.AttributeFilterPipe")
  Set objAF.InputRecordset = InputRecordset
  objAF.Filter = sFilter

  'These last two lines are required.You must set the
  'OutputRecordset to the recordset you want returned,
  'and you must specify which field is the output
  'geometry field.
  ScriptHelper.OutputRecordset = objAF.OutputRecordset
  ScriptHelper.OutputGeometryField = objAF.OutputRecordset.GFields(GeometryField.Name)

  'Cleanup & Exit.
  Set objAF = Nothing
  WriteLog "ProcessRecordset() Exiting"
End Sub
 
 

 


Data creazione:09/01/2008 - Ultimo aggiornamento 09/01/2008