User Tools

Site Tools


tecnica:gps_cartografia_gis:postgis

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
Next revisionBoth sides next revision
tecnica:gps_cartografia_gis:postgis [2012/11/15 22:25] – [Creazione di un template_gis] niccolotecnica:gps_cartografia_gis:postgis [2017/11/15 16:24] – [Creazione di un database geografico] niccolo
Line 1: Line 1:
-====== PostGIS ======+====== PostGIS su Debian ====== 
 + 
 +===== PostGIS 2.3 ===== 
 + 
 +Distribuzione di riferimento: **Debian GNU/Linux** Stretch con **PostgreSQL 9.6** e **PostGIS 2.3.1**. 
 + 
 +Pacchetti installati: 
 + 
 +  * **postgresql-9.6** 
 +  * **postgresql-9.6-postgis-2.3** 
 +  * **postgresql-9.6-postgis-2.3-scripts** 
 +  * **postgresql-contrib-9.6** 
 +  * **postgresql-client-9.6** 
 + 
 +==== Creazione di un database geografico ==== 
 + 
 +È necessario collegarsi al database con i privilegi di database administrator: 
 + 
 +<code> 
 +# su - postgres 
 +> psql 
 +postgres=# 
 +</code> 
 + 
 +quindi si crea un **utente** e un **database** su cui l'utente ha pieni poteri. Dopo essersi connessi al database si crea al suo interno le estensioni **PostGIS**: 
 + 
 +<code> 
 +CREATE USER "strade" PASSWORD 'MySecret'; 
 +CREATE DATABASE strade OWNER strade 
 +    TEMPLATE template0 LC_COLLATE = 'it_IT.UTF-8' LC_CTYPE = 'it_IT.UTF-8' 
 +    ENCODING 'UTF8'; 
 +\connect strade 
 +CREATE EXTENSION postgis; 
 +</code> 
 + 
 +A differenza delle vecchie versioni di PostGIS (es. la 1.3), non c'è da impazzire con i permessi da assegnare alle tabelle speciali. La **''spatial_ref_sys''** (che contiene le definizioni dei sistemi di riferimento) va bene che sia in sola lettura, la **''geometry_columns''** e la **''geography_columns''** sono adesso delle semplici VIEW. 
 +==== Restore di un dump di PostgreSQL 9.4/PostGIS 2.1 ==== 
 + 
 +FIXME 
 +===== PostGIS 1.3 =====
  
 Distribuzione di riferimento: **Debian GNU/Linux** Lenny con **PostgreSQL 8.3** e **PostGIS 1.3.3**. Distribuzione di riferimento: **Debian GNU/Linux** Lenny con **PostgreSQL 8.3** e **PostGIS 1.3.3**.
Line 27: Line 66:
   * [[http://www.postgresql.org/docs/current/static/index.html|Manuale PostgreSQL]]   * [[http://www.postgresql.org/docs/current/static/index.html|Manuale PostgreSQL]]
  
-===== Creazione di un template_gis =====+===== Creazione di un database geografico e di un template_gis =====
  
-Queste le istruzioni per PostgreSQL 8.4 e PostGIS 1.5 su una Debian Squeeze. Dal prompt dei comandi SQL, come utente //postgres// (amministratore del database):+Queste le istruzioni per **PostgreSQL 8.4** **PostGIS 1.5** su una Debian Squeeze. Dal prompt dei comandi SQL, come utente //postgres// (amministratore del database):
  
 <code> <code>
Line 40: Line 79:
 </code> </code>
  
-Con PostgreSQL 9.1 di su Debian Wheezy c'è qualche differenza:+Con **PostgreSQL 9.1** di su Debian Wheezy c'è qualche differenza:
  
 <code> <code>
Line 65: Line 104:
 UPDATE pg_database SET datistemplate='t' WHERE datname = 'template_gis'; UPDATE pg_database SET datistemplate='t' WHERE datname = 'template_gis';
 </code> </code>
 +
 +Con **PostgreSQL 9.4** e **PostGIS 2.1** (Debian Jessie) diventa tutto più semplice, al punto che creare un template_gis è sostanzialmente inutile perchè per abilitare spazialmente un database è sufficiente il comando ''CREATE EXTENSION'':
 +
 +<code sql>
 +CREATE DATABASE strade OWNER strade TEMPLATE template0 
 +    LC_COLLATE = 'it_IT.UTF-8' LC_CTYPE = 'it_IT.UTF-8';
 +\connect strade
 +CREATE EXTENSION postgis;
 +</code>
 +
 +La tabella **''spatial_ref_sys''** viene creata come in precedenza, mentre la **''geometry_columns''** e la **''geography_columns''** sono adesso delle semplici VIEW.
 +
 +Se si intende effettuare il restore di vecchi dump, potrebbe essere necessario creare i nomi di alcune funzioni ormai obsolete. Ad esempio il restore di questa tabella fallisce
 +
 +<code sql>
 +CREATE TABLE luoghi (
 +    id integer NOT NULL,
 +    wpt geometry,
 +    CONSTRAINT enforce_dims_wpt CHECK ((ndims(wpt) = 2))
 +);
 +</code>
 +
 +perché la funzione **''ndims()''** non esiste più, essendo stata sostituita **''ST_ndims()''**. In questo caso si può definire le funzioni //legacy// eseguendo l'apposito script:
 +
 +<code>
 +\connect strade
 +\i /usr/share/postgresql/9.4/contrib/postgis-2.1/legacy.sql
 +</code>
 +
 +Esiste anche lo script **''uninstall_legacy.sql''**, ma per poterlo eseguire con successo si deve ovviamente aggiornare tutte le occorrenze degli oggetti legacy.
 ==== Creazione del linguaggio ==== ==== Creazione del linguaggio ====
  
tecnica/gps_cartografia_gis/postgis.txt · Last modified: 2017/11/15 17:02 by niccolo