Chapter 2. Installation av PostGIS

Table of Contents

I detta kapitel beskrivs de steg som krävs för att installera PostGIS.

2.1. Kort version

För att kompilera förutsatt att du har alla beroenden i din sökväg:

tar -xvzf postgis-3.7.0dev.tar.gz
cd postgis-3.7.0dev
./configure
make
make install

När PostGIS har installerats måste det aktiveras (Section 3.3, “Skapa spatiala databaser”) eller uppgraderas (Section 3.4, “Uppgradering av spatiala databaser”) i varje enskild databas som du vill använda det i.

2.2. Kompilera och installera från källkod

[Note]

Många OS-system innehåller nu förbyggda paket för PostgreSQL / PostGIS. I många fall är kompilering endast nödvändig om du vill ha de mest blödande kantversionerna eller om du är en paketunderhållare.

Detta avsnitt innehåller allmänna kompileringsinstruktioner, om du kompilerar för Windows etc eller ett annat operativsystem kan du hitta ytterligare mer detaljerad hjälp i PostGIS User Contributed Compile Guides och PostGIS Dev Wiki.

Förbyggda paket för olika operativsystem finns listade i PostGIS förbyggda paket

Om du är en Windows-användare kan du få stabila builds via Stackbuilder eller PostGIS Windows nedladdningssida Vi har också mycket blödande avancerade Windows experimentella builds som byggs vanligtvis en eller två gånger i veckan eller när något spännande händer. Du kan använda dessa för att experimentera med de pågående utgåvorna av PostGIS

PostGIS-modulen är en utökning av PostgreSQL-backendservern. Som sådan kräver PostGIS & last_release_version; full tillgång till PostgreSQL-serverhuvud för att kunna kompilera. Det kan byggas mot PostgreSQL-versioner &min_postgres_version; - &max_postgres_version;. Tidigare versioner av PostgreSQL stöds inte..

Se installationsguiderna för PostgreSQL om du inte redan har installerat PostgreSQL. https://www. postgresql.org .

[Note]

För GEOS-funktionalitet, när du installerar PostgreSQL kan du behöva länka PostgreSQL uttryckligen mot standard C ++ -biblioteket:

LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE]

Detta är en lösning för felaktiga C++-undantag i äldre utvecklingsverktyg. Om du upplever konstiga problem (backend oväntat stängd eller liknande saker) kan du prova det här tricket. Detta kommer naturligtvis att kräva omkompilering av din PostgreSQL från grunden.

Följande steg beskriver konfiguration och kompilering av PostGIS-källan. De är skrivna för Linux-användare och kommer inte att fungera på Windows eller Mac.

2.2.1. Hämta källan

Hämta källarkivet för PostGIS från nedladdningswebbplatsen https://postgis.net/stuff/postgis-3.7.0dev.tar.gz

wget https://postgis.net/stuff/postgis-3.7.0dev.tar.gz
tar -xvzf postgis-3.7.0dev.tar.gz
cd postgis-3.7.0dev

Detta kommer att skapa en katalog som heter postgis-&last_release_version; i den aktuella arbetskatalogen.

Alternativt kan du hämta källkoden från git-förrådet https://git.osgeo.org/gitea/postgis/postgis/ .

git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
cd postgis
sh autogen.sh
    

Byt till den nyskapade postgis-katalogen för att fortsätta installationen.

./configure

2.2.2. Krav för installation

PostGIS har följande krav för uppbyggnad och användning:

Obligatorisk

  • PostgreSQL 12 - 18. En fullständig installation av PostgreSQL (inklusive serverhuvuden) krävs. PostgreSQL finns tillgängligt på https://www.postgresql.org 18 .

    För en fullständig PostgreSQL / PostGIS-stödmatris och PostGIS / GEOS-stödmatris, se https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

  • GNU C-kompilator(gcc). Vissa andra ANSI C-kompilatorer kan användas för att kompilera PostGIS, men vi hittar mycket färre problem när vi kompilerar med gcc.

  • GNU Make(gmake eller make). För många system är GNU make standardversionen av make. Kontrollera versionen genom att anropa make -v. Andra versioner av make kanske inte bearbetar PostGIS Makefile på rätt sätt.

  • Proj reprojektionsbibliotek. Proj 6.1 eller senare krävs. Proj-biblioteket används för att tillhandahålla stöd för koordinatreprojektion inom PostGIS. Proj finns tillgängligt för nedladdning från https://proj.org/ . .

  • GEOS geometribibliotek, version 3.8.0 eller högre, men GEOS 3.14+ krävs för att kunna utnyttja alla nya funktioner och egenskaper fullt ut. GEOS finns tillgängligt för hämtning från https://libgeos.org .

  • LibXML2, version 2.5.x eller högre. LibXML2 används för närvarande i vissa importfunktioner (ST_GeomFromGML och ST_GeomFromKML). LibXML2 finns att ladda ner från https://gitlab.gnome.org/GNOME/libxml2/-/releases..

  • JSON-C, version 0.9 eller högre. JSON-C används för närvarande för att importera GeoJSON via funktionen ST_GeomFromGeoJson. JSON-C finns tillgängligt för nedladdning från https://github.com/json-c/json-c/releases/.

  • GDAL, version 3+ är att föredra. Detta krävs för rasterstöd. https://gdal.org/download.html.

  • Om du kompilerar med PostgreSQL + JIT krävs LLVM-version >=6 https://trac.osgeo.org/postgis/ticket/4125.

Valfritt

  • GDAL (pseudo-valfritt) endast om du inte vill ha raster kan du utelämna det. Se också till att aktivera de drivrutiner som du vill använda enligt beskrivningen i Section 3.2, “Konfigurera stöd för raster”.

  • GTK (kräver GTK+2.0, 2.8+) för att kompilera shp2pgsql-gui shape-filinläsaren. http://www. gtk.org/ .

  • SFCGAL, 1.4.1 eller högre krävs och 2.1+ krävs för att kunna använda all funktionalitet. SFCGAL kan användas för att tillhandahålla ytterligare avancerade 2D- och 3D-analysfunktioner till PostGIS cf Chapter 8, SFCGAL Funktioner Referens. Och gör det också möjligt att använda SFCGAL snarare än GEOS för vissa 2D-funktioner som tillhandahålls av båda backends (som ST_Intersection eller ST_Area, till exempel). En PostgreSQL-konfigurationsvariabel postgis.backend tillåter slutanvändaren att kontrollera vilken backend han vill använda om SFCGAL är installerat (GEOS som standard). Nota: SFCGAL 1.2 kräver minst CGAL 4.3 och Boost 1.54 (jfr: https://sfcgal.org) https://gitlab.com/sfcgal/SFCGAL/..

  • För att bygga Section 12.1, “Standardisering av adresser” behöver du också PCRE 1 eller 2 http://www.pcre.org (som i allmänhet redan är installerat på nix-system). Section 12.1, “Standardisering av adresser” byggs automatiskt om det upptäcker ett PCRE-bibliotek, eller om du skickar in ett giltigt --with-pcre-dir=/path/to/pcre under configure.

  • För att aktivera ST_AsMVT krävs protobuf-c-biblioteket 1.1.0 eller högre (för användning) och protoc-c-kompilatorn (för byggande). Dessutom krävs pkg-config för att verifiera den korrekta minimiversionen av protobuf-c. Se protobuf-c. Som standard kommer Postgis att använda Wagyu för att validera MVT-polygoner snabbare, vilket kräver en c++11-kompilator. Den kommer att använda CXXFLAGS och samma kompilator som PostgreSQL-installationen. För att inaktivera detta och använda GEOS istället använder du --without-wagyu under konfigurationssteget.

  • CUnit(CUnit). Detta behövs för regressionstestning. http://cunit.sourceforge.net/

  • DocBook(xsltproc) krävs för att bygga upp dokumentationen. Docbook finns tillgängligt från http://www.docbook.org/ .

  • DBLatex(dblatex) krävs för att skapa dokumentationen i PDF-format. DBLatex är tillgängligt från http://dblatex.sourceforge.net/ .

  • ImageMagick(convert) krävs för att generera de bilder som används i dokumentationen. ImageMagick är tillgängligt från http://www.imagemagick.org/ .

2.2.3. Bygg konfiguration

Som med de flesta Linux-installationer är det första steget att generera den Makefile som ska användas för att bygga källkoden. Detta görs genom att köra skalskriptet

./configure

Utan ytterligare parametrar försöker detta kommando att automatiskt hitta de komponenter och bibliotek som behövs för att bygga PostGIS-källkoden på ditt system. Även om detta är den vanligaste användningen av ./configure, accepterar skriptet flera parametrar för dem som har de nödvändiga biblioteken och programmen på icke-standardiserade platser.

I följande lista visas endast de vanligaste parametrarna. För en fullständig lista, använd parametrarna --help eller --help=short.

--with-library-minor-version

Från och med PostGIS 3.0 kommer de biblioteksfiler som genereras som standard inte längre att ha den mindre versionen som en del av filnamnet. Detta innebär att alla PostGIS 3-bibliotek kommer att sluta på postgis-3. Detta gjordes för att göra pg_upgrade enklare, med nackdelen att du bara kan installera en version av PostGIS 3-serien på din server. För att få det gamla beteendet för filen inklusive den mindre versionen: t.ex. postgis-3.0 lägg till denna switch i din configure-sats.

--prefix=PREFIX

Detta är platsen där PostGIS-lastarens körbara filer och delade libs kommer att installeras. Som standard är den här platsen densamma som den upptäckta PostgreSQL-installationen.

[Caution]

Denna parameter är för närvarande trasig, eftersom paketet bara installeras i PostgreSQL-installationskatalogen. Besök http://trac.osgeo.org/postgis/ticket/635 för att spåra den här buggen.

--with-pgconfig=FILE

PostgreSQL tillhandahåller ett verktyg som heter pg_config för att göra det möjligt för tillägg som PostGIS att hitta PostgreSQL-installationskatalogen. Använd den här parametern(--with-pgconfig=/path/to/pg_config) för att manuellt ange en viss PostgreSQL-installation som PostGIS kommer att bygga mot.

--with-gdalconfig=FILE

GDAL, ett obligatoriskt bibliotek, tillhandahåller funktionalitet som behövs för rasterstöd gdal-config för att göra det möjligt för programvaruinstallationer att hitta GDAL-installationskatalogen. Använd denna parameter(--with-gdalconfig=/path/to/gdal-config) för att manuellt ange en viss GDAL-installation som PostGIS ska bygga mot.

--with-geosconfig=FILE

GEOS, ett nödvändigt geometribibliotek, tillhandahåller ett verktyg som heter geos-config för att göra det möjligt för programvaruinstallationer att hitta GEOS installationskatalog. Använd denna parameter(--with-geosconfig=/path/to/geos-config) för att manuellt ange en viss GEOS-installation som PostGIS ska bygga mot.

--with-xml2config=FILE

LibXML är det bibliotek som krävs för att göra GeomFromKML/GML-processer. Det hittas normalt om du har libxml installerat, men om inte eller om du vill att en specifik version ska användas, måste du peka PostGIS mot en specifik xml2-config confi-fil för att göra det möjligt för programvaruinstallationer att hitta LibXML-installationskatalogen. Använd denna parameter(>--with-xml2config=/path/to/xml2-config) för att manuellt ange en viss LibXML-installation som PostGIS ska bygga mot.

--with-projdir=DIR

Proj är ett reprojektionsbibliotek som krävs av PostGIS. Använd denna parameter(--with-projdir=/path/to/projdir) för att manuellt ange en viss Proj-installationskatalog som PostGIS ska bygga mot.

--with-libiconv=DIR

Katalog där iconv är installerat.

--with-jsondir=DIR

JSON-C är ett MIT-licensierat JSON-bibliotek som krävs för PostGIS ST_GeomFromJSON-stöd. Använd denna parameter(--with-jsondir=/path/to/jsondir) för att manuellt ange en viss JSON-C-installationskatalog som PostGIS kommer att bygga mot.

--with-pcredir=DIR

PCRE är ett BSD-licensierat Perl-kompatibelt bibliotek för reguljära uttryck som krävs av address_standardizer-tillägget. Använd denna parameter(--with-pcredir=/path/to/pcredir) för att manuellt ange en viss PCRE-installationskatalog som PostGIS ska bygga mot.

--with-gui

Kompilera GUI för dataimport (kräver GTK+2.0). Detta kommer att skapa shp2pgsql-gui grafiskt gränssnitt till shp2pgsql.

--without-raster

Kompilera utan stöd för raster.

--without-tiger

Inaktiverar stöd för tiger geocoder.

--without-topology

Kompilera utan topologistöd.

--with-gettext=no

Som standard kommer PostGIS att försöka upptäcka stöd för gettext och kompilera med det, men om du stöter på inkompatibilitetsproblem som orsakar att laddaren bryts kan du inaktivera det helt med det här kommandot. Se biljett http://trac.osgeo.org/postgis/ticket/748 för ett exempel på ett problem som löstes genom att konfigurera med detta. OBS: att du inte missar mycket genom att stänga av detta. Detta används för internationell hjälp/etikettstöd för GUI-laddaren som ännu inte är dokumenterad och fortfarande experimentell.

--with-sfcgal=PATH

Som standard kommer PostGIS inte att installeras med sfcgal-stöd utan denna switch. PATH är ett valfritt argument som gör det möjligt att ange en alternativ PATH till sfcgal-config.

--without-phony-revision

Inaktivera uppdatering av postgis_revision.h för att matcha aktuell HEAD i git-arkivet.

[Note]

Om du har hämtat PostGIS från kodförvaret är det första steget verkligen att köra skriptet

./autogen.sh

Detta skript kommer att generera configure-skriptet som i sin tur används för att anpassa installationen av PostGIS.

Om du istället fick PostGIS som en tarball är det inte nödvändigt att köra ./autogen.sh eftersom configure redan har genererats.

2.2.4. Byggnad

När Makefile har genererats är det enkelt att bygga PostGIS genom att köra

make

Den sista raden i utskriften ska vara"PostGIS byggdes framgångsrikt. Redo att installeras."

Från och med PostGIS v1.4.0 har alla funktioner kommentarer som genererats från dokumentationen. Om du vill installera dessa kommentarer i dina spatiala databaser senare, kör kommandot som kräver docbook. Filerna postgis_comments.sql och andra paketkommentarer raster_comments.sql, topology_comments.sql finns också i tar.gz-distributionen i doc-mappen, så du behöver inte skapa kommentarer om du installerar från tar-bollen. Kommentarer ingår också som en del av CREATE EXTENSION-installationen.

make comments

Introducerades i PostGIS 2.0. Detta genererar html-fuskblad som är lämpliga för snabb referens eller för studentutdelningar. Detta kräver xsltproc för att bygga och kommer att generera 4 filer i doc-mappen topology_cheatsheet.html, tiger_geocoder_cheatsheet.html, raster_cheatsheet.html, postgis_cheatsheet.html

Du kan ladda ner några förbyggda tillgängliga i html och pdf från PostGIS / PostgreSQL Study Guides

make cheatsheets

2.2.5. Bygga PostGIS-tillägg och distribuera dem

PostGIS-tilläggen byggs och installeras automatiskt om du använder PostgreSQL 9.1+.

Om du bygger från källkatalogen måste du först bygga funktionsbeskrivningarna. Dessa byggs om du har docbook installerat. Du kan också bygga manuellt med uttalandet:

make comments

Det är inte nödvändigt att bygga kommentarerna om du bygger från en release-tarball eftersom dessa redan är färdigbyggda med tarballen.

Tilläggen bör automatiskt byggas som en del av make-installationsprocessen. Du kan vid behov bygga från tilläggsmapparna eller kopiera filer om du behöver dem på en annan server.

cd extensions
cd postgis
make clean
make
export PGUSER=postgres #overwrite psql variables
make check #to test before install
make install
# to test extensions
make check RUNTESTFLAGS=--extension
[Note]

make check använder psql för att köra tester och kan därför använda psql-miljövariabler. Vanliga variabler som är användbara att åsidosätta är PGUSER,PGPORT och PGHOST. Hänvisa till psql-miljövariabler

Tilläggsfilerna kommer alltid att vara desamma för samma version av PostGIS och PostgreSQL oavsett operativsystem, så det går bra att kopiera över tilläggsfilerna från ett operativsystem till ett annat så länge du har PostGIS-binärerna redan installerade på dina servrar.

Om du vill installera tillägg manuellt på en separat server som skiljer sig från din utveckling måste du kopiera följande filer från tilläggsmappen till mappen PostgreSQL / share / extension i din PostgreSQL-installation samt de nödvändiga binärerna för vanlig PostGIS om du inte redan har dem på servern.

  • Det här är kontrollfilerna som anger information som t.ex. vilken version av tillägget som ska installeras om det inte anges. postgis.control, postgis_topology.control.

  • Alla filer i mappen /sql för varje tillägg. Observera att dessa måste kopieras till roten till PostgreSQL share/extension-mappen extensions/postgis/sql/*.sql, extensions/postgis_topology/sql/*.sql

När du har gjort det bör du se postgis, postgis_topology som tillgängliga tillägg i PgAdmin -> tillägg.

Om du använder psql kan du kontrollera att tilläggen är installerade genom att köra den här frågan:

SELECT name, default_version,installed_version
FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';

             name             | default_version | installed_version
------------------------------+-----------------+-------------------
 address_standardizer         | 3.7.0dev         | 3.7.0dev
 address_standardizer_data_us | 3.7.0dev         | 3.7.0dev
 postgis                      | 3.7.0dev         | 3.7.0dev
 postgis_raster               | 3.7.0dev         | 3.7.0dev
 postgis_sfcgal               | 3.7.0dev         |
 postgis_tiger_geocoder       | 3.7.0dev         | 3.7.0dev
 postgis_topology             | 3.7.0dev         |
(6 rows)

Om du har tillägget installerat i den databas du frågar kommer du att se ett omnämnande i kolumnen installed_version. Om du inte får några poster tillbaka betyder det att du inte har några postgis-tillägg installerade på servern alls. PgAdmin III 1.14+ kommer också att tillhandahålla denna information i tilläggsavsnittet i databasbläddrarträdet och kommer till och med att tillåta uppgradering eller avinstallation genom att högerklicka.

Om du har tilläggen tillgängliga kan du installera postgis-tillägget i din valfria databas genom att antingen använda pgAdmin-tilläggsgränssnittet eller köra dessa sql-kommandon:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch; --needed for postgis_tiger_geocoder
--optional used by postgis_tiger_geocoder, or can be used standalone
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;

I psql kan du använda för att se vilka versioner du har installerat och även vilket schema de är installerade.

\connect mygisdb
\x
\dx postgis*
List of installed extensions
-[ RECORD 1 ]-------------------------------------------------
Name        | postgis
Version     | 3.7.0dev
Schema      | public
Description | PostGIS geometry, geography, and raster spat..
-[ RECORD 2 ]-------------------------------------------------
Name        | postgis_raster
Version     | 3.0.0dev
Schema      | public
Description | PostGIS raster types and functions
-[ RECORD 3 ]-------------------------------------------------
Name        | postgis_tiger_geocoder
Version     | 3.7.0dev
Schema      | tiger
Description | PostGIS tiger geocoder and reverse geocoder
-[ RECORD 4 ]-------------------------------------------------
Name        | postgis_topology
Version     | 3.7.0dev
Schema      | topology
Description | PostGIS topology spatial types and functions
[Warning]

Tilläggstabellerna spatial_ref_sys, layer, topology kan inte uttryckligen säkerhetskopieras. De kan bara säkerhetskopieras när respektive postgis- eller postgis_topology-utökningen säkerhetskopieras, vilket bara verkar hända när du säkerhetskopierar hela databasen. Från och med PostGIS 2.0.1 säkerhetskopieras endast srid-poster som inte är paketerade med PostGIS när databasen säkerhetskopieras, så gå inte runt och ändra srids som vi paketerar och förvänta dig att dina ändringar ska finnas där. Lägg in ett ärende om du hittar ett problem. Strukturerna i tilläggstabellerna säkerhetskopieras aldrig eftersom de skapas med CREATE EXTENSION och antas vara desamma för en given version av ett tillägg. Dessa beteenden är inbyggda i den nuvarande PostgreSQL-utökningsmodellen, så ingenting vi kan göra åt det.

Om du installerade 3.7.0dev, utan att använda vårt underbara utökningssystem, kan du ändra det till att vara utökningsbaserat genom att köra kommandona nedan för att paketera funktionerna i deras respektive utökning. Installation med `unpackaged` togs bort i PostgreSQL 13, så du rekommenderas att byta till en utökningsbyggnad innan du uppgraderar till PostgreSQL 13.

CREATE EXTENSION postgis FROM unpackaged;
CREATE EXTENSION postgis_raster FROM unpackaged;
CREATE EXTENSION postgis_topology FROM unpackaged;
CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;

2.2.6. Testar

Om du vill testa PostGIS-bygget kör du

make check

Ovanstående kommando kommer att köra igenom olika kontroller och regressionstester med hjälp av det genererade biblioteket mot en faktisk PostgreSQL-databas.

[Note]

Om du konfigurerade PostGIS med icke-standardiserade PostgreSQL-, GEOS- eller Proj-platser kan du behöva lägga till deras biblioteksplatser i miljövariabeln LD_LIBRARY_PATH.

[Caution]

För närvarande förlitar sig make-kontrollenPATH- och PGPORT-miljövariablerna när de utför kontrollerna - den använder inte PostgreSQL-versionen som kan ha angetts med hjälp av konfigurationsparametern --with-pgconfig. Så se till att ändra din PATH så att den matchar den upptäckta PostgreSQL-installationen under konfigurationen eller var beredd att hantera de överhängande huvudvärkarna.

Om make check lyckas kommer resultatet av nästan 500 tester att visas. Resultaten kommer att se ut ungefär som följande (många rader utelämnade nedan):

CUnit - A unit testing framework for C - Version 2.1-3
     http://cunit.sourceforge.net/

        .
        .
        .

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites     44     44    n/a      0        0
               tests    300    300    300      0        0
             asserts   4215   4215   4215      0      n/a
Elapsed time =    0.229 seconds

        .
        .
        .

Running tests

        .
        .
        .

Run tests: 134
Failed: 0


-- if you build with SFCGAL

        .
        .
        .

Running tests

        .
        .
        .

Run tests: 13
Failed: 0

-- if you built with raster support

        .
        .
        .

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites     12     12    n/a      0        0
               tests     65     65     65      0        0
             asserts  45896  45896  45896      0      n/a


        .
        .
        .

Running tests

        .
        .
        .

Run tests: 101
Failed: 0

-- topology regress

.
.
.

Running tests

        .
        .
        .

Run tests: 51
Failed: 0

-- if you built --with-gui, you should see this too

     CUnit - A unit testing framework for C - Version 2.1-2
     http://cunit.sourceforge.net/

        .
        .
        .

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites      2      2    n/a      0        0
               tests      4      4      4      0        0
             asserts      4      4      4      0      n/a

Postgis_tiger_geocoder och address_standardizer-tillägg stöder för närvarande endast standard PostgreSQL-installationskontrollen. För att testa dessa använder du nedan. Obs: make install är inte nödvändigt om du redan har gjort make install vid roten till PostGIS-kodmappen.

För address_standardizer:

cd extensions/address_standardizer
make install
make installcheck
          

Utdata bör se ut som:

============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test test-init-extensions     ... ok
test test-parseaddress        ... ok
test test-standardize_address_1 ... ok
test test-standardize_address_2 ... ok

=====================
 All 4 tests passed.
=====================

För tigergeokoder, se till att du har postgis och fuzzystrmatch-tillägg tillgängliga i din PostgreSQL-instans. Adress_standardizer-testerna kommer också att starta om du byggde postgis med adress_standardizer-stöd:

cd extensions/postgis_tiger_geocoder
make install
make installcheck
          

utdata bör se ut som:

============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== installing fuzzystrmatch               ==============
CREATE EXTENSION
============== installing postgis                     ==============
CREATE EXTENSION
============== installing postgis_tiger_geocoder      ==============
CREATE EXTENSION
============== installing address_standardizer        ==============
CREATE EXTENSION
============== running regression test queries        ==============
test test-normalize_address   ... ok
test test-pagc_normalize_address ... ok

=====================
All 2 tests passed.
=====================

2.2.7. Installation

För att installera PostGIS skriver du

make install

Detta kommer att kopiera PostGIS-installationsfilerna till lämplig underkatalog som anges av konfigurationsparametern --prefix. I synnerhet:

  • Binärfilerna för laddaren och dumpern installeras i [prefix]/bin.

  • SQL-filerna, till exempel postgis.sql, installeras i [prefix]/share/contrib.

  • PostGIS-biblioteken är installerade i [prefix]/lib.

Om du tidigare körde kommandot make comments för att generera filen postgis_comments.sql, raster_comments.sq l, installerar du sql-filen genom att köra

make comments-install

[Note]

postgis_comments.sql, raster_comments.sql, topology_comments.sql separerades från de typiska bygg- och installationsmålen eftersom det medför det extra beroendet av xsltproc.

2.3. Installera och använda adresstandardiseraren

Tillägget address_standardizer brukade vara ett separat paket som krävde separat nedladdning. Från och med PostGIS 2.2 ingår det nu i paketet. För mer information om address_standardize, vad det gör och hur du konfigurerar det för dina behov, se Section 12.1, “Standardisering av adresser”.

Denna standardizer kan användas tillsammans med PostGIS geokodartillägg för tiger som ersättning för Normalize_Address som diskuteras. För att använda som ersättning hänvisas till Section 2.4.2, “Använda Address Standardizer Extension med Tiger geocoder”. Du kan också använda den som en byggsten för din egen geokodare eller använda den för att standardisera dina adresser för enklare jämförelse av adresser.

Address Standardizer förlitar sig på PCRE som vanligtvis redan är installerat på många Nix-system, men du kan ladda ner den senaste på: http://www.pcre.org. Om PCRE hittas under Section 2.2.3, “Bygg konfiguration” kommer address standardizer-tillägget automatiskt att byggas. Om du har en anpassad pcre-installation som du vill använda istället, skicka till configure --with-pcredir=/path/to/pcre där /path/to/pcre är rotmappen för dina pcre include- och lib-kataloger.

För Windows-användare är PostGIS 2.1+-paketet förpackat med address_standardizer redan så du behöver inte kompilera och kan gå direkt till CREATE EXTENSION-steget.

När du har installerat kan du ansluta till din databas och köra SQL:

CREATE EXTENSION address_standardizer;

Följande test kräver inga regler, gas eller lex tabeller

SELECT num, street, city, state, zip
 FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');

Utdata bör vara

num |         street         |  city  | state |  zip
-----+------------------------+--------+-------+-------
 1   | Devonshire Place PH301 | Boston | MA    | 02109

2.4. Installation, uppgradering av Tiger Geocoder och inläsning av data

Extrafunktioner som Tiger geocoder kanske inte ingår i din PostGIS-distribution. Om du saknar tigergeocoder-tillägget eller vill ha en nyare version än vad din installation levereras med, använd sedan filerna share/extension/postgis_tiger_geocoder.* från paketen i avsnittet Windows Unreleased Versions för din version av PostgreSQL. Även om dessa paket är för Windows, kommer postgis_tiger_geocoder-utökningsfilerna att fungera på alla operativsystem eftersom tillägget endast är ett SQL / plpgsql-tillägg.

2.4.1. Tiger Geocoder Aktivering av din PostGIS-databas

  1. Dessa anvisningar förutsätter att din PostgreSQL-installation redan har postgis_tiger_geocoder-tillägget installerat.

  2. Anslut till din databas via psql eller pgAdmin eller något annat verktyg och kör följande SQL-kommandon. Observera att om du installerar i en databas som redan har postgis behöver du inte göra det första steget. Om du redan har fuzzystrmatch-tillägget installerat behöver du inte heller göra det andra steget.

    CREATE EXTENSION postgis;
    CREATE EXTENSION fuzzystrmatch;
    CREATE EXTENSION postgis_tiger_geocoder;
    --this one is optional if you want to use the rules based standardizer (pagc_normalize_address)
    CREATE EXTENSION address_standardizer;

    Om du redan har postgis_tiger_geocoder-tillägget installerat och bara vill uppdatera till den senaste körningen:

    ALTER EXTENSION postgis UPDATE;
    ALTER EXTENSION postgis_tiger_geocoder UPDATE;

    Om du har gjort anpassade poster eller ändringar i tiger.loader_platform och tiger.loader_variables kan du behöva uppdatera dessa.

  3. För att bekräfta att din installation fungerar korrekt, kör denna sql i din databas:

    SELECT na.address, na.streetname,na.streettypeabbrev, na.zip
            FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;

    Som ska mata ut

    address | streetname | streettypeabbrev |  zip
    ---------+------------+------------------+-------
               1 | Devonshire | Pl               | 02109
  4. Skapa en ny post i tabellen tiger.loader_platform med sökvägarna till dina körbara program och din server.

    Så till exempel för att skapa en profil som heter debbie som följer sh-konventionen. Det skulle du göra:

    INSERT INTO tiger.loader_platform(os, declare_sect, pgbin, wget, unzip_command, psql, path_sep,
                       loader, environ_set_command, county_process_command)
    SELECT 'debbie', declare_sect, pgbin, wget, unzip_command, psql, path_sep,
               loader, environ_set_command, county_process_command
      FROM tiger.loader_platform
      WHERE os = 'sh';

    Och sedan redigera sökvägarna i declare_sect-kolumnen till de som passar Debbies pg, unzip, shp2pgsql, psql, etc sökvägsplatser.

    Om du inte redigerar tabellen loader_platform kommer den bara att innehålla vanliga platser för objekt och du måste redigera det genererade skriptet efter att skriptet har genererats.

  5. Från och med PostGIS 2.4.1 har laddningssteget Zip code-5 digit tabulation area zcta5 reviderats för att läsa in aktuella zcta5-data och är en del av Loader_Generate_Nation_Script när det är aktiverat. Det är avstängt som standard eftersom det tar ganska lång tid att läsa in (20 till 60 minuter), tar upp en hel del diskutrymme och inte används så ofta.

    Gör följande för att aktivera det:

    UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta520';

    Om det finns kan funktionen Geocode använda det om ett gränsfilter läggs till för att begränsa till bara zip-adresser i den gränsen. Funktionen Reverse_Geocode använder den om den returnerade adressen saknar en postadress, vilket ofta händer vid omvänd geokodning av motorvägar.

  6. Skapa en mapp som heter gisdata på roten till servern eller på din lokala dator om du har en snabb nätverksanslutning till servern. Det är till den här mappen som tigerfilerna ska laddas ned och bearbetas. Om du inte är nöjd med att ha mappen på serverns rot, eller om du helt enkelt vill byta till en annan mapp för staging, redigerar du fältet staging_fold i tabellen tiger.loader_variables.

  7. Skapa en mapp som heter temp i gisdata-mappen eller där du angav att staging_fold skulle finnas. Detta kommer att vara den mapp där laddaren extraherar de nedladdade tigerdata.

  8. Kör sedan SQL-funktionen Loader_Generate_Nation_Script, se till att du använder namnet på din anpassade profil och kopiera skriptet till en .sh- eller .bat-fil. Så till exempel för att bygga nationsladdningen:

    psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA > /gisdata/nation_script_load.sh
  9. Kör de genererade kommandoradsskripten för nation load.

    cd /gisdata
    sh nation_script_load.sh
  10. När du är klar med att köra nationsskriptet bör du ha tre tabeller i ditt tiger_data-schema och de bör vara fyllda med data. Bekräfta att du gör det genom att göra följande frågor från psql eller pgAdmin

    SELECT count(*) FROM tiger_data.county_all;
    count
    -------
      3235
    (1 row)
    SELECT count(*) FROM tiger_data.state_all;
    count
    -------
        56
    (1 row)
    

    Detta kommer endast att ha data om du markerat zcta5 för att laddas

    SELECT count(*) FROM tiger_data.zcta5_all;
    count
    -------
      33931
    (1 row)
    
  11. Som standard laddas inte tabellerna som motsvarar bg, tract, tabblock20. Dessa tabeller används inte av geokodaren men används av folk för befolkningsstatistik. Om du vill läsa in dem som en del av dina delstatsladdningar kör du följande sats för att aktivera dem.

    UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock20');

    Alternativt kan du ladda bara dessa tabeller efter att du har laddat statsdata med hjälp av Loader_Generate_Census_Script

  12. För varje delstat som du vill läsa in data för genererar du ett delstatsskript Loader_Generate_Script.

    [Warning]

    Generera INTE delstatsskriptet förrän du redan har laddat nationsdata, eftersom delstatsskriptet använder den länslista som laddats av nationsskriptet.

  13. psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
  14. Kör de genererade kommandoradsskripten.

    cd /gisdata
    sh ma_load.sh
  15. När du är klar med att läsa in alla data eller vid en stopppunkt är det en bra idé att analysera alla tigertabeller för att uppdatera statistiken (inklusive ärvd statistik)

    SELECT install_missing_indexes();
    vacuum (analyze, verbose) tiger.addr;
    vacuum (analyze, verbose) tiger.edges;
    vacuum (analyze, verbose) tiger.faces;
    vacuum (analyze, verbose) tiger.featnames;
    vacuum (analyze, verbose) tiger.place;
    vacuum (analyze, verbose) tiger.cousub;
    vacuum (analyze, verbose) tiger.county;
    vacuum (analyze, verbose) tiger.state;
    vacuum (analyze, verbose) tiger.zcta5;
    vacuum (analyze, verbose) tiger.zip_lookup_base;
    vacuum (analyze, verbose) tiger.zip_state;
    vacuum (analyze, verbose) tiger.zip_state_loc;

2.4.2. Använda Address Standardizer Extension med Tiger geocoder

Ett av de många klagomålen från folk är adressnormaliseringsfunktionen Normalize_Address funktion som normaliserar en adress för prepping före geokodning. Normaliseraren är långt ifrån perfekt och att försöka lappa dess ofullkomlighet tar en enorm mängd resurser. Därför har vi integrerat med ett annat projekt som har en mycket bättre adresstandardiseringsmotor. För att använda denna nya address_standardizer kompilerar du tillägget enligt beskrivningen i Section 2.3, “Installera och använda adresstandardiseraren” och installerar det som ett tillägg i din databas.

När du installerar det här tillägget i samma databas som du har installerat postgis_tiger_geocoder, kan Pagc_Normalize_Address användas istället för Normalize_Address. Det här tillägget är tigeragnostiskt, så det kan användas med andra datakällor, t.ex. internationella adresser. Tillägget tiger geocoder levereras förpackat med sina egna anpassade versioner av rules table ( tiger .pagc_rules) , gaz table (tiger.pagc_gaz) och lex table (tiger.pagc_lex). Dessa kan du lägga till och uppdatera för att förbättra din standardiseringsupplevelse för dina egna behov.

2.4.3. Nödvändiga verktyg för laddning av tigerdata

Laddningsprocessen hämtar data från folkräkningswebbplatsen för respektive nationsfiler, begärda stater, extraherar filerna och laddar sedan varje stat till sin egen separata uppsättning statstabeller. Varje statstabell ärver från de tabeller som definieras i tiger-schemat så att det räcker att bara fråga dessa tabeller för att få tillgång till alla data och släppa en uppsättning statstabeller när som helst med hjälp av Drop_State_Tables_Generate_Script om du behöver ladda om en stat eller bara inte behöver en stat längre.

För att kunna läsa in data behöver du följande verktyg:

  • Ett verktyg för att packa upp zip-filer från en webbplats för folkräkningar.

    För Unix-liknande system: unzip körbar som vanligtvis redan är installerad på de flesta Unix-liknande plattformar.

    För Windows, 7-zip som är ett gratis komprimerings- / avkomprimeringsverktyg som du kan ladda ner från http://www.7-zip.org/

  • shp2pgsql kommandoraden som installeras som standard när du installerar PostGIS.

  • wget som är ett webbgrabberverktyg som vanligtvis installeras på de flesta Unix/Linux-system.

    Om du använder Windows kan du hämta förkompilerade binärfiler från http://gnuwin32.sourceforge.net/packages/wget.htm

Om du uppgraderar från tiger_2010 måste du först generera och köra Drop_Nation_Tables_Generate_Script. Innan du laddar någon delstatsdata måste du ladda den nationella datan, vilket du gör med Loader_Generate_Nation_Script. Vilket kommer att generera ett laddningsskript åt dig. Loader_Generate_Nation_Script är ett engångssteg som bör göras för uppgradering (från ett tidigare års tiger-folkräkningsdata) och för nya installationer.

För att ladda in delstatsdata, se Loader_Generate_Script för att generera ett dataladdningsskript för din plattform för de delstater du önskar. Observera att du kan installera dessa stegvis. Du behöver inte ladda alla de stater du vill ha på en gång. Du kan ladda dem när du behöver dem.

När de tillstånd du vill ha har laddats, se till att köra :

SELECT install_missing_indexes();

enligt beskrivningen i Install_Missing_Indexes.

För att testa att saker och ting fungerar som de ska kan du försöka köra en geokod på en adress i din delstat med hjälp av Geocode

2.4.4. Uppgradering av Tiger Geocoder-installation och -data

Uppgradera först ditt postgis_tiger_geocoder-tillägg enligt följande:

ALTER EXTENSION postgis_tiger_geocoder UPDATE;

Därefter släpper du alla nationstabeller och laddar upp de nya. Generera ett drop script med denna SQL-sats enligt beskrivningen i Drop_Nation_Tables_Generate_Script

SELECT drop_nation_tables_generate_script();

Kör de genererade SQL-satserna för drop.

Generera ett script för att läsa in en nation med denna SELECT-sats enligt beskrivningen i Loader_Generate_Nation_Script

För Windows

SELECT loader_generate_nation_script('windows'); 

För unix/linux

SELECT loader_generate_nation_script('sh');

Se Section 2.4.1, “Tiger Geocoder Aktivering av din PostGIS-databas” för instruktioner om hur du kör genereringsskriptet. Detta behöver bara göras en gång.

[Note]

Du kan ha en blandning av olika års statstabeller och kan uppgradera varje stat separat. Innan du uppgraderar en stat måste du först ta bort tidigare års statstabeller för den staten med hjälp av Drop_State_Tables_Generate_Script.

2.5. Vanliga problem under installationen

Det finns flera saker att kontrollera när installationen eller uppgraderingen inte går som du förväntat dig.

  1. Kontrollera att du har installerat PostgreSQL 12 eller nyare, och att du kompilerar mot samma version av PostgreSQL-källan som den version av PostgreSQL som körs. Mix-ups kan uppstå när din (Linux) distribution redan har installerat PostgreSQL, eller om du annars har installerat PostgreSQL tidigare och glömt bort det. PostGIS fungerar bara med PostgreSQL 12 eller nyare, och konstiga, oväntade felmeddelanden kommer att resultera om du använder en äldre version. För att kontrollera vilken version av PostgreSQL som körs, anslut till databasen med psql och kör den här frågan:

    SELECT version();

    Om du kör en RPM-baserad distribution kan du kontrollera om det finns förinstallerade paket med hjälp av kommandot rpm på följande sätt: rpm -qa | grep postgresql

  2. Om uppgraderingen misslyckas, se till att du återställer till en databas som redan har PostGIS installerat.

    SELECT postgis_full_version();

Kontrollera också att configure korrekt har upptäckt platsen och versionen av PostgreSQL, Proj-biblioteket och GEOS-biblioteket.

  1. Utdata från configure används för att generera filen postgis_config.h. Kontrollera att variablerna POSTGIS_PGSQL_VERSION, POSTGIS_PROJ_VERSION och POSTGIS_GEOS_VERSION har ställts in korrekt.