I detta kapitel beskrivs de steg som krävs för att installera PostGIS.
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.
![]() |
|
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 .
![]() |
|
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.
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
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/ .
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.
![]() |
|
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.
![]() |
|
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. |
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
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
![]() |
|
|
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
![]() |
|
Tilläggstabellerna |
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;
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.
![]() |
|
Om du konfigurerade PostGIS med icke-standardiserade PostgreSQL-, GEOS- eller Proj-platser kan du behöva lägga till deras biblioteksplatser i miljövariabeln |
![]() |
|
För närvarande förlitar sig make-kontrollen på |
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. =====================
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.sq
l, raster_comments.sq
l, installerar du sql-filen genom att köra
make comments-install
![]() |
|
|
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
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.
Dessa anvisningar förutsätter att din PostgreSQL-installation redan har postgis_tiger_geocoder-tillägget installerat.
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.
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
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.
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.
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
.
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.
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
Kör de genererade kommandoradsskripten för nation load.
cd /gisdata sh nation_script_load.sh
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)
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
För varje delstat som du vill läsa in data för genererar du ett delstatsskript Loader_Generate_Script.
![]() |
|
Generera INTE delstatsskriptet förrän du redan har laddat nationsdata, eftersom delstatsskriptet använder den länslista som laddats av nationsskriptet. |
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
Kör de genererade kommandoradsskripten.
cd /gisdata sh ma_load.sh
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;
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.
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
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.
![]() |
|
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. |
Det finns flera saker att kontrollera när installationen eller uppgraderingen inte går som du förväntat dig.
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
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.
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.