Ich habe mich für PostJIS entschieden, weil ich mich mit ein paar detaillierten Karteninformationen befasst habe. Ich habe gearbeitet, während ich mir verschiedene Installationsmethoden angesehen habe, aber es gab einige Dinge, die hängen geblieben sind, deshalb werde ich es als Memorandum schreiben.
Sie können Breitengrad, Längengrad, Fläche usw. mithilfe eines dedizierten Datentyps (Geometrietyp usw.) speichern, der nach der Installation verfügbar ist. Mit dieser Option können Sie Standortinformationen berechnen und mithilfe von GIS-Objekten mit Kartenobjekten arbeiten.
Siehe hier für Details: https://lets.postgresql.jp/documents/tutorial/PostGIS/1
CentOS 7.6
PostGIS bietet viele Dinge, die Sie verwenden müssen. Wir werden Folgendes installieren.
Bereiten Sie zunächst die DB vor, die tatsächlich verwendet werden soll.
###Repository installieren
$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
###Installieren Sie PostgreSQL
$ sudo yum install postgresql11
$ sudo yum install postgresql11-server
###Überprüfen Sie, ob es getan wurde
$ id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
$ ls /usr/pgsql-11
bin lib share
###Bei der Passworteinstellung werden Sie zweimal gefragt. Geben Sie also dasselbe Passwort ein
$ sudo su - postgres -c '/usr/pgsql-11/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W'
###Wechseln Sie das Konto zu Postgres
sudo su - postgres
### pgsql_Öffnen Sie das Profil und schreiben Sie unten
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_Profil neu laden und dann postgres beenden
$ . ~/.bash_profile
$ exit
### postgresql-Starten Sie 11 und schließen Sie ab, wenn Sie es sicher starten können
$ sudo systemctl start postgresql-11.service
Installieren Sie außerdem die erforderlichen Pakete, um die spätere Ausführung zu erleichtern. Abhängig von Ihrer Umgebung ist möglicherweise bereits eine installiert. Überspringen Sie in diesem Fall den Befehl.
###Aktivieren Sie wget
$ sudo yum install wget
###Verhindern Sie, dass postgres11 sich über LLVM-bezogene Paketabhängigkeiten ärgert
$ sudo yum install epel-release centos-release-scl
###Aktivieren Sie die gcc-Kompilierung
$ sudo yum install gcc-c++
###Entwicklungsheaderdateien und Bibliotheken
### epel-Release und Centos-release-Wenn Sie scl nicht einschließen, können Sie es möglicherweise aufgrund von Abhängigkeiten nicht installieren. Installieren Sie es daher
$ sudo yum install postgresql11-devel
###Bibliothek, die XML verarbeitet
$ sudo yum install libxml2-devel
###Aktivieren Sie python3
sudo yum install python36
Wir werden PostGIS installieren, wenn die Vorbereitungen abgeschlossen sind. Der Ablauf besteht darin, PostGIS nach der Installation des Moduls für die Verwendung von PostGIS zu installieren.
$ 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
Wenn Sie bei der Installation von PostGIS nicht "--with-pgconfig = '/ usr / pgsql-11 / bin / pg_config'" in der Option ./configure haben, kann der folgende Fehler auftreten.
configure: error: could not find pg_config within the current path. You may need to re-run configure with a --with-pgconfig parameter.
Ich kann pg_config nicht finden, daher muss ich es angeben. Legen Sie also die Optionen fest und es ist in Ordnung.
$ ls -l /usr/pgsql-11/lib/libgdal.so.20
Wahrscheinlich kann "/usr/pgsql-11/lib/libgdal.so.20" nicht gefunden werden. Daher werde ich unten einen symbolischen Link erstellen.
$ sudo ln -s /usr/local/lib/libgdal.so.20.5.0 /usr/pgsql-11/lib/libgdal.so.20
Ohne dies tritt beim Erstellen von EXTENSION aus psql der folgende Fehler auf.
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
Zum Schluss die gemeinsam genutzte Bibliothek erneut zwischenspeichern. Schreiben Sie zu diesem Zeitpunkt "/ usr / local / lib" in die letzte Zeile von "/etc/ld.so.conf". Wenn Sie dies nicht tun, wird beim Erstellen von EXTENSION möglicherweise ein weiterer Fehler angezeigt.
$ sudo vi /etc/ld.so.conf
/usr/local/lib ← Nur diese Zeile hinzufügen
$ sudo ldconfig
Damit sind die Installationsarbeiten abgeschlossen.
Erstellen Sie eine Datenbank, um zu überprüfen, ob sie ordnungsgemäß installiert wurde. Starten Sie postgresql-11 vorerst neu, bevor Sie arbeiten.
$ sudo systemctl restart postgresql-11.service
###Starten Sie psql
$ psql -U postgres
###Erstellen Sie eine Test-DB zur Bestätigung
postgres=# CREATE DATABASE test_postgis;
CREATE DATABASE
postgres=# \c test_postgis
###EXTENSION erstellen
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)
Wenn der Rückgabewert von \ dx wie oben aussieht, ist er erfolgreich.
Es scheint, dass es installiert wurde, aber es kann sein ... also werde ich die Daten eingeben und sie überprüfen.
###Tabelle erstellen
test_postgis=# CREATE TABLE station_position
(
id serial PRIMARY KEY,
station_name varchar(20),
position geometry
);
CREATE TABLE
###Daten einfügen
test_postgis=# INSERT INTO station_position (id, station_name, position) VALUES
(1, 'Ikebukuro Station', ST_GeomFromText('POINT(139.710911 35.729660)', 4326)),
(2, 'Shibuya Station', ST_GeomFromText('POINT(139.701647 35.658252)', 4326)),
(3, 'Tokyo Station', ST_GeomFromText('POINT(139.767114 35.681437)', 4326));
###Datenbestätigung
test_postgis=# SELECT * FROM station_position;
1 |Ikebukuro Station| 0101000020E6100000BCEB6CC8BF7661408599B67F65DD4140
2 |Shibuya Station| 0101000020E6100000C5CA68E4737661406743FE9941D44140
3 |Tokyo Station| 0101000020E6100000B8C9A8328C78614066A4DE5339D74140
Überprüfen Sie nach der Eingabe die Daten mit pgAdmin. Wenn pgAdmin nicht enthalten ist, ist der folgende Artikel hilfreich. Referenz-URL: pgAdmin-Installationsverfahren Wenn Sie versuchen, den Inhalt der von pgAdmin erstellten Tabelle zu überprüfen, wird der folgende Bildschirm angezeigt. Ich denke, es gibt ein augenähnliches Symbol, das von einem roten Rahmen umgeben ist. Wenn Sie darauf klicken, wird die Karte im "Geometry Viewer" angezeigt. Wenn Sie zum Vergrößern auf die Schaltfläche "+" klicken, werden die blauen Punkte an der Tokyo Station angezeigt. Dies ist der in der Datenbank festgelegte Speicherort. Zum Schluss berechnen wir die Entfernung. Verwenden Sie eine Funktion, die berechnet, wie weit die Tokyo Station und die Ikebukuro Station in gerader Entfernung entfernt sind.
test_postgis=# SELECT ST_Distance( (SELECT position FROM station_position WHERE station_name = 'Tokyo Station')::GEOGRAPHY , (SELECT position FROM station_position WHERE station_name = 'Ikebukuro Station')::GEOGRAPHY, TRUE);
7382.264423442
Das Gerät ist Meter, also sind es ca. 7,38 km. Wenn ich die Entfernung auf der Google-Karte überprüfe, sind es 7,36 km, also ist es fast da.
Als ich es selbst installiert habe, konnte ich nicht viel Material finden und habe einen Fehler erhalten und bin auf verschiedene Weise gestolpert. Ich hoffe, es hilft jemandem.
PostgreSQL unter CentOS installieren https://medium.com/@basstazz3/install-postgis-2-5-to-centos-7-48bd5b261f1a
Recommended Posts