User Tools

Site Tools


tecnica:gps_cartografia_gis:mapserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tecnica:gps_cartografia_gis:mapserver [2011/05/04 10:25] – [Parametri nella query su attributi] niccolotecnica:gps_cartografia_gis:mapserver [2013/10/04 12:26] (current) – [Parametro map nell'URL] niccolo
Line 51: Line 51:
  
 In questo caso lo script CGI ha ricevuto come parametri GET il nome del file ''**.map**'' che definisce l'immagine da generare e il parametro ''**mode=map**'' che indica di restituire semplicemente l'oggetto bitmap, senza la pagina interattiva predefinita (''**mode=browse**''). In questo caso lo script CGI ha ricevuto come parametri GET il nome del file ''**.map**'' che definisce l'immagine da generare e il parametro ''**mode=map**'' che indica di restituire semplicemente l'oggetto bitmap, senza la pagina interattiva predefinita (''**mode=browse**'').
 +
 +===== Parametro map nell'URL =====
 +
 +Non è bello che nell'URL compaia per esteso la path del mapfile, sia per un discorso di sicurezza (si rivela la struttura interna del filesystem), sia per evitare di essere dipendenti da una particolare installazione. Tramite opportune **variabili di ambiente** è possibile modificare il comportamento di MapServer.
 +
 +Le variabili di ambiente possono essere impostate tramite la direttiva **''SetEnv''** di Apache, ad esempio inserita in una sezione ''Directory''.
 +
 +<file>
 +<Directory "/usr/lib/cgi-bin">
 +     AllowOverride None
 +     Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +     Order allow,deny
 +     Allow from all
 +     # CGI-MapServer environment variables:
 +     # Check mapfiles againts this path:
 +     #SetEnv MS_MAP_PATTERN "^/usr/local/lib/cgi-mapserver/"
 +     # Disallow mapfile full path, use env vars instead.
 +     SetEnv MS_MAP_NO_PATH "true"
 +     # To use this mapfile, put map=MAP_ORTOFOTO2011 into the URL:
 +     SetEnv MAP_ORTOFOTO2011 "/usr/local/lib/cgi-mapserver/ortofoto2011.map"
 +</Directory>
 +</file>
 +
 +^ ''MS_MAP_PATTERN''    | Con questa direttiva il parametro map ricevuto dal CGI è il percorso del mapfile, ma viene validato rispetto ad una espressione regolare. Si impedisce di poter scegliere arbitrariamente il mapfile da remoto.  |
 +^ ''MS_MAP_NO_PATH''    | Se questa variabile è istanziata, il parametro map non viene interpretato come percorso del mapfile, ma come il nome di una variabile di ambiente che a sua volta indica il mapfile.  |
 +^ ''MAP_ORTOFOTO2011''  | Esempio di variabile di ambiente che punta al mapfile.  |
  
 ===== MapFile ===== ===== MapFile =====
Line 93: Line 119:
 Quando si effettua una query sugli attributi di un layer, nella richiesta CGI-BIN è possibile includere alcuni parametri per filtrare il risultato della ricerca: Quando si effettua una query sugli attributi di un layer, nella richiesta CGI-BIN è possibile includere alcuni parametri per filtrare il risultato della ricerca:
  
-^ mode     | Se vale **''itemquery''** seleziona una sola feature, con **''itemnquery''** seleziona un insieme di feature.  |+^ mode     | Se vale **''itemquery''** seleziona una sola feature, con **''itemnquery''** seleziona tutte le feature.  |
 ^ qlayer   | Obbligatorio: il nome del layer da interrogare.  | ^ qlayer   | Obbligatorio: il nome del layer da interrogare.  |
 ^ qstring  | Obbligatorio: la clausola di selezione. Ad esempio **''idgpx=156''**. Per un layer PostgreSQL si tratta di una clausola WHERE.  | ^ qstring  | Obbligatorio: la clausola di selezione. Ad esempio **''idgpx=156''**. Per un layer PostgreSQL si tratta di una clausola WHERE.  |
Line 277: Line 303:
 // Add the only one layer. // Add the only one layer.
 $layer = ms_newLayerObj($map); $layer = ms_newLayerObj($map);
-$layer->set('name',           'bnd'); +$layer->setConnectionType(MS_POSTGIS); 
-$layer->set('type',           MS_LAYER_POLYGON); +$layer->set('name',       'bnd'); 
-$layer->set('status',         MS_DEFAULT); +$layer->set('type',       MS_LAYER_POLYGON); 
-$layer->set('connectiontype', MS_POSTGIS); +$layer->set('status',     MS_DEFAULT); 
-$layer->set('connection',     $DB_CONNECT); +$layer->set('connection', $DB_CONNECT); 
-$layer->set('data',           'bnd FROM vmap0_polbnda using unique id and using SRID=4326');+$layer->set('data',       'bnd FROM vmap0_polbnda using unique id and using SRID=4326');
  
 // Add some colors. // Add some colors.
tecnica/gps_cartografia_gis/mapserver.1304497525.txt.gz · Last modified: 2011/05/04 10:25 by niccolo