Este capítulo detalha os passos necessários para instalar o PostGIS.
Para compilar, assumindo que você tem todas as dependências em seu caminho de busca (search path):
tar -xvzf postgis-3.6.0dev.tar.gz cd postgis-3.6.0dev ./configure make make install
Assim que o PostGIS esteja instalado, ele precisa ser habilitado em cada banco de dados que você deseje utilizá-lo.
Muitos sistemas operacionas agora incluem pacotes pré-compilados para PostgreSQL / PostGIS. Em muitos casos, a compilação só é necessário se você quiser as versões ponta ou você é um mantenedor do pacote. This section includes general compilation instructions, if you are compiling for Windows etc or another OS, you may find additional more detailed help at PostGIS User contributed compile guides and PostGIS Dev Wiki. Pre-Built Packages for various OS are listed in PostGIS Pre-built Packages Se você é um usuário windows, você pode obter builds estáveis via Stackbuilder PostGIS Windows download site Também builds experimentais para windows são builds lançadadas geramente uma ou duas vezes por semana ou sempre que algo emocionante acontece. Você pode usá-los para experimentar os lançamentos em progresso de PostGIS |
The PostGIS module is an extension to the PostgreSQL backend server. As such, PostGIS 3.6.0dev requires full PostgreSQL server headers access in order to compile. It can be built against PostgreSQL versions 12 - 17. Earlier versions of PostgreSQL are not supported.
Refer to the PostgreSQL installation guides if you haven't already installed PostgreSQL. https://www.postgresql.org .
Para funcionalidade da GEOS, quando você instalar o PostgreSQL você pode ter que linkar explicitamente o PostgreSQL contra a biblioteca padrão C++: LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE] Isto é uma forma de contornar as exceções falso-positivas da interação do C++ com ferramentas de desenvolvimento mais antigas. Se você experimentar problemas estranho (backend fechando de forma inesperada ou coisas similares), tente este truque. Isto irá requerir que você compile o PostgreSQL do zero, claro. |
Os passos a seguir demonstram a configuração e compilação dos fontes do PostGIS. Eles são escritos para usuários de Linux e não funcionarão em Windows ou Mac.
Obtenha o fonte do PostGIS através da seção de downloads do website 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
Isto irá criar um diretório chamado postgis-3.6.0dev
no diretório de trabalho atual.
Outra alternativa ,é o checkout da fonte do svn repository http://svn.osgeo.org/postgis/trunk/ .
git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis cd postgis sh autogen.sh
Mude para o recém criado postgis-3.6.0dev
diretório para continuar a instalação.
./configure
PostGIS tem os seguintes requisitos para a construção e uso:
Necessário
PostgreSQL 12 - 17. A complete installation of PostgreSQL (including server headers) is required. PostgreSQL is available from https://www.postgresql.org .
For a full PostgreSQL / PostGIS support matrix and PostGIS/GEOS support matrix refer to https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
Compilador GNU C ( gcc
). Alguns outros compiladores ANSI C podem ser utilizados para compilar o PostGIS, mas nós encontramos menos problemas ao compilar com gcc
.
GNU Make (gmake
ou make
). Para varios sistemas, GNU make
é a versão padrão do make. Verifique a versão invocando make -v
. Outras versões do make
pode não processar o PostGIS Makefile
corretamente.
Proj reprojection library. Proj 6.1 or above is required. The Proj library is used to provide coordinate reprojection support within PostGIS. Proj is available for download from 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, version 2.5.x or higher. LibXML2 is currently used in some imports functions (ST_GeomFromGML and ST_GeomFromKML). LibXML2 is available for download from https://gitlab.gnome.org/GNOME/libxml2/-/releases.
JSON-C, versão 0.9 ou maior. JSON-C é atualmente utilizado para importar GeoJSON através da função ST_GeomFromGeoJson. JSON-C está disponível para download em https://github.com/json-c/json-c/releases/.
GDAL, version 3+ is preferred. This is required for raster support. https://gdal.org/download.html.
Este parâmetro está atualmente sem funcionalidade, já que o pacote somente irá instalar na localização do PostgreSQL. Visite http://trac.osgeo.org/postgis/ticket/635 para acompanhar este bug.
Opcional
Certifique-se também de ativar os dispositivos que deseja usar como está descrito em Section 2.1, “Versão Reduzida”.
GTK (requer GTK+2.0, 2.8+) para compilar o shp2pgsql-gui para formar o carregador de arquivo. 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/.
In order to build the Section 12.1, “Padronizador de endereço” you will also need PCRE http://www.pcre.org (which generally is already installed on nix systems). Section 12.1, “Padronizador de endereço” will automatically be built if it detects a PCRE library, or you pass in a valid --with-pcre-dir=/path/to/pcre
during configure.
To enable ST_AsMVT protobuf-c library 1.1.0 or higher (for usage) and the protoc-c compiler (for building) are required. Also, pkg-config is required to verify the correct minimum version of protobuf-c. See protobuf-c. By default, Postgis will use Wagyu to validate MVT polygons faster which requires a c++11 compiler. It will use CXXFLAGS and the same compiler as the PostgreSQL installation. To disable this and use GEOS instead use the --without-wagyu
during the configure step.
CUnit (CUnit
). Isto é necessário para o teste de regressão. http://cunit.sourceforge.net/
DocBook (xsltproc
)é necessário para a construção da documentação. Docbook esta disponível em http://www.docbook.org/ .
DBLatex (dblatex
) é necessário para a construção da documentação em formato PDF. DBLatex está disponível em http://dblatex.sourceforge.net/ .
ImageMagick (convert
) é necessário para gerar as imagens usadas na documentação. ImageMagick está disponível em http://www.imagemagick.org/ .
Como a maior parte das instalações Linux, o primeiro passo é gerar o Makefile que será utilizado para construção do código fonte. Isto é feito utilizando o script shell
./configure
Sem parâmetros adicionais, este comando tentará automaticamente localizar os componentes necessários e bibliotecas para construção do fonte do PostGIS em seu sistema. Embora esta é a forma comum de uso do ./configure, o script aceita diversos parâmetros para aqueles que tem as bibliotecas e programas necessários em localizações do sistema operacional que não são padrão.
A lista a seguir mostra apenas os parâmetros comumente utilizados. Para uma lista completa, utilize os parâmetros --help ou --help=short.
--with-library-minor-version
Starting with PostGIS 3.0, the library files generated by default will no longer have the minor version as part of the file name. This means all PostGIS 3 libs will end in postgis-3
. This was done to make pg_upgrade easier, with downside that you can only install one version PostGIS 3 series in your server. To get the old behavior of file including the minor version: e.g. postgis-3.0
add this switch to your configure statement.
--prefix=PREFIX
Esta é a localização onde as bibliotecas do PostGIS e scripts SQL serão instalados. Por padrão, esta localização é a mesma detectada pela instalação do PostgreSQL.
Este parâmetro está atualmente sem funcionalidade, já que o pacote somente irá instalar na localização do PostgreSQL. Visite http://trac.osgeo.org/postgis/ticket/635 para acompanhar este bug. |
--with-pgconfig=FILE
O PostgreSQL oferece um utilitário chamado pg_config para habilitar extensões como o PostGIS a localizar a instalação do PostgreSQL. Use o parâmetro (--with-pgconfig=/path/to/pg_config para especificar manualmente uma instalação específica do PostgreSQL que será usada pelo PostGIS.
--with-gdalconfig=FILE
GDAL, uma biblioteca requerida, provê funcionalidades necessárias para o suporte a raster. Use o comando gdal-config para localizar o diretório de instalação da GDAL. Use este parâmetro (--with-gdalconfig=/path/to/gdal-config) para manualmente especificar uma instalação em particular da GDAL que o PostGIS irá utilizar.
--with-geosconfig=FILE
GEOS é uma biblioteca requerida, dá um utilitário chamado geos-config para localizar o diretório de instalação da GEOS. Use este parâmetro (--with-geosconfig=/path/to/geos-config) para especificar manualmente uma instalação da GEOS que o PostGIS irá utilizar.
--with-xml2config=FILE
LibXML is the library required for doing GeomFromKML/GML processes. It normally is found if you have libxml installed, but if not or you want a specific version used, you'll need to point PostGIS at a specific xml2-config
confi file to enable software installations to locate the LibXML installation directory. Use this parameter (>--with-xml2config=/path/to/xml2-config) to manually specify a particular LibXML installation that PostGIS will build against.
--with-projdir=DIR
A Proj4 é uma bilbioteca pra reprojeção de coordenadas, na qual o PostGIS depende. Use este parâmetro (--with-projdir=/path/to/projdir para especificar manualmente uma instalação do Proj4 que o PostGIS irá utilizar para compilação.
--with-libiconv=DIR
Diretório onde o iconv esta instalado.
--with-jsondir=DIR
JSON-C é uma biblioteca MIT-licensed JSON exigida pelo suporte PostGIS ST_GeomFromJSON . Use esse parâmetro (--with-jsondir=/path/to/jsondir) para especificar manualmente uma instalação do JSON-C que o PostGIS irá construir contra.
--with-pcredir=DIR
PCRE é uma biblioteca BSD-licensed Perl Compatible Regular Expression requerida pela extensão address_standardizer. Use esse parâmetro (--with-pcredir=/path/to/pcredir) para especificar manualmente uma instalação do PCRE que o PostGIS irá construir contra.
--with-gui
Compile a interface de usuário para importação de dados (requer GTK+2.0). Isto irá criar a ferramenta de interface gráfica shp2pgsql-gui para o utilitário shp2pgsql.
--without-raster
Instalar suporte a raster
--without-topology
Disable topology support. There is no corresponding library as all logic needed for topology is in postgis-3.6.0dev library.
--with-gettext=no
Por padrão o PostGIS vai tentar detectar o suporte gettext e compilar com ele, porém se você tiver problemas incompatíveis que causem dano de carregamento, você pode o desabilitar com esse comando. Referir-se ao ticket http://trac.osgeo.org/postgis/ticket/748 para um exemplo de problema resolvido configurando com este. NOTA: que você não está perdendo muito desligando isso. É usado para ajuda internacional para o carregador GUI que ainda não está documentado e permanece experimental.
--with-sfcgal=PATH
Por padrão PostGIS não tentará instalar com suporte sfcgal sem esta mudança. PATH
é um argumento opcional que permite especificar um PATH alternativo para sfcgal-config.
--without-phony-revision
Disable updating postgis_revision.h to match current HEAD of the git repository.
Se conseguiu o PostGIS do SVN depósito , o primeiro passo é fazer funcionar o script ./autogen.sh Este script gera a configurar script que na volta é usada para personalizar a instalação do PostGIS. Se em vez de conseguir o PostGIS como tarball, rodando ./autogen.sh não é necessariamente como configurar já foi gerado. |
Uma vez que o Makefile tenha sido gerado, compilar o PostGIS é simples como rodar o comando
make
A última linha da saída deve ser "PostGIS was built successfully. Ready to install.
."
As of PostGIS v1.4.0, all the functions have comments generated from the documentation. If you wish to install these comments into your spatial databases later, run the command which requires docbook. The postgis_comments.sql and other package comments files raster_comments.sql, topology_comments.sql are also packaged in the tar.gz distribution in the doc folder so no need to make comments if installing from the tar ball. Comments are also included as part of the CREATE EXTENSION install.
make comments
Apresentado ao PostGIS 2.0. Isto gera html cheat sheets adequadas para referências rápidas ou para handouts dos estudantes. Exige xsltproc para construir e vai gerar 4 arquivos no folder do documento topology_cheatsheet.html
, tiger_geocoder_cheatsheet.html
, raster_cheatsheet.html
, postgis_cheatsheet.html
Você pode baixar alguns pre-construídos disponíveis em html e pdf de PostGIS / PostgreSQL Study Guides
make cheatsheets
As extensões do PostGIS são contruídas e instaladas automaticamente se você estiver usando PostgreSQL 9.1 ou superior.
Se você está compilando do repositório, você precisa de compilar a função de descrições primeiro. Estas são compiladas se você possui o docbook instalado. Você pode também construir manualmente com o comando:
make comments
Construir a documentação não é necessário se você está construindo de uma versão de lançamento no formato tar ball, já que estas são empacotadas pré-construídas com o tar ball.
Se você está construindo o PostGIS contra o PostgreSQL 9.1, as extensão devem ser automaticamente construídas como parte do processo de make. Você pode, contudo, se necessário, construir das pastas de extensões ou copiar os arquivos se você precisar dos mesmos em um servidor diferente.
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
|
Os arquivos de extensões sempre serão os mesmos para a mesma versão do PostGIS, independente do Sistemas Operacional, então é fácil copiar os arquivos de extensão de um sistema operacional para outro, desde que você tenha os binários do PostGIS instalados em seus servidores.
Se você deseja instalar as extensões manualmente em um servidor diferente, do seu servidor de desenvolvimento, você precisará copiar os seguintes arquivos da pasta de extensões para a pastaPostgreSQL /share/extension
da sua instalação do PostgreSQL, bem como os binários necessários para o PostGIS, se você não os tem ainda no servidor de destino.
Existe arquivos de controle que denotam informações como a versão da extensão a ser instalada, caso não seja especificada. postgis.control, postgis_topology.control
.
Todos os arquivos na pasta /sql de cada extensão. Note que estes precisam ser copiados para a raiz da pasta share/extension do PostgreSQL extensions/postgis/sql/*.sql
, extensions/postgis_topology/sql/*.sql
Once you do that, you should see postgis
, postgis_topology
as available extensions in PgAdmin -> extensions.
Se você está utilizando psql, pode verificar quais estensões estão instaladas executando essa 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 você tem a extensão instalada no banco de dados de seu interesse, você a verá mencionada na coluna installed_version
. Se você não receber nenhum registro de volta, significa que você não tem extensões do PostGIS instaladas no servidor. PgAdmin III 1.14+ também irá lhe dar esta informação na seção extensions
do navegador de banco de dados e até permitirá o upgrade ou a desinstação utilizando o clique com o botão direito.
Se você tem extensões disponíveis, pode instalar a extensão postgis no seu database escolhido usando a interface da extensão pgAdmin ou rodando esses comandos 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;
No psql você pode ver quais versões foram instaladas e qual esquema eles estão instalando.
\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
Extensões table |
Se você instalou 3.6.0dev sem usar nosso sistema de extensão maravilhoso, você pode mudar para uma extensão baseada em primeiro atualizando para a última micro versão rodando as scripts atualizadas:
postgis_upgrade_22_minor.sql
,raster_upgrade_22_minor.sql
,topology_upgrade_22_minor.sql
.
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 desejar testar o PostGIS, rode
make check
O comando acima irá rodar através de várias verificações e testes de regressão usando a biblioteca gerada contra o database do PostreSQL atual.
Se você configurou o PostGIS usando o não padronizado PostgreSQL, GEOS, ou Proj4 localizações, talvez você precise adicionar a biblioteca de localizações deles à LD_LIBRARY_PATH variável de ambiente. |
Atualmente, o faz verificação confia nas variáveis de ambiente |
If successful, make check will produce the output of almost 500 tests. The results will look similar to the following (numerous lines omitted below):
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
As extensões postgis_tiger_geocoder
and address_standardizer
, atualmente só suportam o modelo PostgreSQL installcheck. Para testá-los use abaixo. Nota: fazer a instalação não é necessária se você já instalou na raiz do folder code do PostGIS.
Para address_standardizer:
cd extensions/address_standardizer make install make installcheck
Saída deve parecer com:
============== 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. =====================
Para o geocoder tiger, certifique-se que você tem extensões portgis e fuzzystratch disponíveis no seu PostgreSQL. Os testes address_standardizer também irão desprezar se seus postgis construídos com address_standardizer suportar:
cd extensions/postgis_tiger_geocoder make install make installcheck
saída deve parecer com:
============== 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. =====================
Para instalar o PostGIS, digite
make install
Isso irá copiar a instalação dos arquivos do PostGIS para suas subdireções específicas pelo --prefix parâmetro de configuração. Particularmente:
Os binários do carregador e do dumper estão instalados no [prefix]/bin
.
Os arquivos SQL, como postgis.sql
, estão instalados em [prefix]/share/contrib
.
As bibliotecas do PostGIS estão instaladas em [prefix]/lib
.
Se anteriormente você rodou o comando make comments para gerar o arquivo postgis_comments.sql
, raster_comments.sql
, instale o arquivo sql para executar
make comments-install
|
A extensão address_standardizer
era usada para ser um pacote separado que requeria download separado. Do PostGIS 2.2 em diante é compactado. Para mais informações sobre o address_standardize, o que ele faz e como fazer sua configuração, referir-se Section 12.1, “Padronizador de endereço”.
O padronizador pode ser usado em conjunção com a extensão tiger geocoder PostGIS compactada como uma reposição para a Normalize_Address discutida. Para usar como reposição Section 2.4.2, “Usando Padronizador de Endereço com Tiger Geocoder”. Você também pode utilizar como um building block para seu próprio geocoder ou como padronizar seu endereço para uma comparação de endereços mais fácil.
O padronizador de endereço confia no PCRE que já está instalado na maioria dos sistemas Nix, mas você pode baixar a última versão em: http://www.pcre.org. Se durante Section 2.2.3, “Configuração”, o PCRE é encontrado, então a extensão do padronizador de endereço será automaticamente construída. Se você tem um pcre personalizado que queira usar, passe a configurar --with-pcredir=/path/to/pcre
onde /path/to/pcre
é a pasta root para o seu pcre incluso e lista lib.
Para usuários do Windows, o pacote PostGIS 2.1+ já está compactado com o address_standardizer, então não precisa compilar podendo seguir direto para o passo CREATE EXTENSION
.
Uma vez que instalou, você pode conectar no seu banco de dados e rodar o SQL:
CREATE EXTENSION address_standardizer;
O teste seguinte não requere tables rules, gaz ou lex.
SELECT num, street, city, state, zip FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');
Saída deve ser
num | street | city | state | zip -----+------------------------+--------+-------+------- 1 | Devonshire Place PH301 | Boston | MA | 02109
Extras like Tiger geocoder may not be packaged in your PostGIS distribution. If you are missing the tiger geocoder extension or want a newer version than what your install comes with, then use the share/extension/postgis_tiger_geocoder.*
files from the packages in Windows Unreleased Versions section for your version of PostgreSQL. Although these packages are for windows, the postgis_tiger_geocoder extension files will work on any OS since the extension is an SQL/plpgsql only extension.
These directions assume your PostgreSQL installation already has the postgis_tiger_geocoder extension installed.
Conecte ao seu banco de dados vis psql ou pgAdmin ou qualquer outra ferramenta e execute os comandos SQL seguintes. Note que se você está instalando em um banco de dados que já possui o postgis, você não precisa fazer o primeiro passo. Se você já tem a extensão fuzzystrmatch
instalada, não é preciso fazer o segundo passo também.
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 você já tem a extensão postgis_tiger_geocoder instalada e só quer atualizar para a última versão, execute:
ALTER EXTENSION postgis UPDATE; ALTER EXTENSION postgis_tiger_geocoder UPDATE;
Se você fez entradas personalizadas ou alterações nos tiger.loader_platform
e tiger.loader_variables
, talvez você precisará atualizar estes.
Para confirmar que sua instalação está funcionando corretamente, execute esse sql no seu banco de dados:
SELECT na.address, na.streetname,na.streettypeabbrev, na.zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
Qual deve sair
address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109
Criar um novo registro na table tiger.loader_platform
com os paths dos seus executáveis e servidor.
Então, por exemplo, para criar um perfil chamado debbie que segue a convenção sh
, você deveria fazer:
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';
E então, edite os paths na coluna declare_sect para aqueles que servem ao pg, unzip, shp2pgsql, psql, etc da Debbie.
Se você não editou essa table loader_platform
, ela só irá conter casos comuns de localizações de itens e você terá que editar a script gerada depois que ela for gerada.
As of PostGIS 2.4.1 the Zip code-5 digit tabulation area zcta5
load step was revised to load current zcta5 data and is part of the Loader_Generate_Nation_Script when enabled. It is turned off by default because it takes quite a bit of time to load (20 to 60 minutes), takes up quite a bit of disk space, and is not used that often.
To enable it, do the following:
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta520';
If present the Geocode function can use it if a boundary filter is added to limit to just zips in that boundary. The Reverse_Geocode function uses it if the returned address is missing a zip, which often happens with highway reverse geocoding.
Criar uma pasta chamada gisdata
na raiz do servidor ou do seu computador local, se você tem uma rede de conexão rápida com o servidor. Essa pasta está onde os arquivos tiger serão baixados e processados. Se não estiver satisfeito em ter a pasta na raiz do servidor ou, simplesmente, quiser alterar para uma outra pasta para representação, edite o campo staging_fold
na table tiger.loader_variables
.
Criar uma pasta chamada temp na pasta gisdata
ou onde designar a staging_fold
. Esta será a pasta onde o carregador extrai os dados tiger baixados.
Then run the Loader_Generate_Nation_Script SQL function make sure to use the name of your custom profile and copy the script to a .sh or .bat file. So for example to build the nation load:
psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA > /gisdata/nation_script_load.sh
Run the generated nation load commandline scripts.
cd /gisdata sh nation_script_load.sh
After you are done running the nation script, you should have three tables in your tiger_data
schema and they should be filled with data. Confirm you do by doing the following queries from psql or 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)
By default the tables corresponding to bg
, tract
, tabblock20
are not loaded. These tables are not used by the geocoder but are used by folks for population statistics. If you wish to load them as part of your state loads, run the following statement to enable them.
UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock20');
Alternatively you can load just these tables after loading state data using the Loader_Generate_Census_Script
For each state you want to load data for, generate a state script Loader_Generate_Script.
DO NOT Generate the state script until you have already loaded the nation data, because the state script utilizes county list loaded by nation script. |
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
Executar as scripts commandlines geradas
cd /gisdata sh ma_load.sh
Depois que terminar de carregar todos os dados ou estiver parado em um ponto, é bom analisar todas as tiger tables para atualizar as estatísticas (incluindo as estatísticas herdadas)
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;
Uma das maiores queixas das pessoas é a função normalizador de endereços Normalize_Address que normaliza um endereço para preparação antes da geocoding. O normalizador está longe da perfeição e tentar corrigir suas imperfeições demanda um grande número de recursos. Como tal nós integramos com outro projeto que tem um mecanismo de padronizador de endereços muito melhor. Para usar esse novo address_standardizer, você compila a extensão como está descrito em Section 2.3, “Instalando e usando o padronizador de endereço” e instala como uma extensão no seu banco de dados.
Uma vez que você instala essa extensão no mesmo banco de dados que instalou postgis_tiger_geocoder
, então o Pagc_Normalize_Address pode ser usado ao invés do Normalize_Address. Essa extensão é avessa ao tiger, logo pode ser usada com outras fontes de dados como: endereços internacionais. A extensão tiger geocoder vem compactada com suas próprias versões personalizadas de rules table ( tiger.pagc_rules
) , gaz table (tiger.pagc_gaz
), e lex table (tiger.pagc_lex
). Essas você pode adicionar e atualizar para melhorar sua experiência com o padronizador de acordo com suas necessidades.
O carregador processa dados de downloads do site de censo para os respectivos arquivos de nação, solicitações de estados, extrai os arquivos e carrega cada estado para seu grupo separado de state tables. Cada state table herda das tables definidas no esquema tiger
sendo suficiente apenas para pesquisar aquelas tables para acessar todos os dados e derrubar um conjunto de state tables a qualquer momento usando o Drop_State_Tables_Generate_Script se quiser recarregar um estado ou não precisa de um estado mais.
Para ser capaz de carregar dados, você vai precisar das seguintes ferramentas:
Uma ferramenta para descompactar os arquivos compactados do site de censo.
Para Unix como sistemas: executável unzip
que é instalado, normalmente, na maioria dos Unix como plataformas.
Para Windows, 7-zip é uma ferramenta comprimir/descomprimir grátis que você pode baixar no http://www.7-zip.org/
shp2pgsql
commandline que é instalada por padrão quando você instala o PostGIS.
wget
que é uma ferramente grabber da internet, instalada na maioria dos sistemas Unix/Linux.
Se você está no Windows, você pode obter binários pre compilados do http://gnuwin32.sourceforge.net/packages/wget.htm
If you are upgrading from tiger_2010, you'll need to first generate and run Drop_Nation_Tables_Generate_Script. Before you load any state data, you need to load the nation wide data which you do with Loader_Generate_Nation_Script. Which will generate a loader script for you. Loader_Generate_Nation_Script is a one-time step that should be done for upgrading (from a prior year tiger census data) and for new installs.
Para carregar dados do estado referir-se a Loader_Generate_Script para gerar uma script de dados de carregamento para sua plataforma para os estados que deseja. Note que você pode instalar estes gradativamente. Você não precisa carregar todos os estados de uma só vez. Pode carregá-los à medida que for precisando deles.
Depois que os estados desejados forem carregados, certifique-se de executar o:
SELECT install_missing_indexes();
como está descrito em Install_Missing_Indexes.
Para testar que está tudo funcionando normalmente, tente executar um geocode em um endereço no seu estado, usando Geocode
First upgrade your postgis_tiger_geocoder extension as follows:
ALTER EXTENSION postgis_tiger_geocoder UPDATE;
Em seguida, derrube todas as nation tables e carregue as novas. Gere uma drop script com essa declaração SQL, como está detalhado em Drop_Nation_Tables_Generate_Script
SELECT drop_nation_tables_generate_script();
Execute as declarações geradas drop SQL.
Gere uma script que carrega uma nação com SELECIONAR como está detalhado em Loader_Generate_Nation_Script
Para windows
SELECT loader_generate_nation_script('windows');
Para unix/linux
SELECT loader_generate_nation_script('sh');
Refer to Section 2.4.1, “Tiger Geocoder Enabling your PostGIS database” for instructions on how to run the generate script. This only needs to be done once.
You can have a mix of different year state tables and can upgrade each state separately. Before you upgrade a state you first need to drop the prior year state tables for that state using Drop_State_Tables_Generate_Script. |
Existem várias coisas para averiguar quando a instalação ou atualização não saem como o esperado.
Certifique-se que instalou o PostgreSQL 12 ou mais novo e que você está compilando contra a mesma versão da fonte PostgreSQL assim como a versão do PostgreSQL que está sendo executada. Confusões podem acontecer quando sua distribuição (Linux) já instalou o PostgreSQL, ou você instalou o PostgreSQL antes e se esqueceu disso. PostGIS só irá funcionar com o PostgreSQL 12 ou mais novo, e mensagens estranhas e inesperadas de erro aparecerão se você usar uma versão mais antiga. Para verificar a versão PostgreSQL que está sendo executada, conecte ao banco de dados usando psql e faça essa consulta:
SELECT version();
Se você está usando uma distribuição baseada em RPM, você pode confirmar a existência de pacotes pre instalados utilizando o comando rpm como segue: rpm -qa | grep postgresql
Se sua atualização falhar, certifique-se que você está restaurando em um banco de dados que já possui o PostGIS instalado.
SELECT postgis_full_version();
Também certifique que a configuração detectou a localização e versão corretas do PostgreSQL, da biblioteca do Proj4 e da biblioteca do GEOS.
A saída da configuração foi usada para gerar o arquivo postgis_config.h
. Verifique que as variáveis POSTGIS_PGSQL_VERSION
, POSTGIS_PROJ_VERSION
e POSTGIS_GEOS_VERSION
foram configuradas corretamente.