J'ai décidé d'utiliser PostJIS parce que j'avais affaire à un peu d'informations cartographiques détaillées. Je travaillais en regardant diverses méthodes d'installation, mais il y avait des choses qui se sont bloquées, donc je vais l'écrire sous forme de mémorandum.
Vous pourrez enregistrer la latitude, la longitude, la zone, etc. en utilisant un type de données dédié (type de géométrie, etc.) qui sera disponible une fois installé. Vous pouvez l'utiliser pour calculer les informations de localisation et travailler avec des objets cartographiques à l'aide d'objets SIG.
Voir ici pour plus de détails: https://lets.postgresql.jp/documents/tutorial/PostGIS/1
CentOS 7.6
PostGIS a beaucoup de choses à utiliser. Nous installerons ce qui suit.
Tout d'abord, préparez le DB à utiliser réellement.
###Installer le référentiel
$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
###Installez PostgreSQL
$ sudo yum install postgresql11
$ sudo yum install postgresql11-server
###Vérifiez si cela a été fait
$ id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
$ ls /usr/pgsql-11
bin lib share
###Réglage du mot de passe, il vous sera demandé deux fois, alors entrez le même mot de passe
$ sudo su - postgres -c '/usr/pgsql-11/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W'
###Changer de compte pour postgres
sudo su - postgres
### pgsql_Ouvrez le profil et écrivez ci-dessous
vi ~/.pgsql_profile
PATH=/usr/pgsql-11/bin:$PATH
MANPATH=/usr/pgsql-11/share/man:$MANPATH
PGDATA=/var/lib/pgsql/11/data
export PATH MANPATH PGDATA
### bash_Rechargez le profil puis quittez postgres
$ . ~/.bash_profile
$ exit
### postgresql-Commencez 11 et terminez si vous pouvez le démarrer en toute sécurité
$ sudo systemctl start postgresql-11.service
De plus, installez les packages nécessaires pour faciliter le travail à effectuer ultérieurement. Selon votre environnement, vous en avez peut-être déjà installé un, mais dans ce cas, ignorez la commande.
###Activer wget
$ sudo yum install wget
###Empêchez postgres11 de se fâcher avec les dépendances de package liées à LLVM
$ sudo yum install epel-release centos-release-scl
###Activer la compilation gcc
$ sudo yum install gcc-c++
###Fichiers d'en-tête de développement et bibliothèques
### epel-release et centos-release-Si vous n'incluez pas scl, vous ne pourrez peut-être pas installer en raison de dépendances, alors installez-le
$ sudo yum install postgresql11-devel
###Bibliothèque qui gère XML
$ sudo yum install libxml2-devel
###Activer python3
sudo yum install python36
Nous installerons PostGIS lorsque les préparatifs seront terminés. Le flux consiste à installer PostGIS après avoir installé le module pour utiliser PostGIS.
$ cd /tmp/
$ wget http://download.osgeo.org/geos/geos-3.7.2.tar.bz2
$ tar xf geos-3.7.2.tar.bz2
$ cd geos-3.7.2/
$ ./configure
$ make
$ sudo make install
$ cd ../
$ rm -rf geos-3.7.2
$ sudo yum install proj-devel.x86_64
$ sudo yum install libstdc++.so.6
$ cd /tmp/
$ wget https://download.osgeo.org/gdal/2.4.0/gdal-2.4.0.tar.gz
$ tar xzf gdal-2.4.0.tar.gz
$ cd gdal-2.4.0
$ ./configure
$ make
$ sudo make install
$ cd ../
$ rm -rf gdal-2.4.0
$ sudo yum install llvm-toolset-7
$ /tmp/
$ wget https://download.osgeo.org/postgis/source/postgis-2.5.5.tar.gz
$ tar xvzf postgis-2.5.5.tar.gz
$ cd postgis-2.5.5
$ ./configure --with-pgconfig='/usr/pgsql-11/bin/pg_config'
$ make
$ sudo make install
$ cd ../
$ rm -rf postgis-2.5.5
Si vous n'avez pas "--with-pgconfig = '/ usr / pgsql-11 / bin / pg_config'" dans l'option ./configure lors de l'installation de PostGIS, l'erreur suivante peut se produire.
configure: error: could not find pg_config within the current path. You may need to re-run configure with a --with-pgconfig parameter.
Je ne trouve pas pg_config, donc on me dit de le spécifier, alors définissez les options et c'est OK.
$ ls -l /usr/pgsql-11/lib/libgdal.so.20
Probablement, "/usr/pgsql-11/lib/libgdal.so.20" est introuvable. Par conséquent, je vais créer un lien symbolique ci-dessous.
$ sudo ln -s /usr/local/lib/libgdal.so.20.5.0 /usr/pgsql-11/lib/libgdal.so.20
Sans cela, l'erreur suivante se produira lors de la création d'EXTENSION à partir de psql.
test_postgis=# CREATE EXTENSION postgis;
ERROR: could not load library "/usr/pgsql-11/lib/postgis-2.5.so": libgeos_c.so.1: cannot open shared object file: No such file or directory
Enfin, mettez à nouveau la bibliothèque partagée en cache. À ce moment, écrivez "/ usr / local / lib" dans la dernière ligne de "/etc/ld.so.conf". Si vous ne le faites pas, vous pouvez obtenir une autre erreur lors de la création d'EXTENSION.
$ sudo vi /etc/ld.so.conf
/usr/local/lib ← Ajouter seulement cette ligne
$ sudo ldconfig
Ceci termine le travail d'installation.
Créez une base de données pour vérifier si elle a été correctement installée. Pour le moment, redémarrez postgresql-11 avant de travailler.
$ sudo systemctl restart postgresql-11.service
###Démarrez psql
$ psql -U postgres
###Créer un DB de test pour confirmation
postgres=# CREATE DATABASE test_postgis;
CREATE DATABASE
postgres=# \c test_postgis
###Créer une extension
test_postgis=# CREATE EXTENSION postgis;
CREATE EXTENSION
test_postgis=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+---------------------------------------------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
postgis | 2.5.5 | public | PostGIS geometry, geography, and raster spatial types and functions
(2 rows)
Si la valeur de retour de \ dx ressemble à celle ci-dessus, elle réussit.
Il semble qu'il a été installé, mais c'est peut-être ... donc je vais entrer les données et les vérifier.
###Créer une table
test_postgis=# CREATE TABLE station_position
(
id serial PRIMARY KEY,
station_name varchar(20),
position geometry
);
CREATE TABLE
###Insérer des données
test_postgis=# INSERT INTO station_position (id, station_name, position) VALUES
(1, 'Gare d'Ikebukuro', ST_GeomFromText('POINT(139.710911 35.729660)', 4326)),
(2, 'Gare de Shibuya', ST_GeomFromText('POINT(139.701647 35.658252)', 4326)),
(3, 'Gare de Tokyo', ST_GeomFromText('POINT(139.767114 35.681437)', 4326));
###Confirmation des données
test_postgis=# SELECT * FROM station_position;
1 |Gare d'Ikebukuro| 0101000020E6100000BCEB6CC8BF7661408599B67F65DD4140
2 |Gare de Shibuya| 0101000020E6100000C5CA68E4737661406743FE9941D44140
3 |Gare de Tokyo| 0101000020E6100000B8C9A8328C78614066A4DE5339D74140
Après la saisie, vérifions les données en utilisant pgAdmin. Si pgAdmin n'est pas inclus, l'article suivant sera utile. URL de référence: procédure d'installation de pgAdmin Si vous essayez de vérifier le contenu du tableau créé par pgAdmin, vous verrez l'écran suivant. Je pense qu'il y a une icône en forme d'œil entourée d'un cadre rouge. Si vous cliquez dessus, la carte sera affichée à partir de "Geometry Viewer", et si vous appuyez sur le bouton "+" pour l'agrandir, vous pouvez voir les points bleus à la gare de Tokyo. C'est l'emplacement défini dans la base de données. Enfin, calculons la distance. Utilisez une fonction qui calcule la distance de la gare de Tokyo et de la gare d'Ikebukuro en ligne droite.
test_postgis=# SELECT ST_Distance( (SELECT position FROM station_position WHERE station_name = 'Gare de Tokyo')::GEOGRAPHY , (SELECT position FROM station_position WHERE station_name = 'Gare d'Ikebukuro')::GEOGRAPHY, TRUE);
7382.264423442
L'unité est le mètre, soit environ 7,38 km. Quand je vérifie la distance sur la carte google, elle est de 7,36 km, donc c'est presque là.
Quand je l'ai installé moi-même, je n'ai pas trouvé beaucoup de matériel et j'ai eu une erreur et j'ai trébuché de différentes manières, alors j'espère que cela aide quelqu'un.
Installation de PostgreSQL sur CentOS https://medium.com/@basstazz3/install-postgis-2-5-to-centos-7-48bd5b261f1a
Recommended Posts