Chapter 12. PostGIS Extras

Table of Contents

Ce chapitre documente les fonctionnalités trouvées dans le dossier extras des fichiers tarballs et du dépôt de sources de PostGIS. Celles-ci ne sont pas toujours packagées avec les versions binaires de PostGIS, mais sont généralement basées sur PL/pgSQL ou des scripts shell standard qui peuvent être exécutés tels quels.

12.1. Géocodeur Tiger

Abstract

A plpgsql based geocoder written to work with the TIGER (Topologically Integrated Geographic Encoding and Referencing system ) / Line and Master Address database export released by the US Census Bureau.

Le géocodeur se compose de quatre éléments : les fonctions de chargement des données, le normalisateur d'adresses, le géocodeur d'adresses et le géocodeur inverse.

Bien qu'il soit conçu spécifiquement pour les États-Unis, un grand nombre de concepts et de fonctions sont applicables et peuvent être adaptés pour fonctionner avec les adresses et les réseaux routiers d'autres pays.

The script builds a schema called tiger to house all the TIGER-related functions, reusable lookup data such as road type prefixes, suffixes, states, various control tables for managing data load, and skeleton base tables from which all the TIGER-loaded tables inherit.

Another schema called tiger_data is also created which houses all the census data for each state that the loader downloads from the Census site and loads into the database. In the current model, each set of state tables is prefixed with the state code e.g ma_addr, ma_edges etc with constraints to enforce only that state data. Each of these tables inherits from the tables addr, faces, edges, etc located in the tiger schema.

All the geocode functions only reference the base tables, so there is no requirement that the data schema be called tiger_data or that data can't be further partitioned into other schemas -- e.g. a different schema for each state, as long as all the tables inherit from the tables in the tiger schema.

Pour savoir comment activer l'extension dans votre base de données et charger des données à l'aide de celle-ci, consultez Section 2.3.1, “Tiger Geocoder Activation de votre base de données PostGIS”.

[Note]

If you are using the TIGER Geocoder (tiger_2010), you can upgrade the scripts using the accompanying upgrade_geocoder.bat / .sh scripts in extras/tiger. One major change between tiger_2010 and tiger_2011+ is that the county and state tables are no longer broken out by state. If you have data from tiger_2010 and want to replace with tiger_2015, refer to Section 2.3.3, “Mise à jour du géocoder Tiger et de ses données”

[Note]

You can install the TIGER Geocoder with the PostgreSQL extension model. Refer to Section 2.3.1, “Tiger Geocoder Activation de votre base de données PostGIS” for details.

The Pagc_Normalize_Address function as a drop in replacement for in-built Normalize_Address. Refer to address_standardizer for compile and installation instructions.

Conception :

L'objectif de ce projet est de construire un géocodeur entièrement fonctionnel capable de traiter une chaîne d'adresses arbitraires aux États-Unis et, à l'aide des données normalisées du recensement TIGER, de produire une géométrie de points et une évaluation reflétant la localisation de l'adresse donnée et la vraisemblance de la localisation. Plus l'indice est élevé, plus le résultat est mauvais.

The reverse_geocode function is useful for deriving the street address and cross streets of a GPS location.

Le géocodeur doit être simple à installer et à utiliser pour toute personne familiarisée avec PostGIS, et doit être facilement installable et utilisable sur toutes les plateformes supportées par PostGIS.

Il doit être suffisamment robuste pour fonctionner correctement malgré les erreurs de formatage et d'orthographe.

Il doit être suffisamment extensible pour pouvoir être utilisé avec de futures mises à jour de données ou d'autres sources de données avec un minimum de changements de codage.

[Note]

Le schéma tiger doit être ajouté au search path de la base de données pour que les fonctions fonctionnent correctement.

  • Drop_Indexes_Generate_Script — Génère un script qui supprime toutes les clés non primaires et les index non uniques sur le schéma tiger et le schéma spécifié par l'utilisateur. Le schéma par défaut est tiger_data si aucun schéma n'est spécifié.
  • Drop_Nation_Tables_Generate_Script — Génère un script qui supprime toutes les tables du schéma spécifié qui commencent par county_all, state_all ou code d'état suivi de county ou state.
  • Drop_State_Tables_Generate_Script — Génère un script qui supprime toutes les tables du schéma spécifié qui sont préfixées par l'abréviation de l'état. La valeur par défaut du schéma est tiger_data si aucun schéma n'est spécifié.
  • Geocode — Prend une adresse sous forme de chaîne de caractères (ou autre adresse normalisée) et produit un ensemble de lieux possibles comprenant une géométrie de point en NAD 83 long lat, une adresse normalisée pour chacun d'entre eux et l'évaluation. Plus la note est basse, plus la correspondance est probable. Les résultats sont triés par ordre décroissant. Il est possible d'indiquer en option le nombre maximum de résultats (10 par défaut) et la restriction de la région (NULL par défaut)
  • Geocode_Intersection — Prend 2 rues qui s'intersectent et un état, une ville, un code postal, et produit un ensemble d'emplacements possibles sur la première rue croisée qui est à l'intersection, comprend également un "geomout" comme emplacement du point en NAD 83 long lat, une adresse_normalisée (addy) pour chaque emplacement, et l'évaluation. Plus la note est basse, plus la correspondance est probable. Les résultats sont triés en fonction de la note la plus basse. Il est possible d'indiquer le nombre maximum de résultats, la valeur par défaut étant de 10. Utilise les données Tiger (edges, faces, addr), la correspondance floue de PostgreSQL (soundex, levenshtein).
  • Get_Geocode_Setting — Renvoie la valeur d'un paramètre spécifique stocké dans la table tiger.geocode_settings.
  • Get_Tract — Renvoie le secteur de recensement ou le champ de la table des secteurs où se trouve la géométrie. Par défaut, le nom court du secteur est renvoyé.
  • Install_Missing_Indexes — Recherche toutes les tables dont les colonnes clés sont utilisées dans les jointures du géocodeur et les conditions de filtrage qui n'ont pas d'index utilisés sur ces colonnes et les ajoute.
  • Loader_Generate_Census_Script — Génère un script shell pour la plate-forme spécifiée et les états spécifiés qui téléchargera les tables de données Tiger census state tract, bg et tabblocks, les structurera et les chargera dans le schéma tiger_data. Chaque script d'état est renvoyé sous la forme d'un enregistrement distinct.
  • Loader_Generate_Script — Génère un script shell pour la plateforme spécifiée et les états spécifiés qui téléchargera les données Tiger, les structurera et les chargera dans le schéma tiger_data. Chaque script d'état est renvoyé sous la forme d'un enregistrement séparé. La dernière version prend en charge les modifications structurelles de Tiger 2010 et charge également les tableaux de secteurs de recensement, de groupes d'îlots et d'îlots.
  • Loader_Generate_Nation_Script — Génère un script shell pour la plate-forme spécifiée qui charge les données dans les tables county et state.
  • Missing_Indexes_Generate_Script — Recherche toutes les tables dont les colonnes clés sont utilisées dans les jointures du géocodeur et qui n'ont pas d'index sur ces colonnes, et génère le DDL SQL permettant de définir l'index pour ces tables.
  • Normalize_Address — Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui contient le suffixe de la route, le préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Cette fonction fonctionne uniquement avec les données de recherche fournies avec le géocodeur tiger (pas besoin pour les données de recensement tiger).
  • Pagc_Normalize_Address — Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui contient le suffixe de la route, le préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Cette fonction fonctionne uniquement avec les données de recherche fournies avec le géocodeur tiger (pas besoin pour les données de recensement tiger). Nécessite l'extension address_standardizer.
  • Pprint_Addy — Étant donné un objet de type composite norm_addy, renvoie une jolie représentation de celui-ci. Généralement utilisé en conjonction avec normalize_address.
  • Reverse_Geocode — Prend un point géométrique dans un système spatial connu et renvoie un enregistrement contenant un tableau d'adresses théoriquement possibles et un tableau de rues transversales. Si include_strnum_range = true, la plage de rues est incluse dans les rues transversales.
  • Topology_Load_Tiger — Charge une région définie de données tiger dans une topologie PostGIS et transforme les données tiger en référence spatiale de la topologie et en s'adaptant à la tolérance de précision de la topologie.
  • Set_Geocode_Setting — Définit un paramètre qui affecte le comportement des fonctions du géocodeur.

There are a couple other open source geocoders for PostGIS, that unlike the TIGER Geocoder have the advantage of multi-country geocoding support

  • Nominatim uses OpenStreetMap gazeteer formatted data. It requires osm2pgsql for loading the data together with PostgreSQL and PostGIS. It is packaged as a webservice interface and seems designed to be called as a webservice. Just like the TIGER Geocoder, it has both a geocoder and a reverse geocoder component. From the documentation, it is unclear if it has a pure SQL interface like the TIGER Geocoder, or if a good deal of the logic is implemented in the web interface.

  • GIS Graphy can utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with some other sources. It comes with a loader to load OSM data and similar to Nominatim is capable of geocoding not just US. Much like Nominatim, it runs as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also has a reverse geocoder among some other neat features.