[Gfoss] errore in creazione mappa da più vettoriali

Ciao a tutti/e

ho creato una serie di mappe vettoriali (bacini
idrografici) con tutta una serie di attributi (nome, area, quota media
ecc...).
Vorrei creare un'unica mappa con l'unione di tutti i
vettoriali.

La procedura che sto seguendo è la seguente:

Lanciare “v.
patch” settando “copy also the attribute table”.
Alcune aree vettoriale
possono presentare ai confini alcune sovrapposizioni, per cui alcune
aree del “patch” risultante potrebbero presentare valori negativi.

Per
cui lanciare “v.clean” sul “patch” settando le seguenti modalità:

type
= point, line, boundary, centroid, area
tool = break, rmdupl, bpol,
rmarea
thresh = 1,1,1,2000

Dopo di che lanciare "v.to.db" che
ricalcolerà nuovamente le aree.

Mi succede però che il "patch"
risultante non mi "carica" alcune aree vettoriali da me create.
Quando
poi vado a lanciare il "clean", vedo che alcune aree che nel "partc"
non sono presenti, nel "clean" sono presenti ed alcune aree presenti
nel "patch", nel "clean" non mi risultano essere presenti.
...nono so
se mi sono spiegato.

qualcuno ha qualche idea??

grazie
marco

Cerchi la casa dei tuoi sogni? Consulta la mappa dei cantieri aperti su tiscali.casa.ithttp://tiscali.casa.it/vendita?partner=Tiscali

Ambiente di lavoro:

MS4W version 2.3.1mapscript 5.2.1

Apache 2.2.10
PHP 5.2.6

pmapper 4.0 beta2Obiettivo:

filtrare tutti i layer della mappa in base ai campi DAL(datainizio) e AL (datafine). Gestendo ormai lo storico di molti layer vogliamo che l’utente possa scegliere la data alla quale visualizzare la mappa.

Tentativi: infiniti…

Abbiamo provato ad inserire un filtro all’interno del file globals.php: file che gestisce l’inizializzazione
dell’oggetto $map.
Il codice è il seguente:

//Codice preesistente
/**

  • INITIALIZE MAP
    */
    $PM_MAP_FILE = $_SESSION[‘PM_MAP_FILE’];
    $map = ms_newMapObj($PM_MAP_FILE);

//Codice aggiunto
$datafiltro = $_REQUEST[‘datafiltro’];
if(isset($datafiltro)){
$layer = $map->getLayerByName(‘edifici1’);
$layer->setFilter(“([DAL] <= $datafiltro AND [AL] >= $datafiltro )”);
$map->save($PM_MAP_FILE);//Funzione che sovrascrive il .map; se viene omessa il filtro non funziona
$map->draw();
}
//Fine codice aggiunto

Il codice funziona e filtra per date in base al parametro che gli viene passato da url.
Il problema è che ad ogni richiesta sovrascrive il .map.
Vorremmo fare in modo che si possa inoltrare il filtro senza che venga sovrascritto il .map, per evitare che si creino conflitti tra processi concorrenti.

Pia Miccoli
tecnico Gis
Ufficio Sic
Comune di Fano
tel. 0721-887746



Comune di Fano - www.comune.fano.ps.it

Questo messaggio è destinato unicamente alle persone sopra indicate e le informazioni contenute sono da considerarsi strettamente riservate. Se avete ricevuto questo messaggio per errore, siete pregati di rispedirlo al mittente. Grazie.

Ciao Pia,

Tentativi: infiniti…

è questo è il bello dello smanettamento :wink:

//Codice preesistente
/**

  • INITIALIZE MAP
    */
    $PM_MAP_FILE = $_SESSION[‘PM_MAP_FILE’];
    $map = ms_newMapObj($PM_MAP_FILE);

//Codice aggiunto
$datafiltro = $_REQUEST[‘datafiltro’];
if(isset($datafiltro)){
$layer = $map->getLayerByName(‘edifici1’);
$layer->setFilter(“([DAL] <= $datafiltro AND [AL] >= $datafiltro )”);
$map->save($PM_MAP_FILE);//Funzione che sovrascrive il .map; se viene omessa il filtro non funziona
$map->draw();
}
//Fine codice aggiunto

il discorso potrebbe essere giusto con qualche pecca nel senso che una volta che aggiornate la versione di pmapper dovete riaggiustare il global.php… ma male di poco :slight_smile:

l’oggetto $map che genera nel global.php pmapper se lo porta dietro in tutto il resto degli cript che usa… non c’è bisogno che salviate il map file tutte le volte e non dovete neanche lanciare il metodo draw() che lo lancia lui nello script cuore di pmapper pmap.php alla fine quando rende l’ìimmagine di mappa

quindi il codice basta che sia così:

$datafiltro = $_REQUEST[‘datafiltro’];
if(isset($datafiltro)){
$layer = $map->getLayerByName(‘edifici1’);
$layer->setFilter(“([DAL] <= $datafiltro AND [AL] >= $datafiltro )”);
}

e il tutto dovrebbe funzionare…

facci sapere se va

ciao
W

···
-- 

Walter Lorenzetti phD
email: [lorenzetti@gis3w.it](mailto:lorenzetti@gis3w.it)
skype: aiki74
Cell: (+39) 347-6597931  Tel+Fax: (+39) 0588 85021
Viale Giuseppe Verdi n. 24, 51016
Montecatini Terme,Pistoia
P.IVA 01686280478
Italy

Il 28 settembre 2011 09:16, Walter Lorenzetti <lorenzetti@gis3w.it> ha scritto:

Ciao Pia,

Tentativi: infiniti.....

è questo è il bello dello smanettamento :wink:

//Codice preesistente
/**
* INITIALIZE MAP
*/
$PM_MAP_FILE = $_SESSION['PM_MAP_FILE'];
$map = ms_newMapObj($PM_MAP_FILE);

//Codice aggiunto
$datafiltro = $_REQUEST['datafiltro'];
if(isset($datafiltro)){
$layer = $map->getLayerByName('edifici1');
$layer->setFilter("([DAL] <= $datafiltro AND [AL] >= $datafiltro )");
$map->save($PM_MAP_FILE);//Funzione che sovrascrive il .map; se viene
omessa il filtro non funziona
$map->draw();
}
//Fine codice aggiunto

il discorso potrebbe essere giusto con qualche pecca nel senso che una volta
che aggiornate la versione di pmapper dovete riaggiustare il global.php...
ma male di poco :slight_smile:

l'oggetto $map che genera nel global.php pmapper se lo porta dietro in tutto
il resto degli cript che usa... non c'è bisogno che salviate il map file
tutte le volte e non dovete neanche lanciare il metodo draw() che lo lancia
lui nello script cuore di pmapper pmap.php alla fine quando rende
l'ìimmagine di mappa

quindi il codice basta che sia così:

$datafiltro = $_REQUEST['datafiltro'];
if(isset($datafiltro)){
$layer = $map->getLayerByName('edifici1');
$layer->setFilter("([DAL] <= $datafiltro AND [AL] >= $datafiltro )");
}

e il tutto dovrebbe funzionare...

Anche secondo me non serve risalvare il mapfile e ridisegnare la mappa.
Il dubbio che mi viene è se Pmapper usa la keyword FILTER per altre cose..

Ciao
L.

--
Luca Casagrande
twitter: lucacasagrande