[Gfoss] mapfile - postgis

Luca Delucchi lucadeluge a gmail.com
Mar 6 Maggio 2008 15:24:36 CEST


Il giorno mar, 06/05/2008 alle 14.56 +0200, Emilia Venturato ha scritto:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Luca Delucchi ha scritto:
> 
> > Per prima cosa ho importato il file osm in postgres, il file manca di
> > una chiave primaria e perciņ ha dei problemi con qgis e mapserver, una
> > delle soluzioni che ho trovato in rete č di aggiungere il flag "Has
> > OIDs" in pgadminIII, ma non mi č permesso pur essendo l'amministratore
> > del database. Ho risolto aggiungendo una colonna seriale con chiave
> > primaria, anche se non penso sia la soluzione corretta.
> 
> Ciao Luca,
> manca una chiave primaria ma penso che ci sia un campo identificativo
> univoco no? In genere si chiama gid o id.

                          Tabella "public.italy_line"
  Colonna  |   Tipo   |
Modificatori                       
-----------+----------+----------------------------------------------------------
osm_id    | integer  | 
aeroway   | text     | 
amenity   | text     | 
bicycle   | text     | 
bridge    | text     | 
boundary  | text     | 
building  | text     | 
foot      | text     | 
highway   | text     | 
horse     | text     | 
junction  | text     | 
landuse   | text     | 
layer     | text     | 
learning  | text     | 
leisure   | text     | 
man_made  | text     | 
motorcar  | text     | 
name      | text     | 
natural   | text     | 
oneway    | text     | 
place     | text     | 
railway   | text     | 
ref       | text     | 
religion  | text     | 
residence | text     | 
route     | text     | 
sport     | text     | 
tourism   | text     | 
tunnel    | text     | 
waterway  | text     | 
z_order   | integer  | 
way_area  | real     | 
way       | geometry | 
key       | integer  | not null default
nextval('italy_line_key_seq'::regclass)
Indici:
    "italy_line_pkey" PRIMARY KEY, btree ("key")
    "italy_line_index" gist (way)

key e la chiave su key le ho aggiunte io; speravo che osm_id fosse
univoco, gli altri sicuramente non lo sono, ma avevo ricevuto questa
risposta

gis=# ALTER TABLE italy_line ADD primary key (osm_id);
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index
"italy_line_pkey" for table "italy_line"
ERROR:  impossibile creare un inidce univoco
DETAIL:  La tabella contiene valori duplicati.

i dati gli ho importati con osm2pgsql

> Se c'e' basta trasformare quello in chiave primaria (altrimenti l'idea
> di mettere una colonna identificativa con chiave primaria non e' affatto
> sbagliata):
> 
> da riga di comando:
> 
> ALTER TABLE nometabella ADD CONSTRAINT nomechiaveprimaria
> PRIMARY KEY (campo_con_id_univoco);
> 
> altrimenti da pgadminIII c'e' modo di mettere una chiave primaria su una
> colonna.

> Poi pero' quando usi mapserver devi dirgli che usi quel campo come
> chiave primaria perche', se non ricordo male, di default cerca l'oid di
> postgres.
> 

Non l'ho letto da nessuna parte comunque cerco di informarmi meglio

> 
> ciao
> Lia
> 

ciao
Luca




Maggiori informazioni sulla lista Gfoss