Questo capitolo elenca i passi necessari all'installazione di PostGIS.
Per compilare, assumendo di avere tutte le dipendenze nel percorso di ricerca:
tar -xvzf postgis-3.6.0dev.tar.gz cd postgis-3.6.0dev ./configure make make install
Una volta installato PostGIS, bisogna abilitarlo (Section 3.3, “Creazione di database spaziali”) o aggiornarlo (Section 3.4, “Aggiornamento dei database spaziali”) individualmente nei database in cui si vuole usare.
Ormai molti sistemi operativi contengono pacchetti precompilati per PostgreSQL/PostGIS. In molti casi la compilazione è necessaria solamente se volete l'ultimissima versione o se siete uno dei manutentori dei pacchetti. Questa sezione include istruzioni generali per la compilazione; se si sta compilando per Windows o altri sistemi operativi, si può trovare un aiuto più dettagliato in Guide di compilazione fornite dagli utenti di PostGIS e PostGIS Dev Wiki. I pacchetti precostruiti per vari sistemi operativi sono elencati in Pacchetti precostruiti PostGIS Se siete utenti di Windows, potete ottenere le build stabili tramite Stackbuilder o il sito di download di PostGIS Windows Abbiamo anche c build sperimentali di Windows molto all'avanguardia che vengono create di solito una o due volte alla settimana o ogni volta che succede qualcosa di interessante. È possibile utilizzarle per sperimentare le versioni in corso di PostGIS |
Il modulo PostGIS è un'estensione del server backend PostgreSQL. Come tale, PostGIS 3.6.0dev richiede l'accesso completo alle intestazioni del server PostgreSQL per essere compilato. Può essere compilato con le versioni di PostgreSQL 12 - 17. Le versioni precedenti di PostgreSQL non sono supportate.
Se non avete ancora installato PostgreSQL, consultate le guide all'installazione di PostgreSQL. https://www.postgresql.org .
Per le funzionalità legate a GEOS, quando installate PostgreSQL è possibile che dobbiate esplicitamente linkare PostgreSQL con la libreria C++ standard: LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE] Questa è una soluzione alla buona per l'interazione con finte eccezioni C++ con gli strumenti di sviluppo più datati. Se riscontrate problemi anomali (chiusura inattesa del server o casi simili), provate questo trucco. Ciò richiederà ovviamente di ricompilare PostgreSQL da zero. |
I passaggi seguenti ripercorrono la procedura per configurare e compilare il sorgente di PostGIS. Sono scritti per utenti Linux e non funzioneranno su Windows o Mac.
Recuperare l'archivio sorgente di PostGIS dal sito web dei download https://postgis.net/stuff/postgis-3.6.0dev.tar.gz
wget https://postgis.net/stuff/postgis-3.6.0dev.tar.gz tar -xvzf postgis-3.6.0dev.tar.gz cd postgis-3.6.0dev
Questo passaggio creerà una cartella denominata postgis-3.6.0dev
nella cartella di lavoro attuale.
In alternativa, potete ottenere una copia del sorgente dalla repository git https://git.osgeo.org/gitea/postgis/postgis/ .
git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis cd postgis sh autogen.sh
Passare alla cartella postgis
appena creata per continuare l'installazione.
./configure
PostGIS necessita dei seguenti requisiti per la compilazione e l'utilizzo:
Necessari
PostgreSQL 12 - 17. È necessaria un'installazione completa di PostgreSQL (comprese le intestazioni del server). PostgreSQL è disponibile presso https://www.postgresql.org .
Per una matrice di supporto completa di PostgreSQL / PostGIS e per la matrice di supporto di PostGIS/GEOS, consultare https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
Compilatore GNU C (gcc
). Per la compilazione possono essere utilizzati anche altri compilatori ANSI C, ma abbiamo riscontrato molti meno problemi nella compilazione con gcc
.
GNU Make (gmake
or make
). Per molti sistem, GNU make
è la versione di default di make. Potete controllare la versione tramite il comando make -v
. Altre versioni di make
potrebbero non elaborare il Makefile
di PostGIS in modo corretto.
Libreria di riproiezione Proj. È necessario Proj 6.1 o superiore. La libreria Proj viene utilizzata per fornire il supporto alla riproiezione delle coordinate all'interno di PostGIS. Proj è disponibile per il download da https://proj.org/ .
GEOS geometry library, version 3.8.0 or greater, but GEOS 3.12+ is required to take full advantage of all the new functions and features. GEOS is available for download from https://libgeos.org .
LibXML2, versione 2.5.x o superiore. LibXML2 è attualmente utilizzato in alcune funzioni di importazione (ST_GeomFromGML e ST_GeomFromKML). LibXML2 è disponibile per il download da https://gitlab.gnome.org/GNOME/libxml2/-/releases.
JSON-C, versione 0.9 o superiore. JSON-C viene attualmente utilizzato per importare GeoJSON tramite la funzione ST_GeomFromGeoJson. JSON-C è disponibile per il download da https://github.com/json-c/json-c/releases/.
GDAL, version 3+ is preferred. This is required for raster support. https://gdal.org/download.html.
Se si compila con PostgreSQL+JIT, e' necessaria una versione di LLVM >=6 https://trac.osgeo.org/postgis/ticket/4125.
Opzionali
GDAL (pseudo-opzionale) solo se non si vuole il raster si può omettere. Assicurarsi inoltre di abilitare i driver che si desidera utilizzare come descritto in Section 3.2, “Configurare il supporto raster”.
GTK (è necessario GTK+2.0, 2.8+) serve per compilare il loader shp2pgsql-gui shape. http://www.gtk.org/ .
SFCGAL, 1.4.1 or higher is required and 1.5.0+ is needed to be able to use all functionality. SFCGAL can be used to provide additional 2D and 3D advanced analysis functions to PostGIS cf Chapter 8, SFCGAL Functions Reference. And also allow to use SFCGAL rather than GEOS for some 2D functions provided by both backends (like ST_Intersection or ST_Area, for instance). A PostgreSQL configuration variable postgis.backend
allow end user to control which backend he want to use if SFCGAL is installed (GEOS by default). Nota: SFCGAL 1.2 require at least CGAL 4.3 and Boost 1.54 (cf: https://sfcgal.org) https://gitlab.com/sfcgal/SFCGAL/.
Per costruire Section 12.1, “Standardizzatore di indirizzi” è necessario anche PCRE http://www.pcre.org (che generalmente è già installato sui sistemi nix). Section 12.1, “Standardizzatore di indirizzi” sarà costruito automaticamente se rileva una libreria PCRE o se si passa un --with-pcre-dir=/path/to/pcre
valido durante la configurazione.
Per abilitare ST_AsMVT sono necessari la libreria protobuf-c 1.1.0 o superiore (per l'uso) e il compilatore protoc-c (per la costruzione). Inoltre, è necessario pkg-config per verificare la versione minima corretta di protobuf-c. Vedere protobuf-c. Per impostazione predefinita, Postgis utilizza Wagyu per convalidare più velocemente i poligoni MVT, che richiede un compilatore c++11. Utilizzerà CXXFLAGS e lo stesso compilatore dell'installazione di PostgreSQL. Per disabilitare questa funzione e utilizzare invece GEOS, utilizzare l'opzione --without-wagyu
durante la fase di configurazione.
CUnit (CUnit
). Serve per i collaudi di regressione. http://cunit.sourceforge.net/
DocBook (xsltproc
) è necessario per creare la documentazione. Docbook è disponibile sul sito http://www.docbook.org/ .
DBLatex (dblatex
) è necessario per creare la documentazione in formato PDF. DBLatex è disponibile dal sito http://dblatex.sourceforge.net/ .
ImageMagick (convert
) viene utilizzato per generare le immagini utilizzate nella documentazione. ImageMagick è disponibile sul sito http://www.imagemagick.org/ .
Come in molte installazioni Linux, il primo passo consiste nel generare il Makefile che sarà poi utilizzato che compilare il codice sorgente. Per questo si esegue lo script da shell
./configure
Se non si specificano parametri aggiuntivi, questo comando cercherà di individuare automaticamente le componenti e le librerie necessarie per compilare il codice sorgente PostGIS sul vostro sistema. Benché questa sia la modalità di utilizzo più comune per ./configure, lo script accetta vari parametri per coloro che tengono le librerie e i programmi necessari in percorsi non standard.
La lista seguente riporta solamente i parametri usati più di frequente. Per una lista completa, utilizzate i parametri --help o --help=short.
--with-library-minor-version
A partire da PostGIS 3.0, i file di libreria generati per impostazione predefinita non avranno più la versione minore come parte del nome del file. Questo significa che tutte le librerie di PostGIS 3 finiranno con postgis-3
. Questo è stato fatto per rendere più semplice l'aggiornamento di pg_upgrade, con l'inconveniente di poter installare una sola versione di PostGIS 3 nel proprio server. Per ottenere il vecchio comportamento dei file che includono la versione minore: per esempio postgis-3.0
aggiungere questo switch alla dichiarazione configure.
--prefix=PREFIX
Questa è la posizione in cui verranno installati gli eseguibili del caricatore PostGIS e le librerie condivise. Per impostazione predefinita, questo percorso è lo stesso dell'installazione di PostgreSQL rilevata.
Attualmente questo parametro non funzione, dato che il pacchetto si installerà solamente nella cartella di installazione di PostgreSQL. Potete visitare la pagina http://trac.osgeo.org/postgis/ticket/635 per seguire l'evoluzione di questo bug. |
--with-pgconfig=FILE
PostgreSQL fornisce una utility chiamata pg_config per consentire a estensioni quali PostGIS di individuare la cartella di installazione di PostgreSQL. Utilizzate questo parametro (--with-pgconfig=/path/to/pg_config) per specificare manualmente una particolare installazione di PostgreSQL per la quale PostGIS sarà compilato.
--with-gdalconfig=FILE
GDAL è una libreria necessaria per il supporto raster. Utilizzare il comando gdal-config per consentire all'installazione di individuare la cartella di installazione di GDAL, oppure utilizzare il parametro --with-gdalconfig=/path/to/gdal-config per indicare manualmente specifica installazione di GDAL con cui compilare PostGIS.
--with-geosconfig=FILE
GEOS, una libreria necessaria per gestire le geometrie, fornisce una utility chiamata geos-config per consentire alla procedura di installazione di individuare la cartella di installazione di GEOS. E' possibile utilizzare questo parametro (--with-geosconfig=/path/to/geos-config) per indicare manualmente una specifica installazione di GEO da utilizzare per la compilazione.
--with-xml2config=FILE
LibXML è la libreria necessaria per eseguire processi GeomFromKML/GML. Normalmente si trova se è installata libxml, ma se non lo è o se si vuole utilizzare una versione specifica, è necessario indicare a PostGIS uno specifico file xml2-config
confi per consentire alle installazioni software di individuare la directory di installazione di LibXML. Usare questo parametro (>--with-xml2config=/path/to/xml2-config) per specificare manualmente una particolare installazione di LibXML su cui PostGIS si baserà.
--with-projdir=DIR
Proj4 è una libreria di riproiezione richiesta da PostGIS. Utilizzate questo parametro (--with-projdir=/path/to/projdir) per indicare manualmente una specifica cartella di installazione di Proj4 per la compilazione di PostGIS.
--with-libiconv=DIR
Cartella di installazione di iconv.
--with-jsondir=DIR
JSON-C è una libreria JSON con licenza MIR utilizzata da PostGIS per supportare ST_GeomFromJSON. Utilizzare questo parametro (--with-jsondir=/path/to/jsondir) per indicare manualmente una specifica cartella di installazione che PostGIS userà per la compilazione.
--with-pcredir=DIR
PCRE è una libreria di espressioni regolari compatibile con Perl con licenza BSD, richiesta dall'estensione address_standardizer. Usare questo parametro (--with-pcredir=/path/to/pcredir) per specificare manualmente una particolare directory di installazione di PCRE che PostGIS compilerà.
--with-gui
Compilare l'interfaccia grafica per l'importazione di dati (richiede GTK+2.0). Questo passaggio creerà shp2pgsql-gui, interfaccia grafica per shp2pgsql.
--without-raster
Compilazione senza supporto raster.
--without-topology
Disabilita il supporto per la topologia. Non esiste una libreria corrispondente, poiché tutta la logica necessaria per la topologia si trova nella libreria postgis-3.6.0dev.
--with-gettext=no
Normalmente PostGIS cercherà di rilevare il supporto per gettext e di utilizzarlo nella compilazione. Tuttavia, se risocontrate problemi di compatibilità che determinano interruzioni del loader, potete disabilitare il supporto con questo comando. Potete fare riferimento al ticket http://trac.osgeo.org/postgis/ticket/748 per un esempio di un caso risolto utilizzando questa particolare configurazione. NOTA: disattivanto questa opzione non vi perdete molto, dato che è utilizzata per il supporto internazionale o per le etichette nel loader, che non sono ancora ben documentate e in forma sperimentale.
--with-sfcgal=PATH
Per impostazione predefinita, PostGIS non si installa con il supporto di sfcgal senza questo interruttore. PATH
è un argomento opzionale che consente di specificare un PATH alternativo a sfcgal-config.
--without-phony-revision
Disabilita l'aggiornamento di postgis_revision.h per adattarlo all'HEAD corrente del repository git.
Se avete ottenuto PostGIS dalla code repository , il primo passo consiste nell'eseguire lo script ./autogen.sh Questo script genererà lo script configure, che a sua volta viente utilizzato per personalizzare l'installazione di PostGIS. Se invece avete ottenuto PostGIS come file tar, non sarà necessario eseguire ./autogen.sh, dato che configure sarà già stato generato. |
Una volta creato il Makefile, compilare PostGIS è semplice come eseguire
make
L'ultima linea dei messaggi in uscita dovrebbe essere "PostGIS was built successfully. Ready to install.
"
A partire da PostGIS v1.4.0, tutte le funzioni hanno commenti generati dalla documentazione. Se si desidera installare questi commenti nei database spaziali in un secondo momento, eseguire il comando che richiede docbook. Il file postgis_comments.sql e gli altri file di commento del pacchetto raster_comments.sql, topology_comments.sql sono anch'essi contenuti nella distribuzione tar.gz nella cartella doc, quindi non è necessario creare commenti se si installa dal tar. I commenti sono inclusi anche nell'installazione di CREATE EXTENSION.
make comments
Introdotto in PostGIS 2.0. Questa opzione genera degli opuscoli riassuntivi in formato HTML, utili come riferimento speditivo o per distribuzione agli studenti. Richiede xsltproc e genererà 4 file della cartella doc: topology_cheatsheet.html
, tiger_geocoder_cheatsheet.html
, raster_cheatsheet.html
, postgis_cheatsheet.html
Ne potete scaricare alcuni già pronti sia in formato HTML che PDF dalla pagina PostGIS / PostgreSQL Study Guides
make cheatsheets
Le estensioni di PostGIS vengono compilate e installate automaticamente se state utilizzando PostgreSQL 9.1+.
Se state compilando a partire dalla repository del sorgente, dovete prima compilare le descrizioni delle funzioni. Queste vengono create se avete docbook installato. Potete anche eseguire la compilazione manualmente tramite il comando:
make comments
Creare i file dei commenti non è necessario se state compilando a partire dal file tar, dato che questi file sono inclusi nel file tar stesso.
Le estensioni dovrebbero essere create automaticamente come parte del processo di installazione di make. Se necessario, si possono creare dalle cartelle delle estensioni o copiare i file se servono su un altro 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
|
I file di estensione saranno sempre gli stessi per la stessa versione di PostGIS e PostgreSQL, indipendentemente dal sistema operativo, quindi è possibile copiare i file di estensione da un sistema operativo all'altro, purché i binari di PostGIS siano già installati sui server.
Se volete installare le estensioni manualmente su un server separato, diverso da quello di sviluppo, dovete copiare i seguenti file dalla cartella delle estensioni nella cartella PostgreSQL / share / extension
della vostra installazione PostgreSQL, così come i file binari per la versione normale di PostGIS, se questi già non sono presenti sul server.
Questi sono i file di controllo che indicano informazioni come la versione dell'estensione da installare, se non specificata. postgis.control, postgis_topology.control
.
Tutti i file nella cartella /sql di ciascuna estensione. Da notare che quesi devono essere copiati nella cartella principale delle estensioni di PostgreSQL, share/extension extensions/postgis/sql/*.sql
, extensions/postgis_topology/sql/*.sql
Una volta fatto ciò, si dovrebbe vedere postgis
, postgis_topology
come estensioni disponibili in PgAdmin -> estensioni.
Se state utilizzando psql, potete verificare l'avvenuta installazione delle estensioni tramite questa query:
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.6.0dev | 3.6.0dev address_standardizer_data_us | 3.6.0dev | 3.6.0dev postgis | 3.6.0dev | 3.6.0dev postgis_raster | 3.6.0dev | 3.6.0dev postgis_sfcgal | 3.6.0dev | postgis_tiger_geocoder | 3.6.0dev | 3.6.0dev postgis_topology | 3.6.0dev | (6 rows)
Se avete le estensioni installate nel database che state interrogando, vedrete questo fatto menzionato nella colonna installed_version
. Se non vengono riportari record nel risultato, significa che non avete alcuna estensione installata sul server. PgAdmin III 1.14+ fornirà inoltre questa informazione nella sezione extensions
dell'albero di navigazione del database e consentirà anche l'aggiornamento o la disinstallazione tramite clic del tasto destro del mouse.
Se le estensioni sono disponibili, potete installare l'estensione postgis nel database da voi scelto utilizzando l'interfaccia pgAdmin per le estensioni o eseguendo i seguenti comandi SQL:
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;
In psql è possibile vedere quali versioni sono installate e anche quali schemi sono installati.
\connect mygisdb \x \dx postgis*
List of installed extensions -[ RECORD 1 ]------------------------------------------------- Name | postgis Version | 3.6.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.6.0dev Schema | tiger Description | PostGIS tiger geocoder and reverse geocoder -[ RECORD 4 ]------------------------------------------------- Name | postgis_topology Version | 3.6.0dev Schema | topology Description | PostGIS topology spatial types and functions
Per le tabelle delle estensioni |
Se avete installato 3.6.0dev, senza usare il nostro meraviglioso sistema di estensioni, potete cambiarlo in un sistema basato sulle estensioni eseguendo i comandi seguenti per impacchettare le funzioni nelle rispettive estensioni. L'installazione con `unpackaged` è stata rimossa in PostgreSQL 13, quindi si consiglia di passare a una compilazione con estensione prima di aggiornare a 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;
Se volete eseguire un test sul PostGIS compilato, eseguite
make check
Il comando di cui sopra eseguirà vari controlli e collaudi di regressione, utilizzando la libreria generata per un database PostgreSQL effettivo.
Se avete configurato PostGIS utilizzando percorsi non standard per PostgreSQL, GEOS o Proj, potreste dover aggiungere il percorso di queste librerie nella variabile di ambiente |
Attualmente il comando make check fa riferimento alle variabili di ambiente |
Se il test è positivo, l'uscita conterrà il risultato di molti test la schermata dovrebbe essere simile alla seguente (molte linee sono omesse):
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
Le estensioni postgis_tiger_geocoder
e address_standardizer
attualmente supportano solo l'installcheck standard di PostgreSQL. Per testarle, usare il seguente comando. Nota: il make install non è necessario se si è già eseguito il make install nella cartella principale del codice di PostGIS.
Per address_standardizer:
cd extensions/address_standardizer make install make installcheck
L'output dovrebbe essere simile a:
============== 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. =====================
Per il geocoder tiger, assicurarsi di avere le estensioni postgis e fuzzystrmatch disponibili nella propria istanza PostgreSQL. I test di address_standardizer verranno eseguiti anche se si è costruito postgis con il supporto di address_standardizer:
cd extensions/postgis_tiger_geocoder make install make installcheck
L'output dovrebbe essere simile a:
============== 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. =====================
Per installare PostGIS, digitate
make install
Questo comando copierà i file per l'installazione di PostGIS nelle cartelle appropriate, specificate tramite il parametro di configurazione --prefix. In particolare:
I file binari del loader e del dumper vengono installati in [prefix]/bin
.
I file SQL, quali postgis.sql
, vengono installati in [prefix]/share/contrib
.
Le librerie PostGIS vengono installate in [prefix]/lib
.
Se avete eseguito il comando make comments per generare i file postgis_comments.sql
e raster_comments.sql
, installate i file SQL eseguendo
make comments-install
|
L'estensione address_standardizer
era un pacchetto separato che doveva essere scaricato separatamente. A partire da PostGIS 2.2, è ora inclusa nel pacchetto. Per ulteriori informazioni su address_standardize, su cosa fa e su come configurarlo per le proprie esigenze, fare riferimento a Section 12.1, “Standardizzatore di indirizzi”.
Questo standardizzatore può essere usato in combinazione con l'estensione del geocodificatore PostGIS packaged tiger, in sostituzione di Normalize_Address, di cui si è parlato. Per utilizzarlo come sostituto, fare riferimento a Section 2.4.2, “Utilizzo dell'estensione Address Standardizer con il geocoder Tiger”. È anche possibile utilizzarlo come elemento costitutivo per il proprio geocoder o per standardizzare gli indirizzi per facilitarne il confronto.
Lo standardizzatore di indirizzi si basa su PCRE, che di solito è già installato su molti sistemi Nix, ma si può scaricare l'ultimo all'indirizzo: http://www.pcre.org. Se durante Section 2.2.3, “Configurazione della compilazione” viene trovato PCRE, l'estensione address standardizer verrà automaticamente compilata. Se invece si vuole usare un'installazione personalizzata di pcre, passare a configurare --with-pcredir=/path/to/pcre
, dove /path/to/pcre
è la cartella principale per le directory include e lib di pcre.
Per gli utenti di Windows, il bundle PostGIS 2.1+ è già confezionato con address_standardizer, quindi non è necessario compilare e si può passare direttamente al passo CREATE EXTENSION
.
Una volta effettuata l'installazione, è possibile collegarsi al database ed eseguire l'SQL:
CREATE EXTENSION address_standardizer;
Il seguente test non richiede regole, gaz o tabelle lex
SELECT num, street, city, state, zip FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');
L'uscita dovrebbe essere
num | street | city | state | zip -----+------------------------+--------+-------+------- 1 | Devonshire Place PH301 | Boston | MA | 02109
Extra come Tiger geocoder potrebbero non essere presenti nella distribuzione di PostGIS. Se manca l'estensione tiger geocoder o se si desidera una versione più recente di quella in dotazione, utilizzare i file share/extension/postgis_tiger_geocoder.*
dai pacchetti della sezione Windows Unreleased Versions per la propria versione di PostgreSQL. Sebbene questi pacchetti siano per Windows, i file di estensione postgis_tiger_geocoder funzionano su qualsiasi sistema operativo, poiché l'estensione è solo SQL/plpgsql.
Queste indicazioni presuppongono che l'installazione di PostgreSQL abbia già installato l'estensione postgis_tiger_geocoder.
Collegarsi al database tramite psql o pgAdmin o un altro strumento ed eseguire i seguenti comandi SQL. Si noti che se si sta installando in un database che ha già postgis, non è necessario eseguire il primo passo. Se l'estensione fuzzystrmatch
è già installata, non è necessario eseguire nemmeno il secondo passaggio.
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;
Se avete già installato l'estensione postgis_tiger_geocoder e volete solo aggiornare all'ultima versione:
ALTER EXTENSION postgis UPDATE; ALTER EXTENSION postgis_tiger_geocoder UPDATE;
Se sono state apportate voci o modifiche personalizzate a tiger.loader_platform
e tiger.loader_variables
, potrebbe essere necessario aggiornarle.
Per confermare che l'installazione funziona correttamente, eseguire questo sql nel database:
SELECT na.address, na.streetname,na.streettypeabbrev, na.zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
Che dovrebbe produrre
address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109
Creare un nuovo record nella tabella tiger.loader_platform
con i percorsi degli eseguibili e del server.
Quindi, per esempio, per creare un profilo chiamato debbie che segue la convenzione sh
. Si dovrebbe fare:
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';
Quindi modificare i percorsi nella colonna declare_sect in modo da adattarli ai percorsi di pg, unzip, shp2pgsql, psql, ecc. di Debbie.
Se non si modifica la tabella loader_platform
, essa conterrà solo le posizioni comuni degli elementi e si dovrà modificare lo script generato dopo che è stato generato.
A partire da PostGIS 2.4.1, la fase di caricamento dell'area di tabulazione del codice Zip a 5 cifre zcta5
è stata rivista per caricare i dati zcta5 correnti e fa parte di Loader_Generate_Nation_Script quando è abilitata. È disattivato per impostazione predefinita perché richiede molto tempo per essere caricato (da 20 a 60 minuti), occupa molto spazio su disco e non viene usato spesso.
Per attivarla, procedere come segue:
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta520';
Se presente, la funzione Geocode può utilizzarla se viene aggiunto un filtro di delimitazione per limitare gli zip a quel confine. La funzione Reverse_Geocode lo utilizza se l'indirizzo restituito manca di un CAP, cosa che spesso accade con la geocodifica inversa delle autostrade.
Creare una cartella chiamata gisdata
nella root del server o sul pc locale se si dispone di una connessione di rete veloce al server. In questa cartella verranno scaricati ed elaborati i file tigre. Se non si è soddisfatti di avere la cartella nella radice del server o semplicemente si vuole cambiare la cartella di staging, modificare il campo staging_fold
nella tabella tiger.loader_variables
.
Creare una cartella denominata temp nella cartella gisdata
o dove è stata designata la cartella staging_fold
. Questa sarà la cartella in cui il caricatore estrarrà i dati della tigre scaricati.
Eseguire quindi la funzione Loader_Generate_Nation_Script SQL assicurandosi di utilizzare il nome del profilo personalizzato e copiare lo script in un file .sh o .bat. Quindi, per esempio, per costruire il carico della nazione:
psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA > /gisdata/nation_script_load.sh
Eseguire gli script da riga di comando generati per il caricamento della nazione.
cd /gisdata sh nation_script_load.sh
Dopo aver eseguito lo script nazionale, si dovrebbero avere tre tabelle nello schema tiger_data
e dovrebbero essere riempite di dati. Per confermarlo, eseguire le seguenti query da psql o pgAdmin
SELECT count(*) FROM tiger_data.county_all;
count ------- 3235 (1 row)
SELECT count(*) FROM tiger_data.state_all;
count ------- 56 (1 row)
This will only have data if you marked zcta5 to be loaded
SELECT count(*) FROM tiger_data.zcta5_all;
count ------- 33931 (1 row)
Per impostazione predefinita, le tabelle corrispondenti a bg
, tract
, tabblock20
non vengono caricate. Queste tabelle non sono utilizzate dal geocodificatore, ma sono usate da molti per le statistiche sulla popolazione. Se si desidera caricarle come parte dei carichi di stato, eseguire la seguente istruzione per abilitarle.
UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock20');
In alternativa, è possibile caricare solo queste tabelle dopo aver caricato i dati di stato utilizzando il metodo Loader_Generate_Census_Script
Per ogni stato per cui si desidera caricare i dati, generare uno script di stato Loader_Generate_Script.
NON generare lo script dello stato prima di aver caricato i dati della nazione, perché lo script dello stato utilizza l'elenco delle contee caricato dallo script della nazione. |
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
Eseguire gli script da riga di comando generati.
cd /gisdata sh ma_load.sh
Una volta terminato il caricamento di tutti i dati o in un punto di arresto, è buona norma analizzare tutte le tabelle delle tigri per aggiornare le statistiche (includere le statistiche ereditate)
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;
Una delle tante lamentele degli utenti è la funzione di normalizzazione degli indirizzi Normalize_Address che normalizza un indirizzo per la preparazione prima della geocodifica. Il normalizzatore è tutt'altro che perfetto e cercare di correggere le sue imperfezioni richiede una grande quantità di risorse. Per questo motivo ci siamo integrati con un altro progetto che ha un motore di normalizzazione degli indirizzi molto migliore. Per usare questo nuovo address_standardizer, si deve compilare l'estensione come descritto in Section 2.3, “Installazione e utilizzo dello standardizzatore di indirizzi” e installarla come estensione nel database.
Una volta installata questa estensione nello stesso database in cui è stato installato postgis_tiger_geocoder
, è possibile utilizzare Pagc_Normalize_Address al posto di Normalize_Address. Questa estensione è agnostica rispetto a tiger, quindi può essere utilizzata con altre fonti di dati come gli indirizzi internazionali. L'estensione tiger geocoder viene fornita con le sue versioni personalizzate di rules table ( tiger.pagc_rules
), gaz table (tiger.pagc_gaz
) e lex table (tiger.pagc_lex
). Queste possono essere aggiunte e aggiornate per migliorare l'esperienza di standardizzazione in base alle proprie esigenze.
Il processo di caricamento scarica i dati per ciascuno stato richiesto dal sito del censimento, estrare i file, e li carica nelle rispettive tabelle. La tabella di ogni stato eredita le proprietà dalle tabelle definite nello schema tiger
, per cui è sufficiente eseguire le interrogazioni su queste tabelle per accedere a tutti i dati. E' altresì possibile cancellare le tabelle per un dato stato tramite lo script Drop_State_Tables_Generate_Script, qualora aveste necessità di ricaricare uno stato o se questo non vi serve più.
Per caricare i dati avrete bisogno dei seguenti strumenti:
Uno strumento per decomprimere i file zip dal sito web dei censimenti.
Per sistemi tipo Unix: l'eseguibile unzip
è di soiito già installato.
Per Windows, 7-zip è uno strumento libero di compressione/decompressione, che può essere scaricato dal sito http://www.7-zip.org/
Il programam da riga di comando shp2pgsql
, che viene installato di base quando nistallate PostGIS.
wget
è uno strumento per la copia di file da web, solitamente installato nella maggior parte dei sistemi Unix/Linux.
Se siete su Windows, potete reperire i file binari precompilati da http://gnuwin32.sourceforge.net/packages/wget.htm
Se si effettua l'aggiornamento da tiger_2010, è necessario generare ed eseguire prima Drop_Nation_Tables_Generate_Script. Prima di caricare i dati degli stati, è necessario caricare i dati dell'intera nazione, cosa che si fa con Loader_Generate_Nation_Script. Loader_Generate_Nation_Script è un'operazione che va eseguita una sola volta per l'aggiornamento (dai dati del censimento di tiger dell'anno precedente) e per le nuove installazioni.
Per caricare i dati degli stati, fare riferimento a Loader_Generate_Script per generare uno script di caricamento dei dati per la propria piattaforma per gli stati desiderati. Si noti che è possibile installare questi script in modo frammentario. Non è necessario caricare tutti gli stati desiderati in una volta sola. È possibile caricarli man mano che se ne ha bisogno.
Dopo aver caricato i dati per gli stati cui siete interessati, assicuratevi di eseguire:
SELECT install_missing_indexes();
come descritto in Install_Missing_Indexes.
Per vedere se le cose funzionano come dovrebbero, provate a eseguire la geocodifica di un indirizzo nel vostro stato utilizzando Geocode
Per prima cosa aggiornare l'estensione postgis_tiger_geocoder come segue:
ALTER EXTENSION postgis_tiger_geocoder UPDATE;
Poi cancellate tutte le tabelle delle nazioni e caricate quelle nuove. Potete generare uno script per la cancellazione con il codice SQL illustrato in Drop_Nation_Tables_Generate_Script
SELECT drop_nation_tables_generate_script();
Eseguite i comandi SQL DROP che vengono generati.
Generate uno script per il caricamento di uno stato con l'istruzione SELECT come illustrato in Loader_Generate_Nation_Script
Per Windows
SELECT loader_generate_nation_script('windows');
Per unix/linux
SELECT loader_generate_nation_script('sh');
Fare riferimento a Section 2.4.1, “Tiger Geocoder Abilitazione del database PostGIS” per le istruzioni su come eseguire lo script di generazione. Questa operazione deve essere eseguita una sola volta.
È possibile avere un mix di tabelle di stato di anni diversi e aggiornare ogni stato separatamente. Prima di aggiornare uno stato, è necessario eliminare le tabelle di stato dell'anno precedente per quello stato utilizzando Drop_State_Tables_Generate_Script. |
Quando l'installazione o l'aggiornamento non vanno come previsto, diverse cose vanno controllate.
Controllate di aver installato PostgreSQL 12 o più recente, e che state compilando con il sorgente PostgreSQL nella versione corrispondente alla versione di PostgreSQL che sta girando. Si possono verificare casi di confusione quando la vostra distribuzione (Linux) ha PostgreSQL già installao, o quando avete installato PostgreSQL in precedenza e ve ne siete dimenticati. PostGIS funzionerà solo con PostgreSQL 12 o più recente, e si potrebbero ricevere messaggi di errore strani o inattesi se utilizzate una versione più vecchia. Per verificare quale versione di PostgreSQL sta girando, collegatevi al database utilizzando psql ed eseguite la seguente query:
SELECT version();
Se state utilizzando una distribuzione basata su RPM, potete verificare la presenza di pacchetti preinstallati utilizzando il comando rpm con la seguente sintassi: rpm -qa | grep postgresql
Se l'aggiornamento non funziona, assicuratevi di eseguire il ripristino in un database che abbia già PostGIS installato.
SELECT postgis_full_version();
Verificare anche che configure abbia rilevato correttamente la posizione e la versione di PostgreSQL, della libreria Proj e della libreria GEOS.
L'uscita da configure viene utilizzata per generare il file postgis_config.h
. Controllate che le variabili POSTGIS_PGSQL_VERSION
, POSTGIS_PROJ_VERSION
e POSTGIS_GEOS_VERSION
siano assegnate correttamente.