|
Aiuto | Contattaci | Mappa del sito | |
||||||||
|
|
||||||||
![]() |
|
Fishwm.com |
||||||
|
|
||||||||
|
Traduzione manuale del programmatore - Geomedia Web Map© |
Giuda del ProgrammatoreIl 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 preliminariprima 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 baseIl 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 ServerLa 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:
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>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
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 objMarkerDim objDisplayRuleSet objMarker = objMS.AddMarker("CitiesAll", "USA", "Cities", "", "")objMarker.AddElements "" Set objDisplayRule = MapServer.NewDisplayRuleDeterminazione 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, AutoScaleDove:
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 ScaleIl 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 objAutoScaleMapServer.AddRangeAutoScale("AS1")objAutoScale.Multiplier = 1objAutoScale.MinimumWindow = 100000objAutoScale.MaximumWindow = 1000000La 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 MarchioUn 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 MappaIl 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 datiGeoMedia 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 AccessCollegandosi 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/INFOConnecting 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/INFOLa 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 ArcViewConnettersi 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 ArcViewLa 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 QueryUn 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:
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 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à.
Cereazione e manipolazione di un oggetto QueryIl metodo AddQuery dell’oggetto MapServer crea un’oggetto Query. Questo metodo richiede tre argomenti. Gli argomenti sono i seguenti:
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 codiceLa 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 objectSet objSym = objMapSvr.CreateObject("GMWebMap.GWMFeatureSymbology")'Set the desired symbology attributesobjSym.Color = RGB(0,0,255)objSym.Weight = 1objSym.Style = 0Nota: 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 QueryIl 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 CreateMapByRangeRng = 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 QueryScriptUn 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:
Creazione e manipolazione di un oggetto QueryScriptIl metodo AddQueryScript dell’oggetto MapServer crea un’oggetto QueryScript. Questo metodo richiede tre argomenti. Gli argomenti sono i seguenti:
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 esempioLa 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 objectSet objSym = objMapSvr.CreateObject("GMWebMap.GWMFeatureSymbology")'Set the desired symbology attributesobjSym.Color = RGB(0,0,255)objSym.Weight = 1objSym.Style = 0objDisplayRule.DisplaySymbology = objSymNota: 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 QueryScriptIl 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
Creazione e manipolazione di un oggetto MarkerIl 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:
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 MarkerUn 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 DataI 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 RasterQuesto 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>
|
|
|