{{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]]. //