{{tag>sgbd serveur réseau BROUILLON}}
----
====== Postgis ======
====Ce qu'est postgis====
[[http://postgis.refractions.net/|Postgis]] est une extension de [[postgresql|postgresql]] qui permet la gestion d'objets géographiques. Concrètement la cartouche spatiale postgis ajoute au serveur :
* la possibilité de définir le type de champ //geometry//
* l'ensemble des fonctions permettant les traitements géographiques
* la base de référence des projections géographiques //spatial_ref_sys//
* la base de gestion des attributs géographiques des tables //geometry_columns//
====Installation====
Installer le paquet correspondant à votre version de postgres, exemples:
* [[apt://postgresql-14-postgis-3|postgresql-14-postgis-3]] sous [[:jammy]]
* [[apt://postgresql-13-postgis-3|postgresql-13-postgis-3]] sous [[:focal]]
* [[apt://postgresql-10-postgis-2.4|postgresql-10-postgis-2.4]] sous [[:bionic]]
Bien que déconseillé pour des grosses bases de données postgres, il est également possible d'utiliser un conteneur [[docker]] [[https://hub.docker.com/r/postgis/postgis/|postgres-postgis]]. Vous pouvez consulter le [[https://dokuwiki-arar.mom.fr/doku.php?id=informatique:api-rest:postgrest|tuto Postgrest]] qui y fait référence.
Postgis utilise le schéma par défaut **//public//**, ne pas le supprimer !
Les paquets supplémentaires suivants seront installés :
libgeos-3.2.2 libgeos-c1 libproj0 postgis proj-data
Les scripts nécessaires à la couche géographique de postgresql sont installé dans le dossier\\
// /usr/share/postgresql/9.1/contrib/postgis-1.5/// ou\\
// /usr/share/postgresql/10/contrib/postgis-2.4///
====Donner à une base la capacité géographique====
[[https://sist.pages.in2p3.fr/anf20-geomatique/02_bdd/02_1_notions_postgresql_postgis.html|Support de cours d'une formation SIG (partie sur PostGis)]]
Si le serveur dispose bien du module PostGis, il suffit d'exécuter sur la base :\\
CREATE EXTENSION "postgis";
FIXME les infos ci-dessous sont sans doute obsolète (indisponible avec postgresql 13).
Les scripts donnés ci-après prennent pour hypothèse qu'un nouvel utilisateur a été créé avec la méthode [[postgresql#pour_aller_plus_loin|recommandée]]
Tout d'abord, créer la base de données en question
createdb -U
Puis on utilser le rôle postgres (super user postgresql)
$ sudo -i -u postgres
pour exécuter dans cet ordre les scripts suivants :
psql -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
puis on quitte le shell postgres
exit
Si vous êtes amenés à créer plusieurs bases géographiques, il peut être intéressant de créer une base qui serve de modèle, par exemple //template_postgis//
Il est ensuite très facile de créer une base géographique en appelant ce modèle lors de la création d'un base
createdb -U -T template_postgis
Pour faire des imports et des exports (car la fonction sur phppgadmin est bancale) :
$ sudo -i -u postgres
export :
pg_dump > nom_de_la_base.pgdump
import:
cat nom_de_la_base.pgdump | psql -d nom_de_la_base
----
//Contributeurs : [[utilisateurs:yannick_LM|Yannick]], [[utilisateurs:sparky|Sparky]], [[utilisateurs:elemmire|Elemmire]], [[utilisateurs:aldian|Aldian]], [[utilisateurs:fred|Fred]], [[utilisateurs:xavierjm|XAVIER_jean-marie]], [[utilisateurs/bcag2]]. //