Suite

Installation de Postgis

Installation de Postgis


J'installe Postgis sur mon serveur Debian en suivant ces instructions :

http://postgis.net/install/ (Ubuntu/Debian)

https://wiki.postgresql.org/wiki/Apt

Cependant, après avoir suivi les instructions, il semble que j'ai installé PostGres (9.4), mais pas PostGIS.

Dois-je installer quelque chose de plus qui a été omis dans les instructions ?

Puis-je en quelque sorte ajouter PostGIS en tant que plugin / extension PostGres?


J'ai fait un article de blog détaillé sur l'installation de PostgreSQL 9.3/PostGIS 2.1 il y a quelques mois à l'adresse http://geospatial.commons.gc.cuny.edu/2014/10/25/installing-postgresqlpostgis-on-linux-mint-17/ . Ce qui s'est mal passé dans votre cas n'est pas immédiatement clair pour moi, car vous n'avez pas vraiment décrit ce que vous avez fait. En particulier, les instructions d'installation de PostGIS que vous liez pour décrire la compilation à partir des sources, ainsi que l'utilisation des référentiels officiels, et vous ne dites pas ce que vous avez fait. Le fait que vous receviez le message quecontrôle.postgisest manquant lorsque vous essayezCRÉER UNE EXTENSION postgis;semble impliquer que vous n'avez pas installé avec succès le package PostGIS. Tu pourrais essayer

dpkg-query -l postgis

et voir si ça revient

ii postgis 2.1.3+dfsg-3 i386 Prise en charge des objets géographiques pour Po

ou toute autre version.

Si PostGIS n'est pas installé, vous pouvez l'installer à partir du référentiel PostgreSQL, qui, si vous avez suivi les instructions sur https://wiki.postgresql.org/wiki/Apt, est celui que je pense que vous utilisez.

sudo apt-get install postgresql-9.4-postgis-2.1

Notez que

sudo apt-get install postgis

devrait également fonctionner, mais je ne sais pas quelle version de PostGIS il tentera d'installer puisque vous êtes connecté à la fois aux référentiels PostgreSQL et Ubuntu, et le référentiel Ubuntu n'est toujours que jusqu'à PostgreSQL 9.3. Il peut donc y avoir un problème de dépendance, mais je ne vais pas tenter de le confirmer sur mon système.

Une fois celui-ci installé (vous pouvez confirmer en recherchant/usr/share/postgresql/9.4/extension/postgis.control, le fichier qui apparaissait comme manquant auparavant), vous pouvez continuer en vous connectant à PostgreSQL avec un compte SUPERUSER, en vous connectant à votre base de données (ne pas la base de données postgres, votre base de données actuelle) et

CRÉER UNE EXTENSION postgis; CRÉER UNE EXTENSION postgis_topology; CRÉER UNE EXTENSION fuzzystrmatch ; CRÉER UNE EXTENSION postgis_tiger_geocoder;

Notez quefuzzystrmatch(ce qui est utile pour le géocodeur) nécessite lepostgresql-contribpaquet.

Je passe beaucoup de temps ici, mais il est possible que je n'aie pas correctement identifié le problème, donc je ne veux pas m'étendre là-dessus jusqu'à ce que je sache que nous sommes sur la bonne voie. Veuillez également vous référer à mon article de blog ci-dessus pour plus de détails.


Vous installez depuis apt ou compilez depuis les sources ?

Tu peux essayer:

sudo ldconfig

Cela rechargera quelques liens de bibliothèque. Cela est généralement susceptible de se produire si vous avez installé à partir des sources.

Si cela ne fonctionne toujours pas, créez un fichier dans /etc/ld.so.conf.d/ names geos.conf et ajoutez ce contenu au fichier : /usr/local/lib (c'est l'adresse où votre geos, gdal, etc., les bibliothèques sont installées. si elles sont dans un emplacement différent, modifiez le /usr/local/lib pour refléter le répertoire en conséquence). Après cela, faites un autre sudo ldconfig et réessayez.

Autre idée : installez-vous l'extension en utilisant l'utilisateur postgres sur le système d'exploitation ? Sinon, essayez d'utiliser l'utilisateur postgres.


Vous devez également installer l'extension PostGIS, elle ne s'installe pas par défaut en installant simplement PostgreSQL.

mode d'emploi ici :

http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt

Il va falloir changer un peu pour le 9.4


Partie 1. Introduction à PostGIS

Bienvenue à PostGIS en action, deuxième édition. PostGIS est une extension de base de données spatiale pour le système de gestion de base de données PostgreSQL. Ce livre vous apprendra les bases des bases de données spatiales en général, les concepts clés des systèmes d'information géographique (SIG), et plus précisément comment configurer, charger et interroger une base de données compatible PostGIS. Vous apprendrez à effectuer des actions avec des lignes simples de code SQL que vous pensiez possibles uniquement avec un système SIG de bureau. En utilisant le SQL spatial, une grande partie des tâches lourdes qui nécessiteraient de nombreuses étapes manuelles dans les outils SIG de bureau peuvent être scriptées et automatisées.

Ce livre est divisé en trois sections et quatre annexes. La partie 1 couvre les principes fondamentaux des bases de données spatiales, des SIG et du travail avec des données spatiales. Bien que la partie 1 se concentre sur PostGIS, de nombreux concepts que vous apprendrez dans la partie 1 sont également applicables à d'autres bases de données relationnelles spatiales.

Le chapitre 1 couvre les principes fondamentaux des bases de données spatiales et ce que vous pouvez faire avec une base de données spatialement activée que vous ne pouvez pas faire avec une base de données relationnelle standard. Il introduit également des fonctionnalités assez uniques à PostGIS. Il se termine par un exemple rapide de chargement de données de longitude/latitude de restaurants de restauration rapide et de conversion en points géométriques, de chargement de données routières à partir de fichiers de formes Esri et de résumés spatiaux en joignant ces deux ensembles de données.


Problèmes de dépendance des packages lors de l'installation de PostGIS 2.4.3

Sur une machine RedHat 7.4, j'ai essayé de faire une "yum install postgres24_96" aujourd'hui
et a obtenu ce qui suit :

Erreur : Paquet : postgis24_96-2.4.3-1.rhel7.x86_64 (pgdg96)
Nécessite : libproj.so.12()(64bit)
Erreur : Paquet : postgis24_96-2.4.3-1.rhel7.x86_64 (pgdg96)
Nécessite : proj49
Erreur : Paquet : postgis24_96-2.4.3-1.rhel7.x86_64 (pgdg96)
Nécessite : geos36 >= 3.6.2
Vous pouvez essayer d'utiliser --skip-broken pour contourner le problème
Vous pouvez essayer d'exécuter : rpm -Va --nofiles --nodigest

J'ai fait la même chose plus tôt cette semaine qui a installé 2.4.2 et cela a bien fonctionné.

Une chose que j'ai remarquée est que la taille du paquet pour 2.4.3 est beaucoup plus petite que
2.4.2:

]# miam info postgis24_96
Plugins chargés : amazon-id, rhui-lb, search-disabled-repos
Forfaits disponibles
Nom : postgis24_96
Arc : x86_64
Version : 2.4.3
Version : 1.rhel7
Taille : 6.2M
Dépôt : pgdg96/7Server/x86_64
Résumé : Extensions des Systèmes d'Information Géographique à PostgreSQL
URL : http://www.postgis.net/
Licence : GPLv2+
Description : PostGIS ajoute le support des objets géographiques à PostgreSQL
objet-relationnel
: base de données. En effet, PostGIS "permet dans l'espace" la
serveur PostgreSQL,
: permettant de l'utiliser comme base de données spatiale backend pour
informations géographiques
: systèmes (SIG), un peu comme ESRI's SDE ou Oracle's Spatial
extension. PostSIG
: suit la "Simple Features Specification d'OpenGIS pour SQL"
et a été
: certifié conforme au profil "Types et Fonctions".

]# miam info postgis24_96
Plugins chargés : amazon-id, rhui-lb, search-disabled-repos
Paquets installés
Nom : postgis24_96
Arc : x86_64
Version : 2.4.2
Version : 1.rhel7
Taille : 101M
Repo : installé
Depuis le dépôt : pgdg96
Résumé : Extensions des Systèmes d'Information Géographique à PostgreSQL
URL : http://www.postgis.net/
Licence : GPLv2+
Description : PostGIS ajoute la prise en charge des objets géographiques à PostgreSQL
objet-relationnel
: base de données. En effet, PostGIS "permet dans l'espace" la
serveur PostgreSQL,
: permettant de l'utiliser comme base de données spatiale backend pour
informations géographiques
: systèmes (SIG), un peu comme ESRI's SDE ou Oracle's Spatial
extension. PostSIG
: suit la "Simple Features Specification d'OpenGIS pour SQL"
et a été
: certifié conforme au profil "Types et Fonctions".

Comme solution de contournement, j'ai fait "yum install postgis24_96-2.4.2-1.rhel7" qui
réussi.


Problèmes d'installation de PostGIS 2.0

J'ai essayé d'installer postgis 2.0 sur mon ordinateur (Windows 7 32 bits) afin de bénéficier de fonctionnalités étendues. Cependant, je n'ai pas réussi à l'installer avec succès. Ma version de postgreSQL est 9.1.1-1, le binaire Windows 32 bits le plus récent disponible.

Lors du téléchargement de postgis 2.0, le lien vers le téléchargement contient les instructions suivantes :

Pour PostgreSQL 9.1 (compilé par rapport à PostgreSQL 9.1.0 - la structure de la note 9.1 a changé dans la version bêta 1, donc cela ne fonctionnera pas avec les versions alpha mais devrait convenir à toutes les versions bêta, aux versions candidates et à la version finale 9.1.0) avec Loader/Dumper, y compris IHM graphique. Comprend également des fichiers d'extensions à installer à l'aide du nouveau PostgreSQL

Cela implique pour moi que je dois obtenir la version 9.1.0 de postgreSQL pour que Postgis fonctionne correctement, mais je ne peux pas trouver les binaires pour cette version.

J'ai essayé d'installer sur mon installation postgres 9.1.1 mais cela a échoué lamentablement (lorsque j'ai exécuté le fichier .bat, il vient de créer un flux d'erreurs en cascade).

Depuis, je viens de désinstaller postgres afin de m'assurer que l'installation n'est pas corrompue par tous mes efforts infructueux, et j'ai supprimé toutes les bases de données préexistantes afin qu'elles ne réapparaissent plus et éventuellement fassent dérailler mon installation.

Je suppose que je pourrais essayer de créer à partir des sources, mais la page de téléchargement indique ce qui suit en ce qui concerne cette option :

Comme beaucoup de gens le savent qui ont essayé de créer des binaires PostGIS sous Windows, la configuration de l'environnement prend beaucoup de temps et est généralement sorcier.

Inutile de dire que j'aimerais éviter de le faire à tout prix, étant donné que je n'ai jamais rien construit à partir de la source auparavant.

Alors, est-ce que quelqu'un a réussi à mettre en place postgis 2.0 et toutes ses fonctionnalités sur un système Windows ? Si c'est le cas, j'apprécierais grandement que vous partagiez votre processus d'installation avec moi car je ne sais actuellement pas quoi faire (et oui, j'ai lu les readmes fournis avec le programme d'installation) !


PostSIG

Voici quelques décisions de pile, des cas d'utilisation courants et des critiques d'entreprises et de développeurs qui ont choisi PostGIS dans leur pile technologique.

Bien qu'il y ait eu des techniques très intelligentes qui ont permis d'effectuer des requêtes géographiques non prises en charge de manière native, elles sont incroyablement lentes dans le jeu long et sujettes aux erreurs au mieux.

MySQL a finalement introduit ses propres fonctions GEO et des opérations d'indexation spéciales pour les données de type SIG. J'ai prototypé avec cela, car MySQL est la base de données la plus familière pour moi. Mais peu importe ce que j'en faisais, combien de réglages je lui donnerais, combien je jouais avec, les résultats reviendraient incohérents.

C'était très décevant.

J'ai pensé, à ce stade, que SQL Server, étant une solution d'entreprise créée par l'un des plus grands développeurs de logiciels au monde, Microsoft, pourrait contenir un SIG décent.

Postgres est une solution de base de données avec laquelle je me familiarise encore, mais j'ai remarqué qu'elle n'avait pas de support intégré pour les SIG. Donc, hilarant, je n'y ai pas prêté trop d'attention. C'était jusqu'à ce que je tombe sur PostGIS et que mon monde change pour toujours.


Base de données spatiale : connectez-vous à PostgreSQL/PostGIS via QGIS

Pour visualiser les jeux de données dans PostgreSQl/PostGIS, vous pouvez connecter la base de données via un logiciel SIG, tel que QGIS ou ArcGIS. Voici les étapes générales pour accéder et visualiser les couches spatiales (tables), ainsi que les résultats des requêtes, ce qui est un moyen efficace d'examiner vos jeux de données, avec QGIS.

1. Ouvrez QGIS, sélectionnez Couche -> Ajouter une couche -> Ajouter des couches PostGIS, cela devrait ouvrir l'interface pour connecter une table PostGIS.

2. Dans la boîte de dialogue, cliquez sur "Nouveau", cela devrait ouvrir la boîte de dialogue pour configurer le serveur PostGIS et la base de données (nyc1). Entrez les informations pertinentes à l'étape 3, cliquez sur OK.

3. De retour dans la boîte de dialogue, cliquez sur « Connecter », vous pourrez voir toutes les tables de la base de données (par exemple, nyc1). Vous pouvez sélectionner n'importe quelle table, cliquez sur « Ajouter », puis vous pouvez la charger dans QGIS.

4. Si vous souhaitez gérer une base de données PostGIS similaire à pgAdmin et visualiser les résultats SQL (par exemple, tampon, résultats d'intersection) dans QGIS, cliquez sur 'Base de données' menu déroulant et ouvrez « DB Manager », qui devrait avoir une interface et une fonction similaires à celles de PgAdmin.

5. Une fois l'interface « DB manager » ouverte, vous pourrez voir plusieurs systèmes de bases de données spatiales dans le panneau de gauche. Cliquez sur "PostGIS", vous devriez pouvoir voir toutes les tables PostGIS connectées affichées (étape 2).

6. Sélectionnez « Fenêtre SQL » (étape 3), vous devez ouvrir l'interface pour permettre la saisie de vos instructions SQL. Dans cet exemple, vous sélectionnez au hasard 10 enregistrements de rues « select name, geom from nyc_streets limited 10 ».

7. Cliquez sur "Charger en tant que nouvelle couche" (étape 5), sélectionnez l'attribut "geom" à visualiser, cliquez sur "Charger maintenant", vous devriez pouvoir voir ces rues sélectionnées sont visualisées dans la zone de carte QGIS.

8. Vous pouvez également charger et visualiser des requêtes SQL plus complexes. Par exemple, vous pouvez générer une mémoire tampon de 500 mètres pour ces rues, en entrant "select name, st_buffer(geom, 500) as geom_buffer from nyc_streets limit 10", puis les charger en tant que couche de carte (Remarque : dans la colonne géométrie, vous besoin d'utiliser la nouvelle géométrie de tampon "geom_buffer" comme colonne de visualisation)

Veuillez consulter ce lien pour un didacticiel de connexion à PostgreSQL/PostGIS depuis ArcGIS.


PostGIS dérive des informations en utilisant la clé de l'espace¶

  • Prix ​​de vente moyen d'une zone arbitraire
  • Régions avec le plus grand nombre d'accidents de la route
  • Niveaux de revenu dans votre région
  • Distances entre votre région et l'école secondaire, le centre commercial, l'école primaire, l'hôpital le plus proche
  • Localisation approximative de cet endroit en fonction de l'adresse postale (en utilisant les données du réseau routier)
  • Population impactée par la panne

PostGIS ajoute un nouveau type de clé relationnelle - la clé de l'espace. Maintenant, au lieu d'une simple jointure comme l'égalité, vous pouvez avoir une jointure sur la distance entre cette chose et autre chose. Il y a une panne dans ce réseau de câble, qui est concerné ?

PostGIS est une extension de PostgreSQL et suit la norme SQL/MM¶

C'est similaire à ci-dessous mais contrairement à ceux-ci, c'est une extension plutôt qu'une partie de Db proprement dit

La plupart des systèmes de bases de données relationnelles ont une composante spatiale qui suit une norme appelée OpenGeospatial Simple Features for SQL qui s'est transformée en une norme SQL appelée SQL/MM (le MM est pour le multimédia).

Ce qui distingue PostGIS de ces autres, c'est que PostGIS ne fait pas partie de PostgreSQL proprement dit, alors que, comme les autres bases de données, le spatial est intégré. C'est à la fois une bonne et une mauvaise chose. C'est une mauvaise chose car c'est difficile à expliquer à d'autres personnes qui disposent de données spatiales facilement disponibles lorsqu'elles installent leur base de données relationnelle.

"PostgreSQL suit la norme SQL/MM si vous avez installé PostGIS"

Heureusement, il n'y en a pas trop, donc la plupart des discussions finissent par être, laissez-moi vous montrer comment utiliser le spatial dans "Votre base de données relationnelle" et pourquoi ce n'est pas aussi bon que PostGIS et vous devriez passer à PostgreSQL.

Où votre est "Oracle, SQL Server ou MySQL".

PostGIS n'a pas besoin de faire partie de PostgreSQL car PostgreSQL est facile à étendre sans toucher au noyau et la plupart des distributions de PostgreSQL facilitent l'installation de PostGIS. Il permet à PostGIS de se déplacer à son propre rythme, ce qui n'est pas complètement aligné sur le rythme de PostgreSQL.


Bienvenue

Merci d'avoir acheté le MEAP pour PostGIS en action, troisième édition. Ce livre s'adresse aux développeurs, aux professionnels des bases de données et des SIG, ainsi qu'aux chercheurs qui ont besoin de gérer les informations de localisation avec d'autres données. Bien qu'une certaine familiarité avec SQL soit utile, ce n'est pas une exigence de ce livre. Les personnes qui ont lu des éditions antérieures de ce livre peuvent également en tirer profit en s'informant sur les nouvelles fonctionnalités qui ont été introduites depuis la dernière édition de ce livre.

PostGIS est une extension du système de gestion de base de données PostgreSQL qui ajoute des types de données sensibles à la localisation et plus de 500 fonctions à votre base de données. PostGIS est utilisé pour poser des questions telles que O et COMMENT LOIN, construire des cartes Web pour une consommation générale, un outil pour découper les informations par domaines d'intérêt géographiques et thématiques, ou un outil pour faire des inférences entre des événements apparemment sans rapport comme la cause de taux plus élevés de la criminalité par rapport aux changements dans l'utilisation des terres dans une zone et aux effets environnementaux sur la végétation et l'habitat.

Ce livre vous apprendra les bases de l'utilisation de PostGIS et des conseils de performances pour tirer le meilleur parti de vos requêtes. A la fin de ce livre, vous comprendrez


Persistance de vos données

Avant de créer la base de données, nous devons réfléchir à la manière dont les informations de notre base de données seront stockées dans Docker. Normalement, lorsque vous créez un conteneur Docker, vous n'êtes pas censé pouvoir entrer dans le système de fichiers des conteneurs pour copier ou modifier des données. Cela signifie qu'à moins que nous ne spécifiions ce qu'on appelle un le volume dans Docker, nos données de base de données seront enregistrées à l'intérieur du conteneur, ce qui rend difficile, voire impossible, d'effectuer des sauvegardes ou des mises à niveau du logiciel de base de données sans perdre toutes vos données.

Ce que nous allons faire, c'est créer un conteneur de volume qui sera utilisé pour conserver les fichiers de base de données PostgreSQL en dehors du conteneur qui exécute le processus de base de données :

Si vous souhaitez en savoir plus sur l'utilisation des volumes avec Docker, vous pouvez lire la documentation ici.


Importer le fichier de forme

Maintenant, importons les données du fichier de forme dans notre nouveau des pays tableau. Nous utiliserons le shp2pgsql outil, qui est déjà inclus dans Postgres App. Je suppose que vous ajoutez déjà le chemin bin dans votre variable d'environnement PATH, sinon, vous pouvez les ajouter dans votre

Vous pouvez maintenant ouvrir un nouveau terminal et exécuter shp2pgsql pour vérifier son utilisation,

Créons maintenant une autre migration pour importer le fichier de formes,

Et dans le fichier de migration, nous avons le contenu suivant,

Dans le en haut méthode de la migration, nous exécutons d'abord le shp2pgsql dans la commande shell en utilisant Backticks(`) (consultez ce joli blog). La sortie de shp2pgsql correspond aux scripts SQL et elle sera renvoyée à partir du résultat de la commande shell, puis nous la stockons dans une variable from_shp_sql. Nous passons les paramètres suivants au shp2pgsql:

  • -c Crée une nouvelle table et la remplit
  • -g geom Spécifiez le nom de la colonne de géométrie comme géom
  • -W LATIN1 Réglez l'encodage sur LATIN1
  • -s 4326 définissez le SRID sur 4326, car il s'agit du SRID du fichier de forme

Et enfin, nous passons le chemin du fichier de forme et nommons le nom de la table générée comme country_ref.

Et puis nous exécutons ce SQL dans une transaction pour créer le country_ref table et importer les données. Et puis exécutez le SQL suivant pour copier les données de la table country_ref à des pays.

Dans le country_ref table, nous avons déjà nommé la colonne de géométrie comme géom. Le nom_engli et iso sont des attributs du fichier de forme et lorsque shp2pgsql génère la table, il nommera le nom de la colonne de la même manière que le nom de l'attribut. Enfin puisque nous avons déjà fait l'import nous appelons drop_table country_ref pour supprimer le table country_ref*.

Dans le vers le bas méthode, nous supprimons simplement toutes les données dans le des pays tableau.

GeoJSON est un format pour coder une variété de structures de données géographiques. Google maps a déjà un support natif pour cela. Dans ce blog, créons un fichier geojson statique et rendons-le dans google map. Dans les blogs ultérieurs, nous générerons directement le format geojson à partir de la base de données.

RGeo a un bel addon rgeo-geojson qui fournit des services d'encodage et de décodage GeoJSON. Ajoutons-le dans Gemfile :

Après l'installation du bundle, nous pouvons ouvrir la console des rails (j'ai installé des pry-rails pour utiliser pry au lieu de irb),

Tout d'abord, nous obtenons le modèle du Gabon en appelant Pays.premier puisqu'il n'y a qu'une seule ligne dans des pays tableau. Pour rgeo-geojson, il utilise une usine pour générer la fonctionnalité, nous obtenons donc une usine puis appelons le fonctionnalité méthode et passe gabon.geom. Ce géom la propriété est une instance de géométrie RGeo, et elle est enveloppée dans fonctionnalité. Ensuite, nous appelons le Fonctionnalité RGeo::GeoJson.encode pour l'encoder dans un objet de hachage, puis nous écrivons enfin le contenu de ce hachage dans un fichier nommé gabon.json.

Maintenant, déplaçons ceci gabon.json dans le dossier public afin que le navigateur puisse y accéder directement.

Lorsque nous démarrons le serveur et accédons à http://localhost:3000/gabon.json, nous devrions pouvoir voir le contenu de ce fichier dans le navigateur.

Maintenant, rendons ce fichier GeoJSON sur google maps. J'ai créé un MapsController pour cela, et dans la vue, il créera un google.maps.Map instance et le rendre. Je n'ai pas tout expliqué et vous pouvez vérifier le code source dans app/views/maps/index.html.erb. (Oui, je sais que c'est un très mauvais comportement d'intégrer directement du javascript dans les fichiers erb, laissez-le remanier plus tard.)

La partie la plus importante est d'appeler *map.data.loadGeoJson pour charger les données GeoJSON,

Maintenant, lorsque nous accédons à http://localhost:3000/maps, nous pouvons voir que la zone du gabon est remplie de couleur noire, comme la figure suivante,

Le référentiel de ce projet est à https://github.com/climber2002/schoolpro . Le code source de chaque blog a sa propre balise, il est donc facile de l'obtenir. Pour cette partie, le code source se trouve sur https://github.com/climber2002/schoolpro/tree/part1 .

Dans cette partie, nous chargeons le GeoJSON dans un fichier statique. Dans la partie suivante, nous verrons comment générer le GeoJSON dynamiquement.


Voir la vidéo: PostgreSQL Tutorial: How to download and install PostGIS Extension EN