All pages
Powered by GitBook
1 of 39

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Prerequisites

System requirements

AddressBase Premium is an addressing gazetteer offering full property life cycle information that can be used within GIS and database systems. For details of Ordnance Survey’s licensed partners, who can incorporate the AddressBase products into their systems, please see the systems/software page on the Ordnance Survey website.

Ordnance Survey does not recommend specific suppliers or software products as the most appropriate system will depend on many factors, for example, the amount of data being taken, resources available within the organisation, the existing and planned information technology infrastructure, and the applications that AddressBase products can be used for.

However, as a minimum, the following elements will be required in any system:

  • A means of reading the data, either in its native format, or by translating it into a file format or for storage in a database.

  • A means of storing and distributing the data, perhaps in a database or through a web-based service.

  • A way of visualising and querying the data, typically a GIS.

Backup provision of the products

You are advised to copy the supplied data to a backup medium.

Typical data volumes

For reading purposes, it is recommended to store the data on a single hard disc. This will speed up the ability of your computer to read the data.

The table below lists the unzipped file sizes for the GB full supply of the two products.

Product name
CSV
GML
GPKG

AddressBase Premium

40 Gb

186 Gb

28 Gb

AddressBase Premium Islands

1 Gb

4 Gb

0.8 Gb

AddressBase Premium

AddressBase Premium provides the most detailed view of an address and its lifecycle for England, Wales and Scotland. It has approximately 40 million addresses as it records an address from creation through to retirement. All address records are provided with a Unique Property Reference Number (UPRN).

This product is updated every six weeks.

Representation of AddressBase Premium data.

There are over 100 million cross references which include references to VOA data and products such as OS MasterMap Topography Layer and OS MasterMap Highways Network are also included.

The product contains Local Authority, Ordnance Survey and Royal Mail addresses. This includes alternative addresses for current records where available, indicating variations on the official addresses and / or addresses in different languages (Welsh or Gaelic); as well as including provisional addresses (proposed planning developments), and historic information (demolished properties) where available. Other addresses known as Objects Without a Postal Address (OWPAs) are also included in AddressBase Premium, these include places of worship, community centres and utilities.

Addresses throughout the property lifecycle

The AddressBase Premium dataset contains Local Authority, Ordnance Survey and Royal Mail addresses, each uniquely referenced by a UPRN (Unique Property Reference Number).

Spot data patterns

Property level coordinates within AddressBase Premium allow you to conduct analysis at the level of individual addresses and spot patterns hidden in your own data.

Shape your operations

With UPRNs being assigned as soon as planning permission is granted, with AddressBase Premium you'll have all the information you need to shape the way you plan, operate and communicate with your audience.

Enable efficient processes

Each address is referenced by a UPRN, a persistent identifier for each address, allowing you to manage addresses and making your processes more efficient.

AddressBase Premium is well suited to a broad range of applications, including:

  • Utility demand planning

  • Energy / utility switching

  • Sales lead generation

  • Fraud prevention

  • Insurance underwriting

  • Delivery/logistics

  • Urban planning

  • Asset maintenance

  • Conveyancing

  • CRM system

  • Access: Download

  • Data theme: Address

  • Data structure: Vector – Points

  • Coverage: Great Britain

  • Scale: 1:1 250 to 1:10 000

  • Format: CSV, GeoPackage, GML 3.2.1

  • Ordering area: All of Great Britain or customisable area (5km² tiles or user-defined polygon)

Multi-residency information

Multi-residency is information included in AddressBase Premium. The information is provided by Local Authority custodians, who identify multiple occupancy addresses with a shared entrance. This is shown in the data as a structured Parent and Child hierarchy.

AddressBase Premium addresses

AddressBase Premium includes addresses throughout the property lifecycle, from proposed planning development through to demolished address. The product also includes alternative addresses for current records where available, indicating variations on the official addresses and / or addresses in different languages (Welsh or Gaelic).

Other addresses known as Objects Without a Postal Address (OWPAs) are also included in AddressBase Premium; these include places of worship, community centres and utilities.

Data from Royal Mail’s PAF

The database is a vital component of the single address gazetteer database and is in each of the AddressBase products where there has been a match confirming the address to the LLPG address.

How to get this product

Access to this product is free for PSGA (Public Sector Geospatial Agreement) Members. You can check if your organisation is a member of the PSGA on the OS website.

The AddressBase Premium product page on the OS website has advice on how to get the product for businesses, developers, OS Partners and PSGA Members (i.e. government and the public sector).

Alternatively, you can try out the full product by applying for a Data Exploration license.

Sample data

Download AddressBase Premium sample data

You can download sample data for the product for free from the OS Data Hub. The sample data are available in CSV and GML 3.2 formats and cover one area (Exeter).

Visualise AddressBase Premium sample data online

Other ways to access this data

AddressBase Premium data is available from our OS Places API and OS Match & Cleanse API, providing up-to-date information relating to an address or property from creation to retirement. Visit the OS API docs site to unlock programmatic access to rich geospatial data and integrate OS data and services into your applications

Access to UK address data is also available through the OS NGD Address Theme, providing data that is interoperable with other OS NGD themes, up to daily currency, and a data schema designed to be simple to use and interrogate. Users may find OS NGD Address data more accessible and easier to use with databases and GIS software. Visit the OS NGD docs site to discover how to access the OS NGD and learn what's available to users.

What's next?

To access documentation and resources relating to this product, please refer to the following:

New users should start with the AddressBase Fundamentals pages to gain high-level insight into AddressBase products. The Getting Started Guide will help you to begin using product data in different software systems. The Technical Specification contains detailed technical insights.

Data supply

Supply options

DVD supply for an area of interest

When you receive an order via hard media (DVD), the following files will be supplied if the supply is not a Managed Great Britain Set (MGBS):

  • Data

  • Doc

  • Order_Details.txt

Within the Data directory, data files will be found in their compressed format.

A text file called Label Information can be found within the Doc directory. This file is a replica of the information on the DVD should you need to reproduce or reprint this.

The Order_Details.txt provides information about the supply, including supply type, format, dates of order, currency and change. It also contains a list of all the zipped folders contained in the Data directory.

DVD supply of Managed Great Britain Sets

The following files will be supplied when you receive an order of a Managed Great Britain Set (MGBS) via hard media (DVD):

  • Data

  • Doc

  • Order_Details.txt

Within the Data directory, data files will be found in their compressed format.

A text file called Label Information can be found within the Doc directory. This file is a replica of the information on the DVD should you need to reproduce or reprint this.

The Order_Details.txt file provides information about the supply, including supply type, format, dates of order, currency and change. It also contains a list of all the zipped folders contained in the Data directory.

Secure File Transfer Protocol

With a Secure File Transfer Protocol (SFTP) order, the same information is supplied as in DVD supply for an area of interest, but the file names will be slightly different, reflecting the SFTP order number.

Download

The AddressBase Premium and AddressBase Premium Islands products are available as online downloads for customers who have signed up to the Public Sector Plan on the OS Data Hub. From October 2021, Premium Plan members will be able to download AddressBase Premium and AddressBase Premium Islands data from the OS Data Hub. Data can be downloaded in various formats.

Download instructions

Public Sector Plan members should use the following instructions to download the products from the OS Data Hub:

  1. Sign in to your PSGA organisation account on OS Data Hub.

  2. Click Download on the top navigation bar. You will be taken to the Premium Data Downloads catalogue.

  3. Search and select the premium product you want.

  4. Click the Add data package button.

  5. Enter a data package name. We suggest using a name that will help you easily identify the data package later. Data package names don’t have to be unique.\

    {% hint style="info" %} A data package is a downloadable file or group of files containing the product data you want to receive. There can be more than one version of a data package when new product updates are available to download. To download (order) data, you create a data package in the OS Data Hub for the product you want, and specify the area, format and update cycle. Once the system has fulfilled the data package, you can download it from the data package list, under Data packages on the left menu in your OS Data Hub account. {% endhint %}6. Choose your area. For user-defined areas, draw your area of interest (AOI) using the drawing tools or upload a polygon to the map from the polygon library.

  6. Select file format. We show only the available file formats for that selection.

  7. Select updates. We show only the available updates for that selection.

  8. Click the Create data package button.

  9. The confirmation page tells you the data package is being created, with options to Add another data package or click to view the data package status in the data package list. You will also receive a confirmation email when a data package is created.

  10. The data package list displays all the data packages for your organisation. Once a data package has been fulfilled, the status will change from Available soon to Download. You will also receive an email when the data package is ready to download.

  11. Click the Download button to open the data package and download the zip file(s).\

    Download button in OS Data Hub

File naming

The data is supplied as chunked files that cover your selected area. These files are named according to the convention shown in the following sub-sections.

When you open your data, you will see a series of zip folders:

Non-geographic chunks

For a MGBS supply of CSV and GML, you will see a single zip folder when you receive your download data. On opening the data link folder, you will see a series of separate unzipped files.

For example:

  • AddressBasePremium_FULL_2011-07-29_001_csv.zip (full supply of CSV) or

  • AddressBasePremium_COU_2011-07-29_001_gml.zip (COU supply of GML)

For a MGBS supply of GeoPackage, you will see a single zip folder when you receive your download data. On opening the data link folder, you will see a single unzipped file.

For example:

  • AddressBasePremium_FULL_2011-07-29_001_gpkg.zip (full supply of GPKG)

Geographic chunks

When you receive your geo-chunked download data for CSV and GML, you will see a series of zipped folders on opening the data.

For example:

  • AddressBasePremium_FULL_2011-07-29_TQ2020_csv.zip (full supply of CSV) or

  • AddressBasePremium_COU_2011-07-29_TQ2020_gml.zip (COU supply of GML)

When you receive your geo-chunked download data for GPKG, you will see a single zipped folder on opening the data.

For example:

  • AddressBasePremium_FULL_2011-07-29_001_gpkg.zip (full supply of GPKG)

Unzipping the data

The GML, GPKG and CSV data are supplied in a compressed form (ZIP). Some software can access these files directly, while other software will require it to be unzipped.

To unzip the zipped data files (.zip extension), you can use an unzipping utility included with most modern operating systems. Alternatively, open-source zipping/unzipping software can be downloaded from the Internet such as 7-Zip.

When the files are unzipped, they are ready for use and will appear as follows:

Non-geographic chunks

  • AddressBasePremium_FULL_2020-02-11_001.csv

  • AddressBasePremium_ISL_FULL_2020-02-18_001.gml

  • AddressBasePremium_FULL_2020-02-18_001.gpkg

Geographic chunks

  • AddressBasePremium_2011-07-29_NC4040.csv

For GPKG supply, one GPKG will be supplied which will contain all the tiles:

  • AddressBasePremium_FULL_2020-02-18_001.gpkg

AddressBase Premium Getting Started Guide

This getting started guide provides instructions for using AddressBase Premium in different software applications. Users with limited technical knowledge will be able to follow this guide.

These instructions show you how to get started with and .

AddressBase Premium data is supplied as comma-separated values (CSV), Geography Markup Language (GML) and GeoPackage (GPKG).

This guide shows you how to get started with AddressBase Premium and includes the following sections:

AddressBase supply set

This feature is formally known as the GML feature collection and is used to define a collection of features.

This is not supplied as part of the CSV or GPKG supply. Please see the model overviews in for more information.

Feature type attributes

The following page provides details about the attributes included with this feature, their data types in the different output formats, and other important metadata about them.

Query time

Time the data was extracted from the database.

  • Attribute Name: queryTime (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: DateTime

  • Multiplicity: [1]

Query change since date

The date given as part of a change-only query.

  • Attribute Name: queryChangeSinceDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Feature types

This section describes the feature types (one for CSV and GeoPackage, and two for GML) which make up the AddressBase Premium product, giving the following information about each attribute.

AddressBase Premium attribute information

Name and Definition

The name of the attribute and what it is describing.

Condition

A condition associated with this attribute (optional).

Attribute Type

The nature of the attribute, for example, a numeric value or a code list value.

Multiplicity

Describes how many times this element is expected to be populated in the data. An attribute may be optional or mandatory within the product. These are denoted by:

  • ‘1’ – there must be a value

  • ‘0..1’ – population is optional but a maximum of one attribute will be returned These values may be used in combination.

AddressBase Premium feature types

Structured data types

The pages in this section describes the structured data types which make up the AddressBase Premium product.

AddressBase Premium structured data types

AddressBase Premium structure
Street – (Type 11 Record)
BLPU – (Type 21 Record)
AddressBase supply set
Feature with lifecycle
Street Descriptor – (Type 15 Record)
Application Cross Reference – (Type 23 Record)
LPI – (Type 24 Record)
Delivery Point Address – (Type 28 Record)
Successor Cross Reference – (Type 30 Record)
Organisation – (Type 31 Record)
Classification – (Type 32 Record)
Entity with lifecycle
AddressBase Premium
AddressBase Premium Islands
Prerequisites
Data supply
Working with CSV data
Working with GPKG data
Working with GML data
Working with COU data
Creating a single-line or multi-line address
Searching for addresses
A representation of AddressBase Premium data showing address data points marked against a background map
A representation of AddressBase Premium data
Download button in OS Data Hub

AddressBase Premium Lightning Talk

A helpful introductory article hosted on our More than Maps platform providing additional information and context about using AddressBase Premium data.

AddressBase Fundamentals

The AddressBase Fundamentals pages provide an overview of the 'family' of AddressBase products, covering key elements of design for AddressBase products.

Getting Started Guide

The getting started guide provides instructions for using AddressBase Premium in different software applications. Users with limited technical knowledge will be able to follow this guide.

Technical Specification

The technical specification provides detailed technical information about AddressBase Premium. It is targeted at technical users and software developers.

Downloads

The downloads page provides links and resources to support the application of AddressBase Premium within your environment.

Representation of AddressBase Premium data showing addressing information for properties highlighted against a background map
Cover
Cover
Cover
Cover
Cover

Feature with lifecycle

This feature holds the lifecycle information about the whole feature.

Feature type attributes

The following page provides details about the attributes included with this feature, their data types in the different output formats, and other important metadata about them.

Change time

Type of record change – please see for more information.

  • Attribute Name: changeType (GML), Not provided (CSV), Not provided (GPKG)

  • Code List Name:

  • Multiplicity: [1]

Start date

Date on which the record was first loaded into the database.

  • Attribute Name: startDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the record ceased to exist.

  • Attribute Name: endDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed in the product database.

  • Attribute Name: endDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Entry date

The date on which the record was entered into the Local Authority database.

  • Attribute Name: entryDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

AddressBase Premium Technical Specification

This technical specification provides detailed technical information about AddressBase Premium. It is targeted at technical users and software developers.

AddressBase Premium provides the most detailed view of an address and its life cycle for England, Wales and Scotland. It has more records than as it provides all information relating to an address or property from its creation to retirement.

The product contains Local Authority, Ordnance Survey and Royal Mail addresses. This includes alternative addresses for current records where available, indicating variations on the official addresses; and provisional addresses (proposed planning developments), and historic information (no longer existing, for example demolished properties) where available. OWPA (Objects Without a Postal Address) and cross references to VOA (Valuation Office Agency) data and products such as OS MasterMap Topography Layer are also included.

This technical specification includes the following sections:

COU supply
ChangeTypeCode

Supply and update

The primary supply mechanism of AddressBase Premium data is referred to as non-geographic chunks. This is a way of dividing up the data into chunks that are supplied in separate volumes, which have a fixed maximum amount of records. The supply is not supplied with any reference to the geographic position of records.

Public Sector Geospatial Agreement (PSGA) customers are able to order geographic chunks (5km tiles) as well as non-geographic chunks, although geographic chunks are not considered the main form of supply.

All customers are also able to take a complete supply (referred to as a Managed Great Britain Set: MGBS) or an area of interest (AOI) as a full supply or change-only update (COU) supply.

Non-geographic chunks (unzipped)

The filename for non-geographic chunks is constructed as follows:

  • ProductName_supply_ccyy-mm-dd_vvv.format:

    • ProductName: AddressBasePremium

    • supply: FULL or COU

    • ccyy-mm-dd: the date the file was generated

    • vvv: the volume number of the file

    • format: the format of the files, for example, csv, gmlor gpkg

For example:

  • AddressBasePremium_FULL_2013-05-28_001.gml (GML full supply)

  • AddressBasePremium_FULL_2013-05-28_001.gpkg (GeoPackage full supply)

  • AddressBasePremium_COU_2013-05-28_001.csv (CSV COU supply)

A file size limit might be imposed by the file system to which the file is written.

Non-geographic chunks (zipped)

If the data has been provided in a ZIP file, the filename is constructed as follows:

  • productName_supply_ccyy-mm-dd_vvv_format.zip

For example:

  • AddressBasePremium_FULL_2013-05-28_001_gml.zip (GML full supply zipped)

Geographic chunks (unzipped)

If you receive your data as geographic chunks (PSGA customers only), the filename for geographic chunks (PSGA customers only) is constructed as follows:

  • ngxxyy.format

    • ngxxyy: The four-digit grid reference belonging to the 1 km south-west corner of the 5 km chunk.

    • format: The format of the files received, for example, csv or gml.

For example:

  • NC4040.gml (GML geographic supply)

  • NC4040.csv (CSV geographic supply)

When you receive your geo-chunked download data for GPKG, you will see a single folder on opening the data.

For example:

  • AddressBasePremium_FULL_2013-05-28_001_gpkg (GPKG full supply)

Geographic chunks (zipped)

If the data has been provided in a ZIP file, the following file naming convention will be used for CSV and GML:

  • ngxxyy.zip

For example:

  • NC4040.zip (geographic supply zipped)

For GeoPackage supply, you will see a single zipped folder on downloading the data. For example:

  • AddressBasePremium_FULL_2013-05-28_001_gpkg.zip (GeoPackage full supply)

COU supply

AddressBase Premium is available as a change-only update (COU) supply for CSV and GML formats. COU supplies are not available for GPKG format.

A COU supply of data contains records or files that have changed between product refresh cycles. The primary benefit in supplying data in this way is that data volumes are smaller, reducing the amount of data that requires processing when compared to a full supply.

COU data enables a user to identify three types of change:

  1. Deletes (CHANGE_TYPE ‘D’) are objects that have ceased to exist in your areas of interest (AOI) since the last product refresh.

  2. Inserts (CHANGE_TYPE ‘I’) are objects that have been newly inserted into your AOI since the last product refresh.

  3. Updates (CHANGE_TYPE ‘U’) are objects that have been updated in your AOI since the last product refresh.

Non-geographic chunked COU

A COU file for non-geographic chunked data can be identified by its naming convention as highlighted above. Any change record will be provided as a full record with the appropriate change type, as listed above.

Geographic chunked COU (tile-based)

A geographic chunked COU is not supplied as per the non-geographic chunked COU outlined above. Its file naming convention can be found above. If a single record has changed within a specified 5km tile, the entire 5km tile containing all features will be supplied. This means the user will need to remove all features that previously existed in the provided tile(s) and insert the entire new tile(s) in its place.

Archiving

When users are deleting, inserting or updating features, it is up to the user to consider their archiving requirements. If deleted records are important to your business requirements, you must take appropriate action to archive previous records.

Dataset metadata

The pages in this section define dataset metadata for the CSV format of AddressBase Premium product.

AddressBase Premium dataset metadata

  • Metadata – (Type 29 Record)

  • Header – (Type 10 Record)

  • Trailer – (Type 99 record)

Trailer – (Type 99 record)

A structured entry which terminates the file. This includes information on the record counts, and next volume number.

A Trailer record is not provided in GML or GPKG

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

Record identifier

Identifies the record as a Trailer Record (type 99).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Record identifier

The sequential number of the next volume in the transfer set. For geographic supply this will always be zero (0). For non-geographic supply zero (0) will denote the last file in the transfer set.

  • Attribute Name: Not provided (GML), NEXT_VOLUME_NAME (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [1]

Record identifier

The sequential number of the next volume in the transfer set. For geographic supply this will always be zero (0). For non-geographic supply zero (0) will denote the last file in the transfer set.

  • Attribute Name: Not provided (GML), NEXT_VOLUME_NAME (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [1]

Record count

Count of the number of records in the volume (excluding the header record, metadata and trailer records).

  • Attribute Name: Not provided (GML), RECORD_COUNT (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

Entry date

The date of data entry.

  • Attribute Name: Not provided (GML), ENTRY_DATE (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Time stamp

Time of creation in HH:MM:SS format.

  • Attribute Name: Not provided (GML), TIME_STAMP (CSV), Not provided (GPKG)

  • Data Type: Time

  • Multiplicity: [1]

AddressBase Plus
Data formats
Supply and update
AddressBase Premium structure
Feature types
Structured data types
Dataset metadata
Attribute format comparison
Example records

Code lists and enumerations

A code list or enumeration is a controlled set of values which can be used to populate a specific column. The diagram below shows the code list and enumeration UML models associated with AddressBase Premium with their appropriate descriptions:

The code list and enumeration UML models associated with AddressBase Premium.

AddressBase Premium code lists and enumerations

  • CountryCode

  • AddressBasePostalCode

  • BLPUStateCode

  • ChangeTypeCode

  • LanguageCode

  • LogicalStatusCode

  • OfficalFlagCode

  • StreetRecordTypeCode

  • RPCCode

  • USRNMatchIndicatorCode

  • StreetStateCode

  • StreetClassificationCode

  • StreetSurfaceCode

  • FileTypeCode

  • PostcodeTypeCode

AddressBase Premium Known Data Issues, Service Disruptions and Planned Maintenance

This page provides the details of known data issues and service disruptions impacting the AddressBase Premium product.

Live known data issues

There are no live known data issues for AddressBase Premium at this time.

Service disruption

There are no live service disruptions affecting AddressBase Premium at this time.

Planned maintenance

No maintenance events are currently scheduled that will impact the availability of AddressBase Premium.

Data formats

The AddressBase Premium product is distributed as comma-separated value (CSV), Geography Markup Language (GML) version 3.2.1 or GeoPackage (GPKG) formats. The CSV and GML formats can be supplied as a full supply or a change-only update (COU); the GPKG format is available as a full supply only.

CSV

The CSV supply of AddressBase Premium means:

  • There will be one record per line in each file.

  • Fields will be separated by commas.

  • String fields will be delimited by double quotes.

  • No comma will be placed at the end of each row in the file.

  • Records will be terminated by Carriage Return / Line Feed.

  • Double quotes inside strings will be escaped by doubling.

Where a field has no value in a record, two commas will be placed together in the record (one for the end of the previous field and one for the end of the null field). Where the null field is a text field double quotes will be included between the two commas, for example - , “”,

AddressBase Premium CSV data will be transferred using Unicode encoded in UTF-8. Unicode includes all the characters in ISO-8859-14 (Welsh characters). Some accented characters are encoded differently.

The transfer will normally be in a single file, but the data can be split into multiple files using volume numbers. AddressBase Premium records are provided within continuous files cut at approximately 1 million lines as referred to above.

Street and Street Descriptor records are provided together and then a new file is started independent of count for the additional record types.

This means different record types, for example, BLPU and LPIs (see ) can be found in the same CSV file.

The record types are provided in the following order:

  • Street (Type 11)

  • Street Descriptor (Type 15) – a new file is started after the last Street Descriptor record for your supply is reached

  • BLPU (Type 21)

  • LPI (Type 24)

  • Delivery Point Address (Type 28)

  • Organisation (Type 31)

  • Classification (Type 32)

  • Application Cross Reference (Type 23)

GML

The GML Encoding standard is an Extensible Markup Language (XML) grammar for expressing geographical features. XML schemas are used to define and validate the format and content of GML. The XML specifications that GML is based on are available from the World Wide Web Consortium (W3C) website: More information can be found in the .

The GML 3.2.1 specification provides a set of schemas that define the GML feature constructs and geometric types. These are designed to be used as a basis for building application-specific schemas, which define the data content.

A GML document is described using an XML schema. The (addressbasepremium.xml) defines the features in AddressBase Premium GML and is available on the Ordnance Survey website at: . It imports the GML 3.2.1 schemas which rely on XML, as defined by W3C at:

The application schema uses the following XML namespaces:

Prefix
Namespace Identifier
Definition Available at

Information about Unicode and UTF-8, the character encoding we have chosen, is available on the .

Features

Each feature within the AddressBaseSupplySet:FeatureCollection is encapsulated in the following member element according to its feature type:

BLPU

  • Feature Type: BasicLandPropertyUnit

  • Member Element: <abpr:basicLandPropertyUnitMember>

The UPRN of the feature is provided in the XML attribute of the gml:id

Street

  • Feature Type: Street

  • Member Element: <abpr:streetMember>

The USRN of the feature is provided in the XML attribute of the gml:id

See for specific GML examples.

Envelope

In the GML supply, you can determine the extent of your supply by the <gml: Envelope>. For example:

GPKG

GPKG is an open, standards-based data format as defined by the Open Geospatial Consortium (OGC). It is designed to be a lightweight format that can contain large amounts of varied and complex data in a single, easy to distribute and ready to use file. Please be advised that older versions of GIS software may need updating before being able to display and interact with GPKG files.

GPKG offers the following benefits:

  • The single file is easy to transfer and offers the end-user a rich experience.

  • Attribute names are not limited in length, making it user friendly.

  • The file size limit is very large at 140 TB1, so lots of data can be easily accommodated.

  • It supports raster, vector and database formats, making it a highly versatile solution.

  • It is an OGC Standard.

  • In most cases, it is a plug-in-and-play format.

AddressBase Premium structure

AddressBase Premium is structured as a series of relational tables. The data structure is described by means of unified modeling language (UML) class diagrams and accompanying tables containing text.

The AddressBase Premium product is constructed as per the following UML diagrams on this page.

Model overview for CSV and GeoPackage

This diagram shows the relationships between each of the record types and their foreign keys.

A UML model of AddressBase Premium in CSV and GPKG formats can be seen in the diagram below. In the UML diagram, feature types from the Ordnance Survey product specification are orange and data types are purple.

record_identifier and pro_order are not included in GPKG format.

Model overview for GML

The diagram below shows a high-level data model representing the GML AddressBase Premium data model. This diagram shows the relationships between each of the record types and their foreign keys.

The diagram below is a UML model of AddressBase Premium in GML format; feature types from the Ordnance Survey product specification are orange and data types are purple.

Table Descriptions

Street – record identifier 11

  • Definition: A way or thoroughfare providing a right of way on foot, by cycle or by motor vehicle, or access to more than one property.

  • Description: This record assigns a Unique Street Reference Number (USRN) to each street and holds the start and end coordinates of the street feature with information about surface type and classification.

Street Descriptor – record identifier 15

  • Definition: A descriptive identifier providing additional information about the street feature.

  • Description: This record holds information about locality, town name and street name.

Basic Land and Property Unit (BLPU) – record identifier 21

  • Definition: A BLPU is defined as a real-world object that is an ‘area of land, property or structure of fixed location having uniform occupation, ownership or function’.

  • Description: A real-world object that is of interest and within scope of the CLASS_SCHEME.

Application Cross Reference – record identifier 23

  • Definition: Application cross reference links to third-party identifiers.

  • Description: AddressBase Premium application cross references contain a lookup between the AddressBase Premium UPRN and the unique identifiers of other relevant datasets.

Land and Property Identifier (LPI) – record identifier 24

  • Definition: An LPI is a structured entry that identifies a BLPU.

  • Description: A simple identifier or description for the object. The richness of the data structure within AddressBase Premium provides the facility to describe a BLPU by more than one LPI.

Delivery Point Address – record identifier 28

  • Definition: A Delivery Point Address is defined as a property that receives deliveries from Royal Mail.

  • Description: The structure of this address is taken from Royal Mail Postcode Address File (PAF) and other supplementary data files.

Successor Record – record identifier 30

  • Definition: This record holds references to a UPRN and to any replacement UPRN, for example, if a building is split into two sub-buildings; the sub-building UPRNs will be referenced in the successor record.

  • Description: This record holds information about a UPRN and the UPRNs of the records that succeed that record.

Organisation – record identifier 31

  • Definition: A structured entry identifying the name of the current non-domestic occupier of the BLPU.

  • Description: This record holds information about the organisation of the record.

Classification – record identifier 32

  • Definition: A structured entry that provides the code for the type of BLPU and the classification scheme from which the code is taken.

  • Description: This record holds the classification of a property and allows one to search upon the use of a feature.

Table descriptions - CSV only

The following are contained within CSV only:

Header – record identifier 10

  • Definition: A structured entry that provides key information about the source, time and supply mechanism of the AddressBase Premium file.

Metadata – record identifier 29

  • Definition: A structured entry providing metadata information such as the gazetteer owner, scope and character sets.

Trailer – record identifier 99

  • Definition: A structured entry which terminates the file. This includes information on the record counts, and next volume number.

Table descriptions - GML only

The following are contained within GML only:

EntityWithLifeCycle

  • Definition: This feature holds the lifecycle information about the data type record.

FeatureWithLifeCycle

  • Definition: This feature holds the lifecycle information about the whole feature.

AddressBaseSupplySet

  • Definition: This feature is formally known as the GML feature collection and is used to define a collection of features.

CSV

Header

Street

Street Descriptor

Basic Land and Property Unit (BLPU)

Application Cross Reference

Land Property Identifier (LPI)

Delivery Point Address

Metadata

Successor

Organisation

Classification

Trailer

AddressBase Premium Downloads

Classification scheme

The product classification scheme is available to download as a zip file (in CSV and .xlsx formats) from the in the AddressBase Fundamentals section.

Header files

The header files for AddressBase Premium are available for download (as CSV files) from the following zip file:

Local custodian codes

Local custodian codes for the product are available to download as a zip file (in CSV format) from the in the AddressBase Fundamentals section.

Example records

The following pages provide example records for both the CSV and GML supplies.

The examples should not to be considered as accurate data. They are provided for demonstration purposes only.

AddressBase Premium example records

This product is available to try out free online using one of our three sets of sample data (Exeter, Newport and Inverness) through the OS MasterMap Product Viewer:

10,"GeoPlace",9999,2011-07-08,1,2011-07-08,16:00:30,"2.0","F"
11,"I",1456,5801201,1,6815,2,1990-01-01,1,8,0,2004-09-09,,2007-08-14,2004-09-
09,316433.00,176987.00,51.545587,-3.5441274,316278.00,1777294.00,51.1124512,-3.2254874,20
15,"I",8332,5801201,"LLANDAFF ROAD","PONTCANNA","CARDIFF","CARDIFF","ENG",2005-09-
09,,2006-11-12,2005-09-09
21,"I",181859,100100077917,1,,,,316348.00,177163.00,50.7268511,-3.5366289,1,6815,"E",2001-05-10,,2007-08-29,2001-05-10,"D","CF11 9PX",0
23,"I",461696,100100077917,"6815X800076448","214788192",0,"7666VC",2001-05-10,,2007-08-29,2001-05-10
24,"I",1082431,100100077917,"6815L000701604","ENG",1,2001-05-10,,2001-05-15,2001-05-10,,"",,"","",166,"",,"","",5801201,"1","","",""
28,"I",1451545,100100077917,4201646,"","","","",166,"","LLANDAFF ROAD","","","CARDIFF","CF11 9PX","S","2F","","LLANDAFF ROAD","","","CAERDYDD","",2011-07-19,2001-05-10,,2007-08-29,2001-05-10
29,"AddressBase Premium","BLPUs, Delivery Points, Streets and associated Information","England, Wales and Scotland"," ADDRESS LAYER 2, NLPG, PAF, VOA Council Tax and Non Domestic Rates, CODEPOINT polygons”, "GeoPlace","S","GeoPlace",10033528687,9999,"British National Grid","Metres",2011-09-09,"AddressBase Premium Classification Scheme",2011-09-09,"BIL"," UTF-8"
30,"I",12345,100100077917,"9078S000000001",2006-10-10,2007-11-15,2007-11-15,2006-10-10,122000001
31,"I",13581,100100077917,"6815O000015664","EXAMPLE ORGANISATION NAME","",2003-07-28,,2010-07-10,2003-07-28
 32,"I",181860,100100077917,"6815C000076448","R","AddressBase Premium Classification Scheme”,1.0,2001-05-10,,2007-08-29,2001-05-10
99,0,1269403,2011-07-08,16:00:30

gml

http://www.opengis.net/gml

http://schemas.opengis.net/gml/3.2.1/gml.xsd

xsi

http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema-instance

Built into XML – http://www.w3.org/TR/xmlschema-1/

xlink

Xlink – http://www.w3.org/1999/xlink

http://www.w3.org/1999/xlink.xsd

<abpr: basicLandPropertyUnitMember>
<abpr: BasicLandPropertyUnit gml:id=”uk.geoplace.uprn.1000011535314”>
......
</abpr:BasicLandPropertyUnit>
</abpr: basicLandPropertyUnitMember>
<abpr: streetMember>
<abpr:Street gml:id=”uk.geoplace.usrn.14200295”>
......
</abpr:Street>
</abpr: streetMember>
<gml:boundedBy>
<gml:Envelope srsName=”urn:ogc:def:crs:EPSG::27700”>
<gml:lowerCorner>82643.6 5333.6</gml:lowerCorner>
<gml:upperCorner>655989 657599.5</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
AddressBase Premium structure
http://www.w3.org.
Open Geospatial Consortium (OGC) document,
Geography Markup Language v3.2.1
AddressBase Premium schema document
https://www.ordnancesurvey.co.uk/xml/products/AddressBasePremium.xml
http://www.w3.org/XML/1998/namespace.html.
Unicode Consortium website
Example records > GML supply
classification scheme page
5KB
addressbase-premium-header-files.zip
archive
Open
AddressBase local custodian codes page
CSV
GML
UML model overview diagram of AddressBase Premium for CSV and GPKG
UML model overview diagram of AddressBase Premium for CSV and GPKG
UML model showing AddressBase Premium feature types and data types
UML model showing AddressBase Premium feature types and data types
UML model overview diagram of AddressBase Premium for GML
UML model overview diagram of AddressBase Premium for GML
UML model showing AddressBase Premium feature types, enumerations and code lists for the GML supply
UML model showing AddressBase Premium feature types, enumerations and code lists for the GML supply
The code list and enumeration UML models associated with AddressBase Premium

Street Descriptor – (Type 15 Record)

A descriptive identifier providing additional information about the street feature. This record holds information about locality, town name and street name.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as a Street Descriptor record (type 15).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

USRN

Unique Street Reference Number (USRN): used as foreign key to reference the corresponding street record.

  • Attribute Name: usrn (GML), USRN (CSV), usrn (GPKG)

  • Data Type: Integer

  • Size: 8

  • Multiplicity: [1]

Street description

Name, description or Street number for this record.

  • Attribute Name: streetDescription (GML), STREET_DESCRIPTION (CSV), street_description (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 100

  • Multiplicity: [1]

Locality

A locality defines an area or geographical identifier within a town, village or hamlet. Locality represents the lower-level geographical area. The locality field should be used in conjunction with the town name and street description fields to uniquely identify geographic area where there may be more than one within an administrative area.

  • Attribute Name: locality (GML), LOCALITY (CSV), locality (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 35

  • Multiplicity: [0..1]

Town name

The town name.

  • Attribute Name: townName (GML), TOWN_NAME (CSV), town_name (GPKG)

  • Condition: Town name must be present if the Street Record Type is 1 or 2 and may be entered for type 3, 4 and 9 Streets.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [0..1]

Administrative area

Local Highway Authority name for the area this record exists within.

  • Attribute Name: administrativeArea (GML), ADMINSTRATIVE_AREA (CSV), administrative_area (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [1]

Language

A code identifying the language in use for the record.

For GML language qualifiers are provided in the parent element as ‘xml:lang’

  • Attribute Name: Not provided (GML), LANGUAGE (CSV), language (GPKG)

  • Code List Name: LanguageCode

  • Size: 3

  • Multiplicity: [1]

Start date

Date this record was first created in the database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which this record ceased to exist.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which an attribute on this record was last changed.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the record was entered into the Local Authority database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entity with lifecycle

This feature holds the lifecycle information about the data type record.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

Start date

Date on which the record was first loaded into the database.

  • Attribute Name: startDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the record ceased to exist.

  • Attribute Name: endDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: lastUpdateDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Entry date

The date on which the record was entered into the Local Authority database.

  • Attribute Name: entryDate (GML), Not provided (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Header – (Type 10 Record)

A structured entry that provides key information about the source, time and supply mechanism of the AddressBase Premium file.

A Header record is not provided in GML or GPKG

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

Record identifier

Identifies the record as a Header Record (type 10).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Custodian name

Name of the data provider organisation.

  • Attribute Name: Not provided (GML), CUSTODIAN_NAME (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 40

  • Multiplicity: [1]

Local custodian code

Unique identifier for the data provider code.

  • Attribute Name: Not provided (GML), LOCAL_CUSTODIAN_CODE (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [1]

Process date

The date on which the data supply was generated.

  • Attribute Name: Not provided (GML), PROCESS_DATE (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Volume number

The sequential number of the volume in the transfer set.

For Geographic supplies, this number will always be zero ‘0’.

  • Attribute Name: Not provided (GML), VOLUME_NUMBER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [1]

Entry date

Date of data entry for this volume.

  • Attribute Name: Not provided (GML), ENTRY_DATE (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Time stamp

Time of file creation in HH:MM:SS format in a 24-hour clock.

  • Attribute Name: Not provided (GML), TIME_STAMP (CSV), Not provided (GPKG)

  • Data Type: Time

  • Multiplicity: [1]

Version

The version number relates to the product schema and not this technical specification.

Version number of the product schema, for example, 1.0, 2.0.

  • Attribute Name: Not provided (GML), VERSION (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 7

  • Multiplicity: [1]

File type

States whether the data supply is a full supply or change only supply.

  • Attribute Name: Not provided (GML), FILE_TYPE (CSV), Not provided (GPKG)

  • Code List Name: FileTypeCode

  • Size: 1

  • Multiplicity: [1]

Cover

OS MasterMap Product Viewer

Interactive demonstrator of OS MasterMap Generation data

Working with GPKG data

Accessing GPKG data via GIS software

This section provides step-by-step instructions on how to access the GPKG format of AddressBase Premium products via commonly used GIS software, including ArcGIS Pro, ArcGIS Desktop, and QGIS.

GPKG (.gpkg) is an open, non-proprietary, platform-independent and standards-based data format for geographic information systems (GIS), as defined by the Open Geospatial Consortium (OGC). It is designed to be a lightweight format that can contain large amounts of varied and complex data in a single, easy to distribute and ready to use file. GPKG is natively supported by numerous software applications.

The relational nature of AddressBase Premium has meant that loading GPKG into certain GIS is not possible at the time of this document's release.

ArcGIS Pro

The following instructions are based on ArcGIS Pro version 2.7.1. It is recommended that you have a basic understanding of ArcGIS Pro tools and terminology before following these instructions. Note: Certain versions of ArcPro (for example, version 2.5) require GeoPackages to have a spatial index added before the data can be viewed on the map. This can be done in the Catalog by opening the Feature Class Properties window within the 'Indexes' page. \

Note: The file must have the file extension .gpkg (not case sensitive) to recognise it as an OGC GPKG. Make sure the AddressBase Premium GeoPackage is stored in a suitable location and the file is unzipped.

  1. Launch ArcGIS Pro.

  2. To establish a connection to the folder where the GPKG file is stored, navigate to the Insert tab and click Add Folder. Find and select the folder, then click OK.\

  3. Navigate to the View tab and open the Catalog Pane. In the pane that appears, find the now-connected folder where the GPKG is stored, then expand the GPKG to show the available layers.\

  4. Right-click the main.blpu features class and click Add To Current Map (or Add To New if a map frame has not yet been created for this project). Repeat this step for all of the layers in the GPKG.\

  5. Note that the other tables can be added to the map frame, but they will only act as standalone tables as they have no spatial element to visualise. The BLPU and Streets tables will be visible in the current Map view as they contain geometry. Once all of the tables have been added to the map frame, it should look similar to the following screenshot:\

  6. These standalone tables can be related to the spatial tables in order to give them a spatial component. The following relates are required:

    • BLPU (ID21_BLPU_Records):

      • UPRN – Application Cross Reference (ID23_XREF_Records) UPRN

      • UPRN – LPI (ID24_LPI_Records) UPRN

      • UPRN – Delivery Point Address (ID28_DPA_Records) UPRN

      • UPRN – Organisation (ID31_Org_Records) UPRN

      • UPRN – Classification (ID32_Class_Records) UPRN

    • LPI (ID24_LPI_Records):

      • USRN – Street (ID11_Street_Records) USRN

    • Street (ID11_Street_Records):

      • USRN – Street Descriptor (ID15_StreetDesc_Records) USRN

  7. To perform a relate, right-click on the main.blpu feature class, then click Joins and Relates > Add Relate.\

  8. In the Add Relate dialog box, change the parameters as below:

    • Layer Name or Table View: The table the relate is being added to (for example, main.blpu).

    • Relate Table: The table the relate is being taken from (for example, main.application.xref).

    • Input Relate Field and Output Relate Field: The field to relate the two tables on (for example, uprn).

    • Relate Name: Something simple that reflects the tables being related (for example, blpu to application_xref).\

  9. Once the parameters are set, click OK.

  10. Repeat steps 7, 8 and 9 for all the relates listed in step 6. You may wish to confirm the relates have been successful by right-clicking on a layer and navigating to Properties > Relates.\

  11. Once the data has been loaded into ArcGIS, you may wish to display more relevant information in the Explore tool than the Esri-defined Object ID. To change this, use the following instructions:

    • Click on the layer that you wish to change the label field of.

    • Select the Labeling tab (under Feature Layer).

    • Change the Field to the desired field (for example, UPRN).\

ArcGIS Desktop

Note - The following instructions are based on ArcGIS Desktop version 10.

Note: The file must have the file extension .gpkg (not case sensitive) to recognise it as an OGC GPKG. Make sure the AddressBase Premium GeoPackage is stored in a suitable location and the file is unzipped.

  1. Start ArcCatalog as a separate program, or within ArcMap if you are using version 10.

  2. To establish a connection to the folder where the GPKG file is stored, right-click on Folder Connections > Connect To Folder, then navigate to the folder containing the data. Select that folder and click OK.\

  3. Navigate to the newly connected folder where the GPKG is stored. Open the GPKG to view its contents.

  4. Drag the data with spatial elements (that is, main.street and main.blpu, which are designated by the point symbol) into the Map view. From here, they can be visualised.\

  5. Add the standalone tables to the map. The tables have no spatial element so cannot be visualised, but they can be related to the data with a spatial element. Select the standalone tables and drag them into the Map view. When prompted, select ID as the Unique Identifier Field(s) before clicking Finish. &#xNAN;Note - The ‘Toggle Contents Panel’ can be used to open a window where you can select multiple tables at once.\

  6. You need to create the following joins/relates between the tables, as stated in in the .

    • BLPU (ID21_BLPU_Records):

      • UPRN – Application Cross Reference (ID23_XREF_Records) UPRN

      • UPRN – LPI (ID24_LPI_Records) UPRN

      • UPRN – Delivery Point Address (ID28_DPA_Records) UPRN

      • UPRN – Organisation (ID31_Org_Records) UPRN

      • UPRN – Classification (ID32_Class_Records) UPRN

    • LPI (ID24_LPI_Records):

      • USRN – Street (ID11_Street_Records) USRN

    • Street (ID11_Street_Records):

      • USRN – Street Descriptor (ID15_StreetDesc_Records) USRN

  7. To create the joins / relates between tables, select the Source button in the left-hand navigation window and right-click on the first table that you wish to relate to another. To create the relevant relates, use the following instructions:

    • Click Joins and Relates > Relate...\

    • From the first dropdown menu, select the attribute from the first table that will be used to create the relate between the two tables. (Apply the relationships as listed in step 5.)

    • From the second dropdown, select the table that is going to be related to. (Apply the relationships as listed in step 5.)

    • From the third dropdown, select the attribute from the table that is being related to. (Apply the relationships as listed in step 5.)

    • In the fourth box, input a relevant name for the relate (for example, BLPU_to_LPI).\

    • Click OK.

    • Repeat this process for all of the joins / relates listed in step 5.

  8. Once the data has been loaded into ArcMap, you may wish to display more relevant information in the Info tool than the Esri-defined Object ID. To change this, use the following instructions:

    • Double-click on the spatial dataset that you wish to change the Display Expression of.

    • Select the Display tab.

    • Change the Field to the desired field (for example, UPRN).

    • Click OK.\

QGIS

Note - These instructions were created using QGIS version 3.14. Other versions of QGIS can be used, from version 2.10.1 onward.

  1. Launch QGIS.

  2. Navigate to the GPKG location in the QGIS Browser panel. If the GPKG is not listed when this container is expanded, then right-click on the GeoPackage location and select New Connection.

  3. In the File Explorer window that launches, navigate to the location where you saved the AddressBase Premium GPKG and select it.

  4. In the QGIS Browser panel, click on the drop-down arrow next to your AddressBase Premium GPKG to view the contents of the GPKG file. Drag the data with spatial elements (i.e. main.street and main.blpu, which are designated by the point symbol) into the map. From here, they can be visualised.\

  5. Next, add the standalone tables to the map. These tables have no spatial element so cannot be visualised, but they can be related to the data with a spatial element.

  6. You need to create the following joins/relates between the tables, as stated in in in the

    • BLPU (ID21_BLPU_Records):

      • UPRN – Application Cross Reference (ID23_XREF_Records) UPRN

      • UPRN – LPI (ID24_LPI_Records) UPRN

      • UPRN – Delivery Point Address (ID28_DPA_Records) UPRN

      • UPRN – Organisation (ID31_Org_Records) UPRN

      • UPRN – Classification (ID32_Class_Records) UPRN

    • LPI (ID24_LPI_Records):

      • USRN – Street (ID11_Street_Records) USRN

    • Street (ID11_Street_Records):

      • USRN – Street Descriptor (ID15_StreetDesc_Records) USRN

  7. To create the joins / relates between the tables, right-click on your BLPU layer and select Properties...\

  8. Go to the Joins tab found on the left-hand side.

  9. Click the green plus button in the bottom left-hand corner.

  10. Select your Join layer. For this example, it is Application Cross reference (application_xref).

  11. Select the Join field. For all BLPU links, this will be the UPRN (see the joins listed in step 4 above).

  12. The Target field will also be the UPRN for this example.\

  13. Click OK. You should now have a join listed in your Joins window.\

  14. Click OK to return to your main QGIS mapping screen.

  15. If you now select one of your BLPU records in the main mapping window, you will see the BLPU attributes and the relevant Application Cross References for that record. \

  16. You can now repeat steps 7 to 14 for all the additional joins (listed in step 6) you wish to make.

Loading GPKG into a database

The following sub-section provides step-by-step instructions on how to load the AddressBase Premium GPKG into PostgreSQL using GDAL / Command Prompt.

PostgreSQL using GDAL

Note - The following step-by-step instructions are based on PostgreSQL version 12.3 and assume that you have set-up your database with the PostGIS spatial extension.

Requirements:

  • A development platform for PostgreSQL (for example, pgAdmin or dBeaver)

  • A PostgreSQL database

  • PostGIS extension

  • GDAL extension

  • Access to a Command Prompt or similar

  • A basic understanding of database terminology

Instructions

Note - Make sure the AddressBase Premium GPKG is stored in a suitable location and the file is unzipped.

  1. Open Command Prompt by clicking the Windows Start button in the bottom left-hand side of the screen and typing cmd into the search bar.\

  2. The Command Prompt will appear.

  3. Change the directory of the Command Prompt App if necessary. The directory needs to point to the folder where the GPKG is stored. For this example, the GPKG to be loaded into PostgreSQL is stored in a C:\Temp folder.

  4. In the Command Prompt, type cd followed by the directory of the location of the GPKG. Press Enter on the keyboard. This will change the directory.\

  5. Enter the following command:\

    {% code overflow="wrap" %}

    {% endcode %}

    Where: <username>, <password>, <database> and <host> can be found within the subsequent database. <data_name> is the AddressBase Premium GPKG file, for example, AddressBasePremium_AOI_2021-04-12_001_gpkg.gpkg. Example:\

    {% code overflow="wrap" %}

    {% endcode %}6. Open your chosen development platform (for example, dBeaver) by going to the Windows Start button and selecting your chosen software.

  6. In your Database Navigator, move to the database you loaded data into and expand the schema. Using the code above, the GPKG should be in your default schema.

  7. The GPKG will now appear as new tables / a new table in the schema nominated as default.

  8. Once loaded, you may want to add Primary and Foreign Keys to the data. These can only be added on columns where the data values are unique. Where there are no unique data values, an index may be added which will aid searching. For the BLPU table, the UPRN provides a unique value.

Working with GML data

Loading GML

This section provides step-by-step instructions on how to load the Geography Markup Language (GML) format of AddressBase Premium products into FME and a database.

GML is an XML dialect which can be used to model geographic features. It was designed by the Open Geospatial Consortium (OGC) as a means for people to share information regardless of the applications or technology that they use.

In the first instance, GML was used to overcome the differences between different GIS applications by providing a neutral file format as an alternative to proprietary formats. Because it is independent of applications, it can also be moved between databases or other types of application, which allows a wider application than just GIS data transfer.

Loading GML via a translator

Several organisations provide a loader which will translate AddressBase Premium from GML and insert the data into a database or a GIS. Due to the relational nature of AddressBase Premium, GML will not load straight into most GIS applications, meaning an external translator would be helpful to most users. If you would like to load AddressBase Premium in GML format into a GIS, please contact your vendor for more details.

For more information on Ordnance Survey Partners who provide GML loaders, please visit the .

FME

GML data can be viewed and loaded into Safe FME. When AddressBase Premium is read into FME, the non-spatial tables within the product are automatically related to the spatial tables.

Note: The following instructions use FME version 2020.0, but should work in most versions.

  1. Open FME Workbench.

  2. Click the Reader button in the ribbon.

  3. An Add Reader dialog box will appear.

  4. Select GML (Geography Markup Language) as the Format.

  5. Select a coordinate reference system from the Coord. System dropdown list. It’s recommended that British National Grid (EPSG:27700) is selected as the coordinate reference system; however, you can select a different coordinate reference system if required.

  6. Click the three dots button next to the Dataset box. This will bring up another dialog box where you can select the GML dataset to read into FME.

  7. Click OK and OK again.

  8. A Select Feature Types dialog box will appear in which you can select what feature types should be read into FME. The BasicLandPropertyUnit and Street feature types also include the non-spatial table information, such as LPI and organisation.

  9. Click OK.

  10. The three feature types should appear as readers.

is available on the Safe Software website.

PostgreSQL using GDAL

Note - The following instructions are based on PostgreSQL version 12.3 and assume that you have set-up your database with the PostGIS spatial extension in a Windows environment.

Requirements:

  • A development platform for PostgreSQL (for example, pgAdmin or dBeaver)

  • A PostgreSQL database

  • PostGIS extension

  • GDAL extension

  • Access to a Command Prompt or similar

  • A basic understanding of database terminology

Instructions

Note - Before you start, make sure the AddressBase Premium GML is stored in a suitable location and the file is unzipped.

  1. Open the Command Prompt by clicking the Windows Start button in the bottom left-hand side of the screen and typing cmd into the search bar.

  2. The Command Prompt will appear.

  3. Change the directory of the Command Prompt App if necessary. The directory needs to point to the folder where the GML is stored. For this example, the GML to be loaded into PostgreSQL is stored in a C:\Temp folder.

  4. In the Command Prompt, type cd followed by the directory of the location of the GML. Press Enter on the keyboard. This will change the directory.

  5. Enter the following command:

    Where: <host>, <port>, <database>, <username> and <password> can be found within the subsequent database. <data_name.gml> is the AddressBase Premium GML file, for example, AddressBasePremium_AOI_2021-04- 12_001_gml.gml. <CRS> is the coordinate reference system. British National Grid (27700) is recommended but you can use alternative coordinate reference systems if required. Example:

  6. Open your chosen development platform by going to the Windows Start button and selecting your chosen software.

  7. In your Database Navigator, move to the database you loaded data into and expand the schema.

  8. From using the code above, the GML files should be in your default schema (shown in bold). The data should load into two tables: basiclandpropertyunit and street. Data in non-spatial tables will automatically be matched to the spatial tables based on a unique identifier.

  9. Once loaded, you may want to add Primary and Foreign Keys to the data. These can only be added on columns where the data values are unique. Where there are no unique data values, an index may be added which will aid searching. For the BLPU table, the UPRN provides a unique value.

Note - You can also manage your database using the PostGRES SQL Command Prompt.

Organisation – (Type 31 Record)

A structured entry identifying the name of the current non-domestic occupier of the BLPU. This record holds information about the organisation of the record.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this as an Organisation Record (type 31).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the LPI to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Org key

Unique key for the organisation record and primary key for this table.

  • Attribute Name: orgKey (GML), ORG_KEY (CSV), org_key (GPKG)

  • Data Type: CharacterString (GML), char (CSV),

    String (GPKG)

  • Size: 14

  • Multiplicity: [1]

Organisation

Name of the organisation currently occupying the address record as provided by the local authority custodian.

  • Attribute Name: organisation (GML), ORGANISATION (CSV), organisation (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 100

  • Multiplicity: [1]

Legal name

Registered legal name of the organisation.

  • Attribute Name: legalName (GML), LEGAL_NAME (CSV), legal_name (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 60

  • Multiplicity: [0..1]

Start date

Date on which the record was first loaded into the database.

  • Attribute Name: Provided in (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the record ceased to exist.

  • Attribute Name: Provided in (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: Provided in (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the UPRN attached to this record was entered into the Local Authority database.

  • Attribute Name: Provided in (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Successor Cross Reference – (Type 30 Record)

This record holds references to a UPRN and to any replacement UPRN, for example, if a building is split into two sub-buildings; the sub-building UPRNs will be referenced in the successor record.

Please note that this record type is not currently utilised in the product.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as a Successor Cross Reference (type 30).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the LPI to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Succ key

Key value to uniquely identify the successor cross reference record and the primary key for this table.

  • Attribute Name: succKey (GML), SUCC_KEY (CSV), succ_key (GPKG)

  • Data Type: CharacterString (GML), char (CSV ), String (GPKG)

  • Size: 14

  • Multiplicity: [1]

Start date

Date on which the record was first loaded into the database.

  • Attribute Name: Provided in (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the record ceased to exist.

  • Attribute Name: Provided in (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: Provided in (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the UPRN attached to this record was entered into the Local Authority database.

  • Attribute Name: Provided in (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Successor

UPRN of successor BLPU.

  • Attribute Name: successor (GML), SUCCESSOR (CSV), successor (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

COU supply
ChangeTypeCode
EntityWithLifeCycle
EntityWithLifeCycle
EntityWithLifeCycle
EntityWithLifeCycle
COU supply
ChangeTypeCode
EntityWithLifeCycle
EntityWithLifeCycle
EntityWithLifeCycle
EntityWithLifeCycle
Ordnance Survey Partner website
More information on GML readers in FME
ogr2ogr -f "PostgreSQL" PG:"host=<host> port=<port> dbname=<database> user=<username> password=<password>" <data_name.gml> -overwrite -progress -t_srs EPSG:<CRS>
ogr2ogr -f "PostgreSQL" PG:"host=localhost port=5432 dbname=osdata user=postgres password=pgdata1234" AddressBasePremium_AOI_2021-04-12_001_gml.gml -overwrite - progress -t_srs EPSG:27700
Safe FME Reader button
Safe FME Reader button
Safe FME Reader dialog
Safe FME Reader dialog
Safe FME Select Feature Types dialog
Safe FME Select Feature Types dialog
Windows Start menu showing Command Prompt app
Windows Start menu showing Command Prompt app
Windows Command Prompt showing cd command
Windows Command Prompt showing cd command
ogr2ogr -progress -gt 65000 -f PostgreSQL "PG:user=<username> password=<password> dbname=<database> host=<host>" <data_name>.gpkg
ogr2ogr -progress -gt 65000 -f PostgreSQL "PG:user=postgres password=PG123 dbname=osdata host=localhost" AddressBasePremium_AOI_2021-04-12_001_gpkg.gpkg
AddressBase Premium structure
technical specification
AddressBase Premium structure
technical specification
:
ArcGIS Pro UI highlighting Insert > Add Folder navigation item
ArcGIS Pro UI highlighting Insert > Add Folder navigation item
ArcGIS Pro UI highlighting View > Catalog Pane navigation item
ArcGIS Pro UI highlighting View > Catalog Pane navigation item
ArcGIS Pro Catalog Pane
ArcGIS Pro Catalog Pane
ArcGIS Pro Catalog Pane highlighting Add To Current Map and Add To New actions in the context menu
ArcGIS Pro Catalog Pane highlighting Add To Current Map and Add To New actions in the context menu
ArcGIS Pro UI showing AddressBase Premium  tables in the Contents pane and Map view
ArcGIS Pro UI showing AddressBase Premium tables in the Contents pane and Map view
ArcGIS Pro UI highlighting Joins and Relates > Add Relate action in the context menu
ArcGIS Pro UI highlighting Joins and Relates > Add Relate action in the context menu
ArcGIS Pro Add Relate dialog
ArcGIS Pro Add Relate dialog
ArcGIS Pro Layer Properties dialog
ArcGIS Pro Layer Properties dialog
ArcGIS Pro UI highlighting Field field in the Labeling tab
ArcGIS Pro UI highlighting Field field in the Labeling tab
ArcMap Catalog highlighting Connect to Folder action in the context menu
ArcMap Catalog highlighting Connect to Folder action in the context menu
ArcMap Connect to Folder dialog
ArcMap Connect to Folder dialog
ArcMap UI highlighting main.street and main.blpu tables in the Layers panel and Catalog
ArcMap UI highlighting main.street and main.blpu tables in the Layers panel and Catalog
ArcMap UI highlighting main.street and main.blpu tables in Layers panel and Catalog
ArcMap UI showing Joins and Relates > Relate action in the Layers context menu
ArcMap UI showing Joins and Relates > Relate action in the Layers context menu
ArcMap Relate dialog
ArcMap Relate dialog
ArcMap Display tab in the Layer Properties dialog
ArcMap Display tab in the Layer Properties dialog
QGIS UI showing blpu and street tables in the Browser and map area
QGIS UI showing blpu and street tables in the Browser and map area
QGIS Layers panel showing blpu layer > Properties... action in the context menu
QGIS Layers panel showing blpu layer > Properties... action in the context menu
QGIS Layer Properties dialog showing Add Vector Join sub-dialog in blpu - Joins tab
QGIS Layer Properties dialog showing Add Vector Join sub-dialog in blpu - Joins tab
QGIS Layer Properties dialog showing new join in the blpu - Joins tab
QGIS Layer Properties dialog showing new join in the blpu - Joins tab
QGIS Identify Results window
QGIS Identify Results window
Windows Start menu showing Command Prompt app
Windows Start menu showing Command Prompt app
Windows Command Prompt showing cd command
Windows Command Prompt showing cd command
ArcGIS Pro feature class properties window showing the attribute index and spatial index options

Street – (Type 11 Record)

A way or thoroughfare providing a right of way on foot, by cycle or by motor vehicle, or access to more than one property. This record assigns a Unique Street Reference Number (USRN) to each street and holds the start and end coordinates of the street feature with information about surface type and classification.

Feature type attributes

The following page provides details about the attributes included with this feature, their data types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as a Street Record (type 11).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer (CSV)

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Provided in FeatureWithLifeCycle (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

USRN

Unique Street Reference Number (USRN) - the unique key for the record and primary key for the Street table.

  • Attribute Name: usrn (GML), USRN (CSV), usrn (GPKG)

  • Data Type: Integer

  • Size: 8

  • Multiplicity: [1]

Record type

Description of the street record type, for example whether it is a named or numbered street.

  • Attribute Name: recordType (GML), RECORD_TYPE (CSV), record_type (GPKG)

  • Code List Name: StreetRecordTypeCode

  • Size: 1

  • Multiplicity: [1]

SWA org ref

The code which identifies the Street Naming and Numbering Authority or the Local Highway Authority.

  • Attribute Name: swaOrgRefNaming (GML), SWA_ORG_REF_NAMING (CSV), swa_org_ref_naming (GPKG)

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [1]

State

A code identifying the current state of the Street, ‘Open’ for example.

  • Attribute Name: state (GML), STATE (CSV), state (GPKG)

  • Code List Name: StreetStateCode

  • Size: 1

  • Multiplicity: [0..1]

State date

Date at which the street achieved its current state as referenced in the ‘State’ column.

  • Attribute Name: stateDate (GML), STATE_DATE (CSV), state_date (GPKG)

  • Condition: If State Date is present, State must also be present.

  • Data Type: Date

  • Multiplicity: [0..1]

Street surface

A code to indicate the surface finish of the street.

  • Attribute Name: streetSurface (GML), STREET_SURFACE (CSV), street_surface (GPKG)

  • Code List Name: StreetSurfaceCode

  • Size: 1

  • Multiplicity: [0..1]

Street classification

A code for the primary street classification, for example denoting it to be ‘open to all vehicles’.

  • Attribute Name: streetClassification (GML), STREET_CLASSIFICATION (CSV), street_classification (GPKG)

  • Code List Name: StreetClassificationCode

  • Size: 2

  • Multiplicity: [0..1]

Version

Version number of the street record.

  • Attribute Name: version (GML), VERSION (CSV), version (GPKG)

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [1]

Street start date

Date this record or version was inserted into the database.

  • Attribute Name: Provided in FeatureWithLifeCycle (GML), STREET_START_DATE (CSV), street_start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Street end date

Date on which the street was closed in the product database. This can occur due to the street being permanently closed in the real world.

  • Attribute Name: Provided in FeatureWithLifeCycle (GML), STREET_END_DATE (CSV), street_end_date (GPKG)

  • Condition: If State is equal to 4, Street End Date must be populated.

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute of the Record was last changed.

  • Attribute Name: Provided in FeatureWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Record entry date

The date that the record was entered into the Local Authority database.

  • Attribute Name: Provided in FeatureWithLifeCycle (GML), RECORD_ENTRY_DATE (CSV), record_entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Street start

A value in metres defining the x and y location in accordance with the British National Grid for the start point of the street.

  • Attribute Name: streetStart (GML), STREET_START_X, STREET_START_Y (CSV), street_start_x, street_start_y (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: STREET_START_X (precision, scale) – (8, 2), STREET_START_Y (precision, scale) – (9, 2)

  • Multiplicity: [1]

Street start lat long

A value defining the Latitude and Longitude start point of the street in accordance with the ETRS89 coordinate reference system.

  • Attribute Name: streetStartLatLong (GML), STREET_START_LAT, STREET_START_LONG (CSV), street_start_lat, street_start_long (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: LATITUDE (precision, scale) – (9, 7), LONGITUDE (precision, scale) – (8, 7)

  • Multiplicity: [1]

Street end

A value in metres defining the x and y location in accordance with the British National Grid for the end point of the street.

  • Attribute Name: streetEnd (GML), STREET_END_X, STREET_END_Y (CSV), street_start_lat, street_end_x, street_end_y (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: STREET_END_X (precision, scale) – (8, 2), STREET_END_Y (precision, scale) – (9, 2)

  • Multiplicity: [1]

Street end lat long

A value defining the Latitude and Longitude end point of the street in accordance with the ETRS89 coordinate reference system.

  • Attribute Name: streetEndLatLong (GML), STREET_END_LAT, STREET_END_LONG (CSV), street_end_lat, street_end_long (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: LATITUDE (precision, scale) – (9, 7), LONGITUDE (precision, scale) – (8, 7)

  • Multiplicity: [1]

Street tolerance

The accuracy of data capture (in metres) to which the Street Start and End coordinates have been captured.

  • Attribute Name: streetTolerance (GML), STREET_TOLERANCE (CSV), street_tolerance (GPKG)

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [1]

Application Cross Reference – (Type 23 Record)

Application cross reference links to third-party identifiers.

AddressBase Premium application cross references contain a lookup between the AddressBase Premium UPRN and the unique identifiers of other relevant datasets.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as an Application Cross Reference Record (type 23).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the application cross reference record to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Xref key

Unique key for the application cross reference record and primary key for this table.

  • Attribute Name: xrefKey (GML), XREF_KEY (CSV), xref_key (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 14

  • Multiplicity: [1]

Cross reference

Primary key of corresponding record in an external dataset.

  • Attribute Name: crossReference (GML), CROSS_REFERENCE (CSV), cross_reference (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 50

  • Multiplicity: [1]

Version

Certain data sources may reference objects with lifecycles. This field enables users to reference specific versions of an object, for example, OS MasterMap Topographic Layer TOID and Version.

  • Attribute Name: version (GML), VERSION (CSV), version (GPKG)

  • Condition: Version must be present if Source value is one of the following: 7666MT, 7666MA or 7666MI.

  • Data Type: Integer

  • Size: 3

  • Multiplicity: [0..1]

Source

External dataset identity.

  • Attribute Name: source (GML), SOURCE (CSV), source (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 6

  • Multiplicity: [1]

Start date

Date the feature was matched to the cross reference dataset for the first time.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the external cross reference was no longer valid.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the Local Authority record matched to the cross reference was inserted into the Local Authority database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Values for the SOURCE (source) column

The values in this table are not a code list and may be amended or extended in the future.

Dataset ID
Data source
Multiplicity

7666MT

OS MasterMap Topography Layer TOID.

[0..1]

7666MA

OS MasterMap Address Layer 2 TOID.

[0..1]

7666MI

OS MasterMap Highways TOID.

[0..1]

7666VC

Centrally created Council Tax.

[0..1]

7666VN

Centrally created non domestic rates.

[0..1]

7666OW

ONS Ward Code.

[0..1]

7666OP

ONS Parish Code.

[0..1]

Classification – (Type 32 Record)

A structured entry that provides the code for the type of BLPU and the classification scheme from which the code is taken. This record holds the classification of a property and allows one to search upon the use of a feature.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as a Classification Record (type 32).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the LPI to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Class key

Unique key for the classification record and primary key for this table.

  • Attribute Name: classKey (GML), CLASS_KEY (CSV), class_key (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 14

  • Multiplicity: [1]

Classification codes

A code that describes the classification of the record.

  • Attribute Name: classificationCode (GML), CLASSIFICATION_CODE (CSV), classification_code (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 6

  • Multiplicity: [1]

Class scheme

The name of the classification scheme used for this record.

  • Attribute Name: classScheme (GML), CLASS_SCHEME (CSV), class_scheme (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 60

  • Multiplicity: [1]

Scheme version

The name of the classification scheme used for this record.

  • Attribute Name: schemeVersion (GML), SCHEME_VERSION (CSV), scheme_version (GPKG)

  • Data Type: CharacterString (GML), float (CSV), double (GPKG)

  • Size: (precision, scale) – 2(1)

  • Multiplicity: [1]

Start date

Date on which this classification record was first loaded into the database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

Date this classification record ceased to exist.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the address record associated with this classification record was inserted into the Local Authority database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

AddressBase Premium | Data Products | OSOrdnance Survey

BLPU – (Type 21 Record)

A BLPU is defined as a real-world object that is an ‘area of land, property or structure of fixed location having uniform occupation, ownership or function’. It is a real-world object that is of interest and within scope of the CLASS_SCHEME.

Feature type attributes

The following page provides details about the attributes included with this feature, their data types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this record as a BLPU Record (type 21).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer (CSV)

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see for more information.

  • Attribute Name: Provided in (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

The order in which the records were processed in to create the data supply.

  • Attribute Name: uprn (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Logical status

Logical status of this address record as given by the local custodian. This attribute shows whether the address is currently live, provisional or historic.

  • Attribute Name: logicalStatus (GML), LOGICAL_STATUS (CSV), logical_status (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

BLPU state

A code identifying the current state of the BLPU.

  • Attribute Name: blpuState (GML), BLPU_STATE (CSV), blpu_state (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [0..1]

BLPU state date

Date at which the BLPU achieved its current state as defined in the BLPU State field.

  • Attribute Name: blpuStateDate (GML), BLPU_STATE_DATE (CSV), blpu_state_date (GPKG)

  • Condition: BLPU State Date must be present if BLPU State is present.

  • Data Type: Date

  • Size: 1

  • Multiplicity: [0..1]

Parent UPRN

UPRN of the parent Record if a parent-child relationship exists.

  • Attribute Name: parentUPRN (GML), PARENT_UPRN (CSV), parent_uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [0..1]

Position

A value in metres defining the x and y location in accordance with the British National Grid.

  • Attribute Name: position (GML), X_COORDINATE, Y_COORDINATE (CSV), x_coordinate, y_coordinate (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: X_COORDINATE (precision, scale) – (8, 2), Y_COORDINATE (precision, scale) – (9, 2)

  • Multiplicity: [1]

Position lat long

A value defining the Latitude and Longitude location in accordance with the ETRS89 coordinate reference system.

  • Attribute Name: positionLatLong (GML), LATITUDE, LONGITUDE (CSV), latitude, longitude (GPKG)

  • Data Type: GM_POINT (GML), Float (CSV), Double (GPKG)

  • Size: latitude, longitude

  • Multiplicity: [1]

RPC

Representative Point Code: this describes the accuracy of the coordinate that has been allocated to the BLPU as indicated by the local authority custodian.

  • Attribute Name: rpc (GML), RPC (CSV), rpc (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Local custodian code

Unique identifier of the Local Authority Custodian responsible for the maintenance of this record.

  • Attribute Name: localCustodianCode (GML), LOCAL_CUSTODIAN_C ODE (CSV), local_custodian_code (GPKG)

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [1]

Country

The country in which a record can be found. This is calculated by performing an intersection with OS Boundary Line. This means records such as wind and fish farms will be assigned a value of ‘J’. Please see for more information.

  • Attribute Name: country (GML), COUNTRY (CSV), country (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Start date

The date on which the address record was inserted into the database.

  • Attribute Name: Provided in (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the address record was closed in the database.

  • Attribute Name: Provided in (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any of the attributes on this record were last changed.

  • Attribute Name: Provided in (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which this record was inserted into the Local Authority database.

  • Attribute Name: Provided in (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

AddressBase postal

Identifies addresses which are believed to be capable of receiving mail as defined specifically for the AddressBase products and details their relationship with other AddressBase Postal records.

This field identifies some addresses which the AddressBase product believes to be capable of receiving mail which are not contained within the Royal Mail PAF database, such as flats behind a front door with single letter box.

  • Attribute Name: addressbasePostal (GML), ADDRESSBASE_POSTAL (CSV), addressbase_postal (GPKG)

  • Code List Name:

  • Size: 1

  • Multiplicity: [1]

Postcode locator

This field contains the Royal Mail Postcode Address File (PAF) postcode where the local authority address has been matched to PAF, that is, the POSTCODE field found within the Delivery Point Address table. Where a match has not been made, the postcode information is sourced from the local authority in collaboration with Royal Mail. Where the local authority does not hold a current valid postcode, a nearest neighbour function is used to spatially derive the postcode based on the position of the nearest UPRN which has a valid PAF match or valid local authority postcode assigned to it. The postcode value for Street Records (Classification "PS") will always be spatially assigned. This field must be used in conjunction with the RPC field to determine the accuracy of its position.

  • Attribute Name: postcodeLocator (GML), POSTCODE_LOCATOR (CSV), postcode_locator (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 8

  • Multiplicity: [1]

Multi occ count

This is a count of all of the child UPRNs for this record where a parent-child relationship exists.

  • Attribute Name: multiOccCount (GML), MULTI_OCC_COUNT (CSV), multi_occ_count (GPKG)

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [1]

Metadata – (Type 29 Record)

A structured entry providing metadata information such as the gazetteer owner, scope and character sets.

A Metadata record is not provided in GML or GPKG

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

Record identifier

Identifies the record as a Metadata Record (type 29).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Gaz name

Name of the Gazetteer, this will most likely reflect the product name, for example, AddressBase Premium.

  • Attribute Name: Not provided (GML), GAZ_NAME (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 60

  • Multiplicity: [1]

Gaz scope

Description of the content of the gazetteer.

  • Attribute Name: Not provided (GML), GAZ_SCOPE (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 60

  • Multiplicity: [1]

Ter of use

Geographic domain of the gazetteer, for example, England, Wales and Scotland.

  • Attribute Name: Not provided (GML), TER_OF_USE (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 60

  • Multiplicity: [1]

Linked data

List of other datasets used to contribute to the creation of the product.

  • Attribute Name: Not provided (GML), LINKED_DATA (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 100

  • Multiplicity: [1]

Gaz owner

The organisation with overall responsibility for the gazetteer.

  • Attribute Name: Not provided (GML), GAZ_OWNER (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 15

  • Multiplicity: [1]

Ngaz freq

The frequency with which the data is maintained and sent to the customer.

  • Attribute Name: Not provided (GML), NGAZ_FREQ (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 1

  • Multiplicity: [1]

Custodian name

Organisation or department responsible for the compilation and maintenance of the data, for example Geoplace.

  • Attribute Name: Not provided (GML), CUSTODIAN_NAME (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 40

  • Multiplicity: [1]

Custodian UPRN

UPRN of authority address custodian location.

  • Attribute Name: Not provided (GML), CUSTODIAN_UPRN (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

Local custodian code

Four-digit code identifying the gazetteer custodian.

  • Attribute Name: Not provided (GML), LOCAL_CUSTODIAN_CODE (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [1]

Co-ord system

Coordinate Reference System used in the gazetteer to describe the position, for example British National Grid.

  • Attribute Name: Not provided (GML), CO_ORD_SYSTEM (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 40

  • Multiplicity: [1]

Co-ord unit

Unit of measurement of coordinates.

  • Attribute Name: Not provided (GML), CO_ORD_SYSTEM (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 10

  • Multiplicity: [1]

Meta date

Date metadata was last updated.

  • Attribute Name: Not provided (GML), META_DATE (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Class scheme

Classification scheme (s) used in the Gazetteer.

  • Attribute Name: Not provided (GML), CLASS_SCHEME (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 60

  • Multiplicity: [1]

Gaz date

Date at which the gazetteer can be considered to be current.

  • Attribute Name: Not provided (GML), GAZ_DATE (CSV), Not provided (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Language

Language used for the descriptors within the gazetteer, for example ‘ENG’.

  • Attribute Name: Not provided (GML), CLASS_SCHEME (CSV), Not provided (GPKG)

  • Code List Name:

  • Size: 3

  • Multiplicity: [1]

Character set

The character set used in this gazetteer.

  • Attribute Name: Not provided (GML), CHARACTER_SET (CSV), Not provided (GPKG)

  • Data Type: char

  • Size: 30

  • Multiplicity: [1]

AddressBase fundamentals

Additional documentation covering the complete family of AddressBase products is available in the AddressBase Fundamentals pages. These covers key elements of design for AddressBase products, including:

To report an issue not currently listed here, please visit the .

COU supply
FeatureWithLifeCycle
ChangeTypeCode
LogicalStatusCode
BlpuStateCode
RPCCode
CountryCode
CountryCode
FeatureWithLifeCycle
FeatureWithLifeCycle
FeatureWithLifeCycle
FeatureWithLifeCycle
AddressbasePostalCode
LanguageCode
Future and past publication dates
Unique Property Reference Number (UPRN)
Coordinate reference systems
Classification scheme
Data sources
Street names and numbering
Currency completeness and precision
Product supply
AddressBase local custodian codes
AddressBase Islands local custodian codes
'Contact us' page on the OS website

GML

BasicLandPropertyUnitMember

<abpr:basicLandPropertyUnitMember>
<abpr:BasicLandPropertyUnit gml:id="uk.geoplace.uprn.100100077917">
<abpr:changeType>I</abpr:changeType>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:uprn>100100077917</abpr:uprn>
<abpr:logicalStatus>1</abpr:logicalStatus>
<abpr:position>
<gml:Point srsName="urn:ogc:def:crs:EPSG::27700" gml:id="uk.geoplace.uprn.p.100100077917">
<gml:pos>316348.00 177163.00</gml:pos>
</gml:Point>
</abpr:position>
<abpr:positionLatLong>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4258" gml:id="uk.geoplace.uprn.pl.100100077917">
<gml:pos>50.7268511 -3.5366289</gml:pos>
</gml:Point>
</abpr:positionLatLong>
<abpr:rpc>1</abpr:rpc>
<abpr:localCustodianCode>6815</abpr:localCustodianCode>
<abpr:country>E</abpr:country>
<abpr:addressbasePostal>D</abpr:addressbasePostal>
<abpr:postcodeLocator>CF11 9PX</abpr:postcodeLocator>
<abpr:multiOccCount>0</abpr:multiOccCount>
<abpr:landPropertyIdentifierMember>
<abpr:LandPropertyIdentifier>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2001-05-15</abpr:lastUpdateDate>
<abpr:lpiKey>6815L000701604</abpr:lpiKey>
<abpr:logicalStatus>1</abpr:logicalStatus>
<abpr:paoStartNumber>166</abpr:paoStartNumber>
<abpr:usrn>5801201</abpr:usrn>
<abpr:usrnMatchIndicator>1</abpr:usrnMatchIndicator>
</abpr:LandPropertyIdentifier>
</abpr:landPropertyIdentifierMember>
<abpr:classificationMember>
<abpr:Classification>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:classKey>6815C000076448</abpr:classKey>
<abpr:classificationCode>R</abpr:classificationCode>
<abpr:classScheme>AddressBase Premium Classification Scheme</abpr:classScheme>
<abpr:schemeVersion>1.0</abpr:schemeVersion>
</abpr:Classification>
</abpr:classificationMember>
<abpr:deliveryPointAddressMember>
<abpr:DeliveryPointAddress>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:udprn>4201646</abpr:udprn>
<abpr:buildingNumber>166</abpr:buildingNumber>
<abpr:thoroughfare xml:lang="en">LLANDAFF ROAD</abpr:thoroughfare>
<abpr:postTown xml:lang="en">CARDIFF</abpr:postTown>
<abpr:postcode>CF11 9PX</abpr:postcode>
<abpr:postcodeType>S</abpr:postcodeType>
<abpr:deliveryPointSuffix>2F</abpr:deliveryPointSuffix>
<abpr:welshThoroughfare xml:lang="en">LLANDAFF ROAD</abpr:welshThoroughfare>
<abpr:welshPostTown xml:lang="en">CAERDYDD</abpr:welshPostTown>
<abpr:processDate>2011-07-19</abpr:processDate>
</abpr:DeliveryPointAddress>
</abpr:deliveryPointAddressMember>
<abpr:organisationMember>
<abpr:Organisation>
<abpr:startDate>2003-07-28</abpr:startDate>
<abpr:entryDate>2003-07-28</abpr:entryDate>
<abpr:lastUpdateDate>2010-07-10</abpr:lastUpdateDate>
<abpr:organisation>EXAMPLE ORGANISATION NAME</abpr:organisation>
<abpr:orgKey>6815O000015664</abpr:orgKey>
</abpr:Organisation>
</abpr:organisationMember>
<abpr:applicationCrossReferenceMember>
<abpr:ApplicationCrossReference>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:xRefKey>6815X600076448</abpr:xRefKey>
<abpr:version>5</abpr:version>
<abpr:crossReference>osgb4000000021638865</abpr:crossReference>
<abpr:source>7666MI</abpr:source>
</abpr:ApplicationCrossReference>
</abpr:applicationCrossReferenceMember>
<abpr:applicationCrossReferenceMember>
<abpr:ApplicationCrossReference>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:xRefKey>6815X700076448</abpr:xRefKey>
<abpr:version>3</abpr:version>
<abpr:crossReference>osgb1000027126870</abpr:crossReference>
<abpr:source>7666MT</abpr:source>
</abpr:ApplicationCrossReference>
</abpr:applicationCrossReferenceMember>
<abpr:applicationCrossReferenceMember>
<abpr:ApplicationCrossReference>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:xRefKey>6815X800076448</abpr:xRefKey>
<abpr:version>1</abpr:version>
<abpr:crossReference>214788192</abpr:crossReference>
<abpr:source>7666VC</abpr:source>
</abpr:ApplicationCrossReference>
</abpr:applicationCrossReferenceMember>
<abpr:applicationCrossReferenceMember>
<abpr:ApplicationCrossReference>
<abpr:startDate>2001-05-10</abpr:startDate>
<abpr:entryDate>2001-05-10</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-29</abpr:lastUpdateDate>
<abpr:xRefKey>6815X900076448</abpr:xRefKey>
<abpr:version>12</abpr:version>
<abpr:crossReference>osgb1000002283010753</abpr:crossReference>
<abpr:source>7666MA</abpr:source>
</abpr:ApplicationCrossReference>
</abpr:applicationCrossReferenceMember>
</abpr:BasicLandPropertyUnit>
</abpr:basicLandPropertyUnitMember>

StreetMember

<abpr:streetMember>
<abpr:Street gml:id="uk.geoplace.usrn.5801201">
<abpr:changeType>I</abpr:changeType>
<abpr:startDate>2004-09-09</abpr:startDate>
<abpr:entryDate>2004-09-09</abpr:entryDate>
<abpr:lastUpdateDate>2007-08-14</abpr:lastUpdateDate>
<abpr:usrn>5801201</abpr:usrn>
<abpr:recordType>1</abpr:recordType>
<abpr:swaOrgRefNaming>6815</abpr:swaOrgRefNaming>
<abpr:state>2</abpr:state>
<abpr:stateDate>1990-01-01</abpr:stateDate>
<abpr:streetSurface>1</abpr:streetSurface>
<abpr:streetClassification>8</abpr:streetClassification>
<abpr:version>0</abpr:version>
<abpr:streetStart>
<gml:Point srsName="urn:ogc:def:crs:EPSG::27700" gml:id="uk.geoplace.usrn.start.5801201">
<gml:pos>316433.00 176987.00</gml:pos>
</gml:Point>
</abpr:streetStart>
<abpr:streetStartLatLong>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4258" gml:id="uk.geoplace.usrn.start.l.5801201">
<gml:pos>51.545587 -3.5441274</gml:pos>
</gml:Point>
</abpr:streetStartLatLong>
<abpr:streetEnd>
<gml:Point srsName="urn:ogc:def:crs:EPSG::27700" gml:id="uk.geoplace.usrn.end.5801201">
<gml:pos>316278.00 177294.00</gml:pos>
</gml:Point>
</abpr:streetEnd>
<abpr:streetEndLatLong>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4258" gml:id="uk.geoplace.usrn.end.l.5801201">
<gml:pos>52.1124512 -3.2254874</gml:pos>
</gml:Point>
</abpr:streetEndLatLong>
<abpr:streetTolerance>20</abpr:streetTolerance>
<abpr:streetDescriptiveIdentifierMember>
<abpr:StreetDescriptiveIdentifier>
<abpr:streetDescription xml:lang="en">LLANDAFF ROAD</abpr:streetDescription>
<abpr:localityName xml:lang="en">PONTCANNA</abpr:localityName>
<abpr:townName xml:lang="en">CARDIFF</abpr:townName>
<abpr:administrativeArea xml:lang="en">CARDIFF</abpr:administrativeArea>
</abpr:StreetDescriptiveIdentifier>
</abpr:streetDescriptiveIdentifierMember>
<abpr:streetDescriptiveIdentifierMember>
<abpr:StreetDescriptiveIdentifier>
<abpr:streetDescription xml:lang="cy">LLANDAFF ROAD</abpr:streetDescription>
<abpr:localityName xml:lang="cy">PONTCANNA</abpr:localityName>
<abpr:townName xml:lang="cy">CAERDYDD</abpr:townName>
<abpr:administrativeArea xml:lang="cy">CAERDYDD</abpr:administrativeArea>
</abpr:StreetDescriptiveIdentifier>
</abpr:streetDescriptiveIdentifierMember>
</abpr:Street>
</abpr:streetMember>

LPI – (Type 24 Record)

An LPI is a structured entry that identifies a BLPU. It is a simple identifier or description for the object. The richness of the data structure within AddressBase Premium provides the facility to describe a BLPU by more than one LPI.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies this Record as an LPI Record (type 24).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the LPI to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

LPI key

Unique key for the LPI and primary key for this table.

  • Attribute Name: lpiKey (GML), LPI_KEY (CSV), lpi_key (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 14

  • Multiplicity: [1]

Language

For GML language qualifiers are provided in the parent element as ‘xml:lang’

A code that identifies the language used for the LPI record.

  • Attribute Name: Not provided (GML), LANGUAGE (CSV), language (GPKG)

  • Code List Name: LanguageCode

  • Size: 3

  • Multiplicity: [1]

Logical status

Logical status of this record.

  • Attribute Name: logicalStatus (GML), LOGICAL_STATUS (CSV), logical_status (GPKG)

  • Code List Name: LogicalStatusCode

  • Size: 1

  • Multiplicity: [1]

Start date

Date that this LPI record was first loaded into the database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date this record ceased to exist in the database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The last date an attribute on this record was last changed.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the record was inserted into the Local Authority database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

SAO start number

The number of the secondary addressable object (SAO) or the start of the number range.

  • Attribute Name: saoStartNumber (GML), SAO_START_NUMBER (CSV), sao_start_number (GPKG)

  • Condition: If a SAO Start Number is present a PAO Start Number or PAO text must also be present.

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [0..1]

SAO start suffix

The suffix to the SAO_START_NUMBER.

  • Attribute Name: saoStartSuffix (GML), SAO_START_SUFFIX (CSV), sao_start_suffix (GPKG)

  • Condition: If a SAO Start Suffix is present a SAO Start Number must also be present.

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 2

  • Multiplicity: [0..1]

SAO end number

The end of the number range for the SAO, where the SAO_START_NUMBER contains the first number in the range.

  • Attribute Name: saoEndNumber (GML), SAO_END_NUMBER (CSV), sao_end_number (GPKG)

  • Condition: If SAO End Number is present, a SAO Start Number must also be present.

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [0..1]

SAO end suffix

The suffix to the SAO_END_NUMBER.

  • Attribute Name: saoEndSuffix (GML), SAO_END_SUFFIX (CSV), sao_end_suffix (GPKG)

  • Condition: If a SAO End Suffix is present, a SAO End Number must also be present.

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 2

  • Multiplicity: [0..1]

SAO text

Contains the building name or description for the SAO.

  • Attribute Name: saoText (GML), SAO_TEXT (CSV), sao_text (GPKG)

  • Condition: If SAO Text is present, a PAO Start Number or PAO Text must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 90

  • Multiplicity: [0..1]

PAO start number

The number of the primary addressable object (PAO) or the start of the number range.

  • Attribute Name: paoStartNumber (GML), PAO_START_NUMBER (CSV), pao_start_number (GPKG)

  • Condition: PAO Start Number must be present if PAO Text is not present.

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [0..1]

PAO start suffix

The suffix to the PAO_START_NUMBER.

  • Attribute Name: paoStartSuffix (GML), PAO_START_SUFFIX (CSV), pao_start_suffix (GPKG)

  • Condition: If a PAO Start Suffix is present, a PAO Start Number must also be present.

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 2

  • Multiplicity: [0..1]

PAO end number

The end of the number range for the PAO where the PAO_START_NUMBER contains the first number in the range.

  • Attribute Name: paoEndNumber (GML), PAO_END_NUMBER (CSV), pao_end_number (GPKG)

  • Condition: If a PAO End Number is present, a PAO Start Number must also be present.

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [0..1]

PAO end suffix

The suffix to the PAO_END_NUMBER.

  • Attribute Name: paoEndSuffix (GML), PAO_END_SUFFIX (CSV), pao_end_suffix (GPKG)

  • Condition: If a PAO End Suffix is present, a PAO End Number must also be present.

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 2

  • Multiplicity: [0..1]

PAO text

Contains the building name or description for the PAO.

  • Attribute Name: paoText (GML), PAO_TEXT (CSV), pao_text (GPKG)

  • Condition: PAO Text must be present if PAO Start Number is not present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 90

  • Multiplicity: [0..1]

USRN

Unique Street Reference Number (USRN) - foreign key linking the Street record to the LPI record.

  • Attribute Name: usrn (GML), USRN (CSV), usrn (GPKG)

  • Data Type: Integer

  • Size: 8

  • Multiplicity: [1]

USRN match indicator

This field indicates how the item was matched to a Street. 1 is matched manually to the most accessible USRN and 2 is matched spatially to the nearest USRN, which may not be the nearest accessible street.

  • Attribute Name: usrnMatchIndicator (GML), USRN_MATCH_INDICATOR (CSV), usrn_match_indicator (GPKG)

  • Code List Name: USRNMatchIndicatorCode

  • Size: 1

  • Multiplicity: [1]

Area name

Third level of geographic area name, for example, to record island names or property groups such as crofts.

  • Attribute Name: areaName (GML), AREA_NAME (CSV), area_name (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 40

  • Multiplicity: [0..1]

Level

Detail on the vertical position of the property if known and provided by the Local Authority Custodian.

  • Attribute Name: level (GML), LEVEL (CSV), level (GPKG)

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [0..1]

Official flag

Status of the Address.

  • Attribute Name: officialFlag (GML), OFFICIAL_FLAG (CSV), official_flag (GPKG)

  • Code List Name: OfficialFlagCode

  • Size: 1

  • Multiplicity: [0..1]

Delivery Point Address – (Type 28 Record)

A Delivery Point Address is defined as a property that receives deliveries from Royal Mail. The structure of this address is taken from Royal Mail Postcode Address File (PAF) and other supplementary data files.

Data type attributes

The following page provides details about the attributes included with this data type, their types in the different output formats, and other important metadata about them.

fid

A non-persistent integer which is autogenerated and is required within the OGC GPKG format.

  • Attribute Name: Not provided (GML), Not provided (CSV), fid (GPKG)

  • Data Type: Integer

  • Multiplicity: [1]

Record identifier

Identifies the record as a Royal Mail Delivery Point Address Record (type 28).

  • Attribute Name: Not provided (GML), RECORD_IDENTIFIER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 2

  • Multiplicity: [1]

Change type

Type of record change – please see COU supply for more information.

  • Attribute Name: Not provided (GML), CHANGE_TYPE (CSV), change_type (GPKG)

  • Code List Name: ChangeTypeCode

  • Size: 1

  • Multiplicity: [1]

Pro order

The order in which the records were processed in to create the data supply.

  • Attribute Name: Not provided (GML), PRO_ORDER (CSV), Not provided (GPKG)

  • Data Type: Integer

  • Size: 16

  • Multiplicity: [1]

UPRN

Unique Property Reference Number (UPRN) - foreign key used to reference the DPA record to the corresponding BLPU.

  • Attribute Name: Not provided (GML), UPRN (CSV), uprn (GPKG)

  • Data Type: Integer

  • Size: 12

  • Multiplicity: [1]

UDPRN

Royal Mail’s Unique Delivery Point Reference Number (UDPRN) and the Primary key for this table.

  • Attribute Name: udprn (GML), UDPRN (CSV), udprn (GPKG)

  • Data Type: Integer

  • Size: 8

  • Multiplicity: [1]

Organisation name

The organisation name is the business name given to a delivery point within a building or small group of buildings. For example: TOURIST INFORMATION CENTRE. This field could also include entries for churches, public houses and libraries.

  • Attribute Name: organisationName (GML), ORGANISATION_NAME (CSV), organisation_name (GPKG)

  • Condition: Organisation Name must be present if Building Name or Building Number or PO Box Number are all not present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 60

  • Multiplicity: [0..1]

  • Source: Royal Mail

Department name

For some organisations, department name is indicated because mail is received by subdivisions of the main organisation at distinct delivery points.

For example, Organisation Name: ABC COMMUNICATIONS RM Department Name: MARKETING DEPARTMENT

  • Attribute Name: departmentName (GML), DEPARTMENT_NAME (CSV), department_name (GPKG)

  • Condition: If a Department Name is present an Organisation Name must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 60

  • Multiplicity: [0..1]

  • Source: Royal Mail

Sub-building name

The sub-building name and/or number are identifiers for subdivisions of properties. For example:

Sub-building Name: FLAT 3 Building Name: POPLAR COURT Thoroughfare: LONDON ROAD

If the above address is styled 3 POPLAR COURT, all the text will be shown in the Building Name attribute and the Sub-building Name will be empty. The building number will be shown in this field when it contains a range, decimal or non-numeric character (see Building Number).

  • Attribute Name: subBuildingName (GML), SUB_BUILDING_NAME (CSV), sub_building_name (GPKG)

  • Condition: If a Sub Building Name is present a Building Name or Building Number must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [0..1]

  • Source: Royal Mail

Building name

The building name is a description applied to a single building or a small group of buildings, such as Highfield House. This also includes those building numbers that contain non-numeric characters, such as 44A.

Some descriptive names, when included with the rest of the address, are sufficient to identify the property uniquely and unambiguously, for example, MAGISTRATES COURT.

Sometimes the building name will be a blend of distinctive and descriptive naming, for example, RAILWAY TAVERN (PUBLIC HOUSE) or THE COURT ROYAL (HOTEL).

  • Attribute Name: buildingName (GML), BUILDING_NAME (CSV), building_name (GPKG)

  • Condition: Building Name must be present if Organisation Name or Building Number or PO Box Number are all not present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 50

  • Multiplicity: [0..1]

  • Source: Royal Mail

Building number

The building number is a number given to a single building or a small group of buildings, thus identifying it from its neighbours, for example, 44. Building numbers that contain a range, decimals or non-numeric characters do not appear in this field but will be found in the building name or the sub- building name fields.

  • Attribute Name: buildingNumber (GML), BUILDING_NUMBER (CSV), building_number (GPKG)

  • Condition: Building Number must be present if Organisation Name or Building Name or PO Box Number are all not present.

  • Data Type: Integer

  • Size: 4

  • Multiplicity: [0..1]

  • Source: Royal Mail

Dependent thoroughfare

In certain places, for example, town centres, there are named thoroughfares within other named thoroughfares, for example, parades of shops on a high street where different parades have their own identity. For example, KINGS PARADE, HIGH STREET and QUEENS PARADE, HIGH STREET.

  • Attribute Name: dependentThoroughfare (GML), DEPENDENT_THOROUGHFARE (CSV), dependent_thoroughfare (GPKG)

  • Condition: If a Dependent Thoroughfare is present a Thoroughfare value must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 80

  • Multiplicity: [0..1]

  • Source: Royal Mail

Thoroughfare

A thoroughfare in AddressBase is fundamentally a road, track or named access route on which there are Royal Mail delivery points, for example, HIGH STREET.

  • Attribute Name: thoroughfare (GML), THOROUGHFARE (CSV), thoroughfare (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 80

  • Multiplicity: [0..1]

  • Source: Royal Mail

Double-dependent locality

This is used to distinguish between similar thoroughfares or the same thoroughfare within a dependent locality. For example, Millbrook Industrial Estate and Cranford Estate in this situation: BRUNEL WAY, MILLBROOK INDUSTRIAL ESTATE, MILLBROOK, SOUTHAMPTON and BRUNEL WAY, CRANFORD ESTATE, MILLBROOK, SOUTHAMPTON.

  • Attribute Name: doubleDependentLocality (GML), DOUBLE_DEPENDENT_LOC ALITY (CSV), double_dependent_locality (GPKG)

  • Condition: If a Double Dependent Locality is present a Dependent Locality must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 35

  • Multiplicity: [0..1]

  • Source: Royal Mail

Dependent locality

Dependent locality areas define an area within a post town. These are only necessary for postal purposes and are used to aid differentiation where there are thoroughfares of the same name in the same locality. For example, HIGH STREET in SHIRLEY and SWAYTHLING in this situation: HIGH STREET, SHIRLEY, SOUTHAMPTON and HIGH STREET, SWAYTHLING, SOUTHAMPTON.

  • Attribute Name: dependentLocality (GML), DEPENDENT_LOC ALITY (CSV), dependent_locality (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 35

  • Multiplicity: [0..1]

  • Source: Royal Mail

Post town

The town or city in which the Royal Mail sorting office is located which services this record. There may be more than one, possibly several, sorting offices in a town or city.

  • Attribute Name: postTown (GML), POST_TOWN (CSV), post_town (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [1]

  • Source: Royal Mail

Postcode

A postcode is an abbreviated form of address made up of combinations of between five and seven alphanumeric characters. These are used by Royal Mail to help with the automated sorting of mail. A postcode may cover between 1 and 100 addresses.

There are two main components of a postcode, for example, NW6 4DP:

  • The outward code (or ‘outcode’). The first two–four characters of the postcode constituting the postcode area and the postcode district, for example, NW6. It is the part of the postcode that enables mail to be sent from the accepting office to the correct area for delivery.

  • The inward code (or ‘incode’). The last three characters of the postcode constituting the postcode sector and the postcode unit, example, 4DP. It is used to sort mail at the local delivery office.

  • Attribute Name: postcode (GML), POSTCODE (CSV), postcode (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 8

  • Multiplicity: [1]

  • Source: Royal Mail

Postcode Type

Describes the address as a small or large user as defined by Royal Mail.

  • Attribute Name: postcodeType (GML), POSTCODE_TYPE (CSV), postcode_type (GPKG)

  • Condition: If PO Box number is present, Postcode Type must be ‘L’.

  • Code List Name: PostcodeTypeCode

  • Size: 1

  • Multiplicity: [1]

  • Source: Royal Mail

Delivery point suffix

A two-character code uniquely identifying an individual delivery point within a postcode.

  • Attribute Name: deliveryPointSuffix (GML), DELIVERY_POINT_SUFFIX (CSV), delivery_point_suffix (GPKG)

  • Condition: If PO Box number is present, Postcode Type must be ‘L’.

  • Code List Name: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 2

  • Multiplicity: [1]

  • Source: Royal Mail

Welsh dependent thoroughfare

The Welsh translation of DEPENDENT_THOROUGHFARE.

  • Attribute Name: welshDependentThoroughfare (GML), WELSH_DEPENDENT_THOROUGHFARE (CSV), welsh_dependent_thoroughfare (GPKG)

  • Condition: If a Welsh Dependent Thoroughfare is present, a Welsh Thoroughfare must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 80

  • Multiplicity: [0..1]

  • Source: Royal Mail

Welsh thoroughfare

The Welsh translation of THOROUGHFARE.

  • Attribute Name: welshThoroughfare (GML), WELSH_THOROUGHFARE (CSV), welsh_thoroughfare (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 80

  • Multiplicity: [0..1]

  • Source: Royal Mail

Welsh double-dependent locality

The Welsh translation of Double Dependent Locality.

  • Attribute Name: welshDoubleDependentLocality (GML), WELSH_DOUBLE_DEPENDE NT_LOCALITY (CSV), welsh_double_dependent_locality (GPKG)

  • Condition: If a Welsh Double Dependent Locality is present, a Welsh Dependent Locality must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 36

  • Multiplicity: [0..1]

  • Source: Royal Mail

Welsh dependent locality

The Welsh translation of DEPENDENT_LOCALITY.

  • Attribute Name: welshDependentLocality (GML), WELSH_DEPENDENT_LOCALITY (CSV), welsh_dependent_locality (GPKG)

  • Condition: If a Welsh Double Dependent Locality is present, a Welsh Dependent Locality must also be present.

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 35

  • Multiplicity: [0..1]

  • Source: Royal Mail

Welsh post town

The Welsh translation of post town value.

  • Attribute Name: welshPostTown (GML), WELSH_POST_TOWN (CSV), welsh_post_town (GPKG)

  • Data Type: LocalisedCharacterString (GML), char (CSV), String (GPKG)

  • Size: 30

  • Multiplicity: [0..1]

  • Source: Royal Mail

Po box number

Post Office Box (PO Box) number.

  • Attribute Name: poBoxNumber (GML), PO_BOX_NUMBER (CSV), po_box_number (GPKG)

  • Condition: Organisation Name or PO Box Number must be present if Building Name or Building Number are all not present.

  • Data Type: CharacterString (GML), char (CSV), String (GPKG)

  • Size: 6

  • Multiplicity: [0..1]

  • Source: Royal Mail

Process date

The date on which the PAF record was processed into the database.

  • Attribute Name: processDate (GML), PROCESS_DATE (CSV), process_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Start date

The date on which the address record was matched to the Delivery Point Address.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), START_DATE (CSV), start_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

End date

The date on which the PAF record no longer existed in the database.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), END_DATE (CSV), end_date (GPKG)

  • Data Type: Date

  • Multiplicity: [0..1]

Last update date

The date on which any attribute on this record was last changed.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), LAST_UPDATE_DATE (CSV), last_update_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Entry date

The date on which the PAF record was first loaded by Geoplace.

  • Attribute Name: Provided in EntityWithLifeCycle (GML), ENTRY_DATE (CSV), entry_date (GPKG)

  • Data Type: Date

  • Multiplicity: [1]

Logo

Searching for addresses

A common requirement for customers using the AddressBase products is to search for properties using full or partial addresses. Address searches may return a large number of addresses, a short list of possibilities, a single match or no results, depending on the search criteria.

There are many methods of implementing an address search, from free text queries through to structured address component searches. This section will step through two such approaches that may be used when working with AddressBase Premium products: free text search and structured component search.

These methods are not intended as recommendations; they are simply examples of how to get maximum value out of the products when implementing an address search function.

Free text search

One type of search implementation involves a single ‘search engine’ style text box, into which a user can type all or some of an address. For example:

Find address
Results

CLOVER AVENUE, SW99 9ZZ

1, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

2, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

3, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

4, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

5, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

6, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

7, Clover Avenue, Fieldtown, Addressville, SW99 9ZZ

In this scenario, the user can choose to type anything in Find address, which may be just one component of an address (for example, a postcode, street name or building name), several parts of an address (for example, street name + town name, house name + postcode, etc.) or even (rarely) a complete address.

There may or may not be commas between search items, or they may have been entered with or without capitalised letters, etc. In short, with this search method, there is no structure to the user input and the search methodology must be designed with this in mind.

Structured component search

The other common type of implementation for address searches involves entering search criteria in a structured way (for example, with a different text box for each major address component).

An example of a structured address component search.
Results

Rose Cottage, Main Street, Fieldtown, Addressville, SW99 9ZZ

Rose Cottage, Main Street, Ashford, AS45 9PP

Rose Cottage, Main Street, Buxtew, Monley, MO88 4TY

And so on...

This method guides the user to enter known components of an address and also creates a predictable user input structure around which to build a search function. While generally simpler to use and implement, it can be less user-friendly, particularly in cases where it is not obvious which box to type an address component into; for example, is Richmond Terrace a building name or a street?

The following sub-sections suggest how to implement the two search methods described above. Both methods should be used alongside the instructions on formatting single address labels given in Section 11.

Understanding the different addresses available

As described in Creating a single-line or multi-line address above, at a high level, the AddressBase Premium products provide two different types of address: the Delivery Point Address and the Geographic Address. However, for some Geographic Addresses, an alternative, provisional or historical variant of the approved record may also be provided as well as the approved address (all sharing the same UPRN).

The table below outlines what these addresses are and how to access them in the products. It provides a breakdown of the location and definition of Delivery Point addresses and the four categories of Geographic Addresses available in AddressBase Premium products.

Address type
What is it?
Where is it?

Delivery Point Address

The postal address as assigned to the property by Royal Mail (and widely used by the public).

Delivery Point Address table.

Approved Geographic Address

The legal / approved address as assigned by the local naming and numbering authority.

LPI table with Logical Status = 1, joined to Street Descriptor, Organisation and BLPU tables.

Provisional Geographic Address

Provisional addresses may exist for a property from the moment that an address has been granted planning permission to be built to the time when construction has been completed.

LPI table with Logical Status = 6, joined to Street Descriptor, Organisation and BLPU tables.

Alternative Geographic Address

Any alternative addresses that may exist for this property (for example, alternative names). There may be more than one alternative address per property.

LPI table with Logical Status = 3, joined to Street Descriptor, Organisation and BLPU tables.

Historical Geographic Address

Any historical addresses (recorded since data collection began) that may have existed in the past for this property (for example, previous house names or business names, and so on). There may be more than one historical address per property.

LPI table with Logical Status = 8, joined to Street Descriptor, Organisation and BLPU tables.

The search operation

An address search operation typically requires two stages of interaction from a user, and several processing steps from the underlying IT system. These steps are summarised in the following diagram:

Diagram Summarising the steps needed to successfully implement an address search operation.

The second user interaction can be omitted if there is only one result returned from the query. In almost all cases, there should be an option to ‘search again’ at the second and third stages in case no results are returned, or if none of the options shown is the required address.

Of course, different applications require different approaches; however, the general principles of the above process apply in all cases where an address is searched for based on user-entered criteria.

Generating a search query from structured user input

Within an interface that accepts structured user input for an address search, it is necessary to ‘map’ the fields presented to the user with those found within the AddressBase Premium products. In particular, any query will need to test multiple fields for a given input and will need to combine result sets from the two different address formats (Delivery Point Address and Geographic Address) in order to produce the most complete result set.

Generally, a search form will describe a simplified view of an address in order to keep the user interface tidy and intuitive. Users may be given a set of text boxes to fill in, generally including building name, building number, street name, locality name, town name and postcode. The relationships between some common search fields and the fields found in AddressBase Premium and AddressBase Premium Islands are as follows:

The table below shows the relationships between some common search fields and the fields found in AddressBase Premium and AddressBase Premium Islands.

Search Box
Mapped Delivery Point fields
Mapped Geographic fields

Business Name

Organisation_Name

Organisation PAO_Text SAO_Text

Flat / Subdivision Name

Sub_Building_Name Department_Name

SAO_Text

Flat / Subdivision Number

Sub_Building_Name

SAO_StartNumber SAO_StartSuffix SAO_EndNumber

SAO_EndSuffix

Building Name

Building_Name

PAO_Text

Building Number

Building_Number

Building_Name (in cases where a suffix or range is present)

PAO_StartNumber PAO_StartSuffix PAO_EndNumber

PAO_EndSuffix

Street

Thoroughfare Dependent_Thoroughfare

Street

PAO_Text

Locality

Dependent_Locality Double_Dependent_Locality

Locality

Town Street

Town

Dependent_Locality Post_Town

Town Locality

Postcode

Postcode

Postcode_Locator

The above mapping is an example only and it is possible to break down the search fields differently, in which case a different mapping would be required. The important thing is to consider all possibilities for how data might be recorded. For example, a business name can sometimes appear as an organisation name or a building/PAO name, depending on circumstances, so both must be checked when creating a search query.

Numbers need to be handled very carefully due to the presence of suffixes and ranges. There are two options for structuring the search input in these cases:

  1. A single ‘number’ box can be used (as shown in the table above), which will then require some string manipulation to split the input into the appropriate numeric range and suffix components in order to search the Geographic Addresses; or

  2. Four boxes can be provided for each number (start number, start suffix, end number and end suffix), which would then need to be combined into an appropriate string to search the Delivery Point Addresses.

Structuring the query for a structured address search

The basic rules to follow when generating a search query from structured input are as follows:

  • Ignore any search boxes that are not filled in with values.

  • Where a value is entered, assume that a match on at least one of the mapped fields is essential.

In SQL query terms, this means that each search term should generate a sub-query that searches each of the mapped fields (using OR), and that these sub-queries should then be combined together (using AND) into a single search query. The following SQL code illustrates this (for the Delivery Point Address search only) where a street, locality and town name have been entered by the user:

SELECT dp.UPRN, GetFormattedAddress(dp.*) FROM abp_delivery_point dp
WHERE (dp.thoroughfare = streetsearchtext OR dp.dependent_thoroughfare = streetsearchtext) AND (dp.dependent_locality = localitysearchtext OR dp.double_dependent_locality = localitysearchtext) AND (dp.dependent_locality = townsearchtext OR dp.post_town = townsearchtext)

In the above example, ‘streetsearchtext’, ‘localitysearchtext’, and ‘townsearchtext’ (shown in blue) represent user-entered search terms (which could be parameters within an SQL function) and the GetFormattedAddress(*) function is a hypothetical user-defined function that returns the formatted address as a single string (suitable for display in the user interface). For more information on formatting addresses, please see Creating a single-line or multi-line address.

On top of this, for a complete query the two different types of addresses should be queried separately (Geographic and Delivery Point Addresses), and the two result sets should be amalgamated into a single set using a UNION. The following example builds upon the previous example to include Geographic Addresses as well as Delivery Point Addresses:

SELECT dp.UPRN, GetFormattedAddress(dp.*) FROM abp_delivery_point dp
WHERE (dp.thoroughfare = streetsearchtext OR dp.dependent_thoroughfare = streetsearchtext) AND (dp.dependent_locality = localitysearchtext OR dp.double_dependent_locality = localitysearchtext) AND (dp.dependent_locality = townsearchtext OR dp.post_town = townsearchtext)
UNION
SELECT b.uprn, GetFormattedAddress(b.*, l.*, s.*, o.*) FROM abp.blpu b INNER JOIN abp.lpi l ON l.uprn
= b.uprn
INNER JOIN abp.street_descriptor s ON s.usrn = b.usrn LEFT JOIN abp.organisation o ON o.uprn = b.uprn WHERE
(s.street_name = streetsearchtext OR l.pao_text = streetsearchtext) AND
(s.locality = localitysearchtext OR s.town = localitysearchtext OR s.street_name = localitysearchtext) AND (s.town = townsearchtext OR s.locality = townsearchtext)

The geographic query requires four joins between the BLPU, LPI, Street Descriptor and Organisation tables in order to access all the fields required to build an address.

The SQL UNION operator will combine the two result sets, discarding any exact duplicates (retaining the exact duplicates requires the use of UNION ALL, but that is not desirable in this example).

The resulting output from this query will be a set of search results: formatted addresses along with their UPRN. Exact duplicates will be omitted, but all ‘variations’ of the same address will be outputted (one row for each variation, with the same UPRN repeated more than once potentially). It may be wise to also return the ‘logical status’ and/or ‘postal address flag’ values against each to enable further filtering (that is, to include or exclude historical addresses for example, or to restrict the results to postal addresses only).

Supporting case-insensitive queries and partial matches

A flaw in the above examples is the use of equality operators. In practice, because people do not tend to be consistent with the capitalisation of letters, the SQL ‘LIKE’ operator might work better. Depending on the nature of the application, a ‘%’ wildcard could be appended to the end of each search term to allow only the first few letters of an address component to be entered. For example:

SQL code
Description

dp.post_town LIKE townsearchtext

Case insensitive search in some databases

dp.post_town LIKE (townsearchtext || ‘%’)

Matches post towns that start with the search text

dp.post_town LIKE (‘%’ || townsearchtext || ‘%’)

Matches post towns that contain the search text

Alternatively, if exact matches are required but case sensitivity is not, then the UPPER() or LOWER() SQL functions can be used on each side of the equals sign in comparisons (a solution that should work in all databases):

SQL code
Description

UPPER(dp.post_town) = UPPER(townsearchtext)

Case insensitive equality

Finally, to combine all of the approaches, the following would work for maximum flexibility:

SQL code

UPPER(dp.post_town) LIKE (‘%’ || UPPER(townsearchtext) || ‘%’)

Generating a search query from unstructured user input

When offering a ‘search engine’ style search feature with just a single text box to enter search terms, a wholly different approach is required. No assumptions can be made about the order, format or style of the user input, and the data will need to be ‘indexed’ in a way that facilitates searches of this type.

Creating a search index for addresses

Search engine style searches are likely to require the creation of an additional index/lookup table for addresses. Such a table is likely to consist of just two main columns: a key value (UPRN) and a formatted address string. Additional columns may be required to allow filtering of results (such as the ‘logical status’ values, which would allow the results to be filtered on ‘approved’, ‘provisional’ and ‘historical’ statuses, for example).

The table below shows a possible address index table structure:

UPRN
Address Text
Statuses (multiple fields)

123456789012

4 THE MEADOWS HIGH STREET WALTHAMSDALE BURRIDGE BU27 9UB

Approved

123456789012

FLAT 4 THE MEADOWS HIGH STREET WALTHAMSDALE BURRIDGE BU27 9UB

Alternative + PAF

123456789012

4 HIGH STREET WALTHAMSDALE CLOSE BURRIDGE BU27 9UB

Historical

947364758903

ROSE COTTAGE MAIN STREET HAVERSHAM SUDBURY SU45 9TY

Approved + PAF

947364758903

ROSE FARMHOUSE MAIN STREET HAVERSHAM SUDBURY

Historical

Note how the addresses have been formatted as a single text string with a single space between each word (although leaving commas in would do no harm). All forms of each address (both PAF and Geographic, current and historical, approved and alternative) have been added to the index, so there can be several rows with the same UPRN. To speed up complex searching, an appropriate index could be added to the Address Text field, such as a full text search index.

Structuring the query for an unstructured address search

Once a suitable search index is in place, the query itself can be put together. The basic idea is to split the user input into search terms by removing commas, double spaces and other unnecessary whitespace, and then splitting the user input at each single space, as follows:

User input: 4, High Street, Westville, wv17 Capitalised, with commas and double-spaces removed: 4 HIGH STREET WESTVILLE WV17

Split into separate search terms:

  • 4

  • HIGH

  • STREET

  • WESTVILLE

  • WV17

Once the user input has been pre-processed into separate search terms, a query can be generated. The key assumption in this example will be that ALL search terms must be matched against the index table to be considered as a result. This implies a query where each value is matched using an ‘AND’ operator. In order to search the whole index, the ‘LIKE’ operator will need to be used along with a ‘%’ wildcard on either side of the search text. A suitable search query for the above example would be as follows:

SELECT UPRN, AddressText FROM AddressSearchIndex 
WHERE
AddressText LIKE ‘%4%’ AND 
AddressText LIKE ‘%HIGH%’ AND 
AddressText LIKE ‘%STREET%’ AND 
AddressText LIKE ‘%WESTVILLE%’ AND
AddressText LIKE ‘%WV17%’;

This query would return all rows from the index table that contain all of the search terms, along with the appropriate UPRNs.

The table below shows how the index table would be used in the above example to return relevant results:

UPRN
Address Text
Statuses (multiple fields)

894756389092

4 HIGH STREET WESTVILLE SUNNYTOWN WV17 7HL

Approved + PAF

894756389092

ROSE COTTAGE 4 HIGH STREET WESTVILLE SUNNYTOWN WV17 7HL

Alternative

894756389092

ROSE COTTAGE HIGH STREET WESTVILLE SUNNYTOWN WV17 7HL

Alternative

274859037849

FLAT 4 HIGHBURY COURT HIGH STREET WESTVILLE SUNNYTOWN WV17 7HL

Approved + PAF

482974769830

MAPS4U LTD HIGH STREET WESTVILLE SUNNYTOWN WV17 7HL

Approved

This result set can then be presented to the user, who can select the most appropriate record, which can then be retrieved in full using the UPRN.

Of course, in a practical implementation, the above query would need to be dynamically generated, with a separate condition added for each search term. This example is quite a strict search query that requires all search terms to be present. Many layers of complexity could be added to allow partial and ‘fuzzy’ matches, and to return confidence scores for example, but such enhancements are beyond the scope of this section.

Summary: Searching for addresses

This section introduces implementing address search functionality using AddressBase Premium products. The main points are summarised below:

  • A user front-end for an address search may contain a single, search engine style text box or multiple text boxes representing different parts of an address.

  • A typical address search function takes place in three stages:

    • A user enters search text.

    • A query is run, returning a set of possible matches.

    • The user selects the address of interest, and the full record is then returned.

  • With a structured search interface, the addresses can be queried directly by mapping the various address fields to the text boxes supplied.

  • For an unstructured (single text box) interface, it is necessary to create an index table with fully formatted address strings against each UPRN. Queries can then be run against this index table by splitting the user input into individual search terms and requiring them all to be present.

  • It is possible to filter results by status, for example, ‘approved’, ‘alternative’ and ‘historical’, as well as ‘postal’ or ‘non- postal’, etc.

  • Any search function should search all forms of an address (both Geographic and Delivery Point Addresses).

  • Careful consideration should be given to the use of ‘fuzzy’ search algorithms (such as using wildcard or sound-alike searches).

An example of a structured address component search.
Diagram Summarising the steps needed to successfully implement an address search operation.

Working with CSV data

Preparing the CSV data

The AddressBase Premium CSV and AddressBase Premium Islands CSV are provided with records for various tables incorporated into a single CSV. Depending on the size of the area of interest (AOI) or if you require a full supply of GB or Islands data, there may be multiple CSV files supplied. These CSV files need to be split into individual records and tables.

There are multiple methods for splitting AddressBase Premium CSV files by the record identifiers. The following sub-sections step you through using either Gawk or Python for splitting the data and appending the header file.

Both methods require the AddressBase Premium Header files that are available on the AddressBase Premium downloads page.

Gawk

The following instructions show you how to use Gawk to split the AddressBase Premium CSV files and append the Header files.

  1. Group all the AddressBase Premium CSV files into an empty folder. It is very important to ensure that the folder does not contain other CSV files. The folder must contain no spaces in its file directory path name, for example, C:\AddressBaseData\AddressBase_Premium.

  2. Download AddressBase Premium header files (zip) in the Header files zip section below.

  3. Extract the downloaded zip and you should have the following CSV files: Record_10_HEADER_Header.csv Record_11_STREET_Header.csv Record_15_STREETDESCRIPTOR_Header.csv Record_21_BLPU_Header.csv Record_23_XREF_Header.csv Record_24_LPI_Header.csv Record_28_DELIVERYPOINTADDRESS_Header.csv Record_29_METADATA_Header.csv Record_30_SUCCESSOR_Header.csv Record_31_ORGANISATION_Header.csv Record_32_CLASSIFICATION_Header.csv Record_99_TRAILER_Header.csv

  4. Place the extracted AddressBase Premium Header files into the folder with the CSV files (step 1).

  5. Go to the AddressBase repository on GitHub.

  6. Open the AddressBasePremium_GawkSplitScript.bat file and copy the contents to a text editor such as TextPad or NotePad++. Save this text file as a .bat file in the same folder as your AddressBase Premium data and Header files.

  7. In the same link in Step 5, download and extract the zip file called gawk-4.0.2-bin.zip.

  8. This will extract a file called Gawk.exe. Place this file in the same folder as your AddressBase Premium data and Header files.

  9. Double-click AddressBasePremium_GawkSplitScript.bat file and an MS-DOS window will appear. Once the process is complete, the window will close automatically, or you will have to press any key to continue.

    Running the .bat file creates temporary files and requires extra space in the location you are creating your files. These files can be much larger than the original CSV files. They are deleted once the process has finished, but the space is still required.

  10. Running this should create additional files which will have a similar naming convention to that of the Header files. These new files should have generated in the same location as the data and headers. For example, looking in the location there should now be an ID24_LPI_RECORDS as well as a Record_24_LPI_Header.csv.

Python

The following instructions show you how to use Python instead of Gawk to split the AddressBase Premium CSV files and append the Header files. These instructions are based on Python 2.7.

  1. Group the AddressBase Premium CSV files into an empty folder. It is very important to ensure that the folder does not contain other CSV files. The folder must contain no spaces in its file directory path name, for example, C:\AddressBaseData\AddressBase_Premium.

    You do not need to download the Header files if you are using Python to split the AddressBase Premium data.

  2. Go to the AddressBase repository on GitHub.

  3. Open the AddressBasePremium_RecordSplitter_v2_7.py file and copy the contents to a text editor such as TextPad or NotePad++. Save that text file as a .py file to the same folder as your AddressBase Premium data.

  4. Open a Command Prompt window by going to Windows Start > CMD prompt.

  5. Within the Command Prompt, type cd and the directory path where you just placed the AddressBasePremium_RecordSplitter_v2_7.py file, then hit Enter on your keyboard.

  6. Type the name AddressBasePremium_RecordSplitter_v2_7.py into the Command Prompt or select it using the Tab key, which will display each file within the file directory in turn. Once selected, hit the Enter key.

    Windows Command Prompt window
  7. The following message should be displayed: This program will split OS AddressBase Premium Zip CSV or extracted CSV files by record identifier into new CSV files. Please type in the full path to the directory of OS AddressBase zip files: Directory Path:

  8. Enter the full directory path to where you stored the AddressBase Premium data (for example, C:\AddressBaseData\AddressBase_Premium). Hit Enter on your keyboard. The process of splitting the files will then begin.

  9. When the file splitting process is complete, the following message will be displayed: The program will close in 10 seconds. You may still need to close the Command Prompt window afterwards by typing Exit and hitting Enter.

  10. If you navigate to the folder which contained the .py file and the AddressBase Premium CSV files, you should find new files which will have a similar naming convention to that of the Header files. These new files will contain all of your AddressBase Premium data split out by record type.

Loading CSV into GIS software

This section provides step-by-step instructions on how to load the CSV format of AddressBase Premium products into commonly used GIS software, including ArcGIS Pro, ArcGIS Desktop, MapInfo, QGIS and CadCorp SIS Desktop.

It is assumed that you will have followed the steps in Preparing the CSV data before you attempt to load the data. If this pre-processing is not carried out, there may be errors with loading.

ArcGIS Pro

There are two methods for loading AddressBase Premium CSV data into ArcGIS Pro. We will only step through the first method in this guide. If you need guidance on the second method, please refer to the Loading CSV into ArcGIS Pro instructions in Getting Started Guide with AddressBase products:

  • The first method uses the UK Data Loader published by ESRI, which loads the data into a File Geodatabase and automatically relates between the different tables. At the end of the process, you have a fully working dataset ready for use. The step-by-step instructions in this section use this method.

  • The second method must have the CSV data prepared as described in Preparing the CSV data. These files are imported into a project File Geodatabase within ArcGIS Pro (see the instructions in Getting Started with AddressBase products > Loading CSV into ArcGIS Pro. Only the Basic Land and Property Unit (BLPU) table and Streets table will contain geometry which can be mapped by adding XY data. All the other tables will have no geometry, but these tables can be linked together using the Relates function within ArcGIS Pro. Please refer to the AddressBase Premium structure and AddressBase Premium Islands structure <link> in the technical specifications for information on which table fields should be linked together.

Note - The following instructions are based on ArcGIS Pro version 2.3.3.

Note - These instructions assume that you have the full data Interoperability Extension installed and that it matches your ArcGIS Pro version.

  1. Launch ArcGIS Pro and create a new project.

  2. Select a location to save the project to, name the project and click OK. A new map project will launch with a default map backdrop supplied by ESRI. You can change this backdrop to another ESRI backdrop or use your own.

    ArcGIS Pro UI showing default background map

  3. Select the Catalog pane on the right-hand-side of the screen.

  4. Under the Project list, right-click Toolboxes and select Add Toolbox.

    ArcGIS Pro UI Catalog pane in showing Project >Toolboxes navigation item
  5. Navigate to where the UK Data Loader toolbox is held on your system, for example, C:\Data\ESRI_UK. You should obtain the latest version of the UK Data Loader toolbox from ESRI.

  6. Select the UK Data Loader toolbox (.tbx) and click OK.

    ArcGIS Pro Add Toolbox dialog
  7. The UK Data Loader Toolbox (UKDataLoader.tbx) will now appear in the Catalog list of available toolboxes. Expand it by clicking on the arrow to the left of the entry, then click the arrow again for the OS AddressBase entry.

  8. Double-click Load OS AddressBase Data script that should be listed.

    ArcGIS Pro Catalog pane in showing Toolboxes navigation item
  9. A new Geoprocessing window will appear. There are some mandatory blank fields which you need to complete before the script can be run. For the Source Folder, enter the directory path where AddressBase Premium data is located. Select your Address Base Product from the dropdown menu, then enter a location for the Destination Workspace and Log File Folder. Other fields are optional.

    ArcGIS Pro Geoprocessing window

  10. When the required fields are completed, click the Run button at the bottom of the Geoprocessing window.

    ArcGIS Pro UI showing loading OS AddressBase Data
  11. This can run for some time, depending upon the amount of data being processed. Wait until a message appears saying the files have been imported successfully.

  12. When the import has completed, click Add Data in the main menu, then navigate to the project File Geodatabase.

    ArcGIS Pro Add Data navigation button
  13. You will see that some of the feature classes have no geometry, whilst others do. Select those required and click OK. In the example below, ABP_TestADPRB refers to geometry created from the BLPU table and ABP_TestADPRS refers to geometry created from the Street table.

    ArcGIS Pro Add Data dialog
  14. The data will be added as new features classes in the Contents window. The feature classes containing geometry will be displayed against the map backdrop in the Map window.

    ArcGIS Pro UI showing feature classes containing geometry

You have now successfully loaded AddressBase Premium data into ArcGIS Pro.

ArcGIS Desktop

Note - The following instructions are based on ArcGIS Desktop version 10.

Note - When using CSV data in ArcGIS Desktop, it is necessary to split out the individual record types from the original single CSV file and to append column headings. Before following these instructions, ensure the splitting and headings have already been prepared as described in Preparing the CSV data.

  1. Start ArcCatalog as a separate program, or within ArcMap if you are using version 10.

    ArcGIS Desktop UI highlighting Catalog button
  2. Connect to the folder where the AddressBase Premium data is located (for example, C:\AddressBasePremium_Data):

    • Click File, or in version 10, select Folder Connections.

    • Click Connect Folder in the top ribbon or right-click on Folder Connections > Connect To Folder, then navigate to the folder containing the data.

      ArcGIS Desktop Catalog showing Connect To Folder action
    • From the main window, select the folder to connect to and click OK.

  3. The folder should now appear in the navigation window to the left of the screen, or within your Catalog window if you have opened it within ArcGIS Map.

    ArcGIS Desktop Catalog showing AddressBase split record files
  4. Create a File Geodatabase (.gdb) to store the address data. Using the file tree, go to Folder Connections and navigate to the directory where you wish to create the File Geodatabase, for example, C:\AddressBase_Geodatabase\AddressBase_Premium. This may need to be set up as a new connection.

  5. Right-click on the folder where you wish to store the File Geodatabase and select New > File Geodatabase.

  6. It will be created and named by default as New File Geodatabase. Rename it to a name of your choice.

    ArcGIS Desktop Catalog showing new File Geodatabase and split record files

  7. Right-click on your new File Geodatabase and select Import > Table (multiple)…

  8. For Input Table, navigate to the location of the CSV files that you wish to open, that is, the folder that contains the AddressBase Premium data split into individual files by record type.

  9. Select the files that you wish to add. Make sure you add the data files (which have the following naming convention: ID21_BLPU_Records.csv) and not the Header files (which have the following naming convention: Record_21_BLPU_Header.csv).

  10. Click Add.

  11. The Output Geodatabase option should automatically be populated by the location of the File Geodatabase that is to be updated; this should be the File Geodatabase you created in steps 4 to 6.

  12. Click OK, and once the process is complete click Close. Note: The process may take some time, depending on the number of files and the amount of data being added. The window may close before the operation is complete, so if you cannot see all of your expected files under your File Geodatabase, this may mean that the data is still being loaded.

    ArcGIS Desktop Catalog showing how to import AddressBase Premium records into the output Geodatabase
  13. To create a map of the locations of the AddressBase Premium records, they need to be geocoded. To do this, double-click on the Geodatabase that the data was just imported into. The BLPU table and the Streets table are the only tables in AddressBase Premium that carry geocoded information.

  14. Right-click on the Geodatabase table that was created from AddressBase Premium records with a record type of 21 or 15 (for example, ID21_BLPU_Records.csv or ID15_StreetDesc_Records.csv) and select Create Feature Class.

  15. In the Create Feature Class From XY Table dialog box, you can use the dropdowns to change the X Field to either X_COORDINATE or Longitude, and the Y Field to Y_COORDINATE or Latitude. Leave the Z Field as <None>.

    ArcGIS Desktop Catalog showing Create Feature Class From XY Table dialog
  16. For Input Coordinates, click on Coordinate System of Input Coordinates > Select and then navigate to Projected Co-ordinate Systems > National Grids > Europe > British National Grid. Note - If you selected X and Y as 'Longitude' and 'Latitude' in the step before, then you need to select 'ETRS89 [EPSG: 4258]' for the coordinate system instead.

  17. Double-click on the selected coordinate system, then click Apply and OK.

  18. Click on the folder icon alongside the Output field and navigate to the location where you wish to save the output shapefile or feature class (we recommend that this be within the Geodatabase you created in steps 4 to 6). Note - If you can’t see your Geodatabase, ensure the 'Save as type' box at the bottom of the dialog box is set to 'File and Personal Geodatabase feature classes'.

  19. Give the file a suitable name (for example, XYID21_BLPU_Records).

  20. Click Save, then leave the Configuration keyword as DEFAULTS and click OK. Note: You may need to right-click on the Personal Geodatabase where it was saved and select 'Refresh' in order to see your new feature class.

    ArcGIS Desktop Catalog showing BLPU File Geodatabase Feature Class

    Now the processing has been done, the data needs to be loaded into ArcMap so that the individual tables can be related.

  21. Start ArcMap if you have not been working within ArcMap version 10 already.

  22. Select File > Add Data…

  23. Navigate to the folder where the Geodatabase was created.

  24. Double-click on the Geodatabase and select all the files inside.

  25. Click Add.

    ArcGIS Desktop Add Data dialog
  26. You need to create the following joins / relates between the tables, as stated in the AddressBase Premium technical specification:

    • BLPU (ID21_BLPU_Records):

      • UPRN – Application Cross Reference (ID23_XREF_Records) UPRN

      • UPRN – LPI (ID24_LPI_Records) UPRN

      • UPRN – Delivery Point Address (ID28_DPA_Records) UPRN

      • UPRN – Organisation (ID31_Org_Records) UPRN

      • UPRN – Classification (ID32_Class_Records) UPRN

    • LPI (ID24_LPI_Records):

      • USRN – Street (ID11_Street_Records) USRN

    • Street (ID11_Street_Records):

      • USRN – Street Descriptor (ID15_StreetDesc_Records) USRN

  27. To do this, select the Source tab in the left-hand navigation window and right-click on the first table that you wish to relate to another. To create the relevant relates, use the following instructions:

    • Click Joins and Relates > Relate...

      ArcGIS Desktop Table Of Contents showing Relate action

    • From the first dropdown menu, select the attribute from the first table that will be used to create the relate between the two tables. (Apply the relationships as listed in step 26.)

    • From the second dropdown, select the table that is going to be related to. (Apply the relationships as listed in step 26.)

    • From the third dropdown, select the attribute from the table that is being related to. (Apply the relationships as listed in step 26.)

    • In the fourth dropdown, input a relevant name for the relate (for example, BLPU_to_LPI).

      ArcGIS Desktop Relate dialog
    • Click OK.

    • Repeat this process for all of the joins / relates listed in step 26.

  28. Once the data has been loaded into ArcMap, you may wish to display more relevant information in the Info tool than the Esri-defined Object ID. To change this, use the following instructions:

    • Double-click on the spatial dataset that you wish to change the Display Expression of.

    • Select the Display tab.

    • Change the Field to the desired field (for example, UPRN).

    • Click OK.

      ArcGIS Desktop Layer Properties dialog
MapInfo

Note - The following instructions are based on MapInfo Professional version 16.0.

Note - MapInfo has a size limit of 2 Gb on each table. This equates to a maximum number of approximately 4 million AddressBase Premium records.

Note - When using CSV data in MapInfo, it is not a critical requirement to have column headings. However, for ease of use, we recommend using the headings supplied by Ordnance Survey. Instructions on how to append the Header files can be found in Preparing the CSV data.

  1. Launch MapInfo.

  2. Click Home > Open Table and navigate to the folder that contains the AddressBase Premium data.

    MapInfo UI highlighting Home > Open Table navigation item
  3. In the Files of Type dropdown menu, select Comma delimited CSV (*.csv), then click on the AddressBase Premium data to be loaded. Click Open.

    MapInfo Open dialog
  4. In the next window, tick the box Use First Line for Column Titles and select Windows US & W. Europe (“ANSI”) from the dropdown menu for File Character Set. Click OK.

    MapInfo Comma Delimited CSV Information dialog

    Note: When adding data this way, the field type classifications and field sizes of each column automatically try to fit the type of data that MapInfo believes is contained within the column and the largest value of that classification found within that column. This means the classifications and field sizes of some attributes may not match the field types and sizes stated in the Technical Specification. The following six instructions detail how to change these columns to match those values.

  5. Select Home > Save > Save Copy As and select the AddressBase table that was loaded in. Click Save As… and name the table to be created, then click Save.

    MapInfo UI highlighting Home > Save > Save Copy As navigation item
  6. Open the table that was just created via Home > Open. Navigate to and select the copy of the table you just named. Click Open.

  7. Navigate to Table > Maintenance > Table > Modify Structure and select the table to be edited. Click OK.

    MapInfo UI highlighting Table > Maintenance > Table > Modify Structure navigation item
  8. Here, you can change the Type and Width of each attribute to match the ones stated in the AddressBase Premium technical specification.

  9. Type and Width should be changed for all attributes, apart from the following due to software-specific dependencies:

    • UPRN, which should be classified as Float

    • All attributes that have a Field Type of Date in the Technical Specification, which should be classified as Character with a length of 10

      MapInfo Modify Table Structure: blpu dialog
  10. After all changes have been made, click OK.

  11. To create a map of the location of the AddressBase Premium records, they need to be geocoded. Ensure the table of records that you wish to geocode is open, then navigate to Spatial > Create Points.

    MapInfo UI highlighting Spatial > Create Points navigation item
  12. Select the table you wish to geocode from the Create Points for Table dropdown menu.

  13. Expand the Get X Coordinates from Column dropdown menu and select either X_Coordinate or Longitude.

  14. Expand the Get Y Coordinates from Column dropdown menu and select either Y_Coordinate or Latitude.

  15. Click on the Projection button, then select the British Coordinate Systems option from the Category dropdown menu. Select British National Grid [EPSG: 27700], or if you selected Longitude and Latitude in the steps above, then you should select ETRS89 [EPSG: 4258].

    MapInfo Create Points dialog
  16. Click OK to close that window and OK again to close the next window.

  17. Finally, click Map > Map (New Map Window) to view the loaded geocoded points.

    MapInfo UI highlighting Map > Map navigation item
QGIS

Note - The following instructions are based on QGIS version 3.1.

  1. Launch QGIS and click Settings > Options.

  2. Select CRS from the left-hand menu and check the coordinate reference system (CRS) is set to British National Grid within the Default CRS for new projects section and the CRS for new layers section.

    QGIS Options | CRS dialog

    If the coordinate reference system is not already set, click the Select… button in the bottom right-hand corner of each section. A new dialog box will appear. In the Coordinate Reference System Selector dialog box, type 27700 into the Filter box to find and select British National Grid. Alternatively, if you intend to use Latitude and Longitude columns, select ETRS89 [EPSG: 4258]. Click OK to close the Coordinate Reference System Selector dialog box.

    QGIS Coordinate Reference System Selector
  3. Click OK to close the Options CRS dialog box.

  4. As AddressBase Premium is made up of many record types, we need to make joins to view all the available data. The joins you need to make are given in the AddressBase Premium technical specification, but for reference:

    • BLPU (ID21_BLPU_Records):

      • UPRN – Application Cross Reference (ID23_XREF_Records) UPRN

      • UPRN – LPI (ID24_LPI_Records) UPRN

      • UPRN – Delivery Point Address (ID28_DPA_Records) UPRN

      • UPRN – Organisation (ID31_Org_Records) UPRN

      • UPRN – Classification (ID32_Class_Records) UPRN

    • LPI (ID24_LPI_Records):

      • USRN – Street (ID11_Street_Records) USRN

    • Street (ID11_Street_Records):

      • USRN – Street Descriptor (ID15_StreetDesc_Records) USRN

  5. Back in the QGIS window, in the top ribbon, select Layer > Add Layer > Add Delimited Text Layer. The Data Source Manager – Delimited Text dialog box will appear.

    QGIS Data Source Manager | Delimited Text

    Note - The following steps explain how the joins are made for the first relationship given in the list above, that is, between the BLPU (ID21_BLPU_Records) and the Application Cross Reference (ID23_XREF_Records). This process will need to be repeated for all subsequent joins you make.

  6. Click the three dots button next to the file name box and locate the CSV file that was created in Preparing the CSV data, named ID21_BLPU_Records. Do not select any files with Record at the start of their name. Select the CSV file and click Open.

  7. In the Layer name box, you can keep the default layer name or change it to a new one.

  8. Ensure the First record has field names option is ticked.

  9. Ensure the Detect field types option is ticked.

  10. For Geometry Definition, select Point coordinates.

  11. You should now be able to select the X_Coordinate field for the X Field dropdown and the Y_Coordinate for the Y Field dropdown if this was not done automatically. Alternatively, if you wish to use the Latitude and Longitude columns, Longitude needs to be inserted into X field dropdown, and Latitude needs to be inserted into the Y field dropdown.

    QGIS Data Source Manager | Delimited Text
  12. Click Add. So far, you have loaded the BLPU record information.

  13. In the QGIS window, in the top ribbon, select Layer > Add Layer > Add Delimited Text Layer. The Data Source Manager – Delimited Text dialog box will appear.

    QGIS Data Source Manager | Delimited Text
  14. Click the three dots button next to the file name box and locate the CSV file that was created in Preparing the CSV data named ID23_ XREF_Records. Do not select any files with Record at the start of their name. Select the CSV file and click Open.

  15. In the Layer name box, you can keep the default layer name or change it to a new one.

  16. Ensure the First record has field names option is ticked.

  17. Ensure the Detect field types option is ticked.

  18. For Geometry definition, choose No Geometry (attribute only table).

  19. Click Add. This table will now be added to QGIS, but it will not be viewable as we have added it as an attribute table only.

  20. Next, right-click on your BLPU layer and select Properties.

  21. Go to the Joins tab found on the left-hand side.

    QGIS Layer Properties - ID21_BLPU_Records - Joins dialog
  22. Click the green plus button in the bottom left-hand corner.

  23. Select your Join layer. For this example, it is: Application Cross reference (ID23_XREF_RECORDS).

  24. Select the Join field. For all BLPU links, this will be the UPRN (see the joins listed in step 4).

  25. The Target field will also be the UPRN for this example.

  26. Click OK. You should now have a join listed in your Joins window.

  27. Click OK to return to your main QGIS mapping screen.

  28. If you now select one of your BLPU records in the main mapping window, you will see the BLPU attributes and the relevant Application Cross References for that record.

    QGIS Identify Results dialog
  29. You can now repeat steps 4 to 28 for all the additional joins (listed in step 4) you wish to make.

CadCorp

Loading CSV using CadCorp Address Loader

These instructions show you how to load AddressBase Premium CSV into a database using the CadCorp Address Loader. Note - The CadCorp Address Loader requires a separate license to the CadCorp SIS Desktop version.

  1. Open CadCorp Address Loader. A dialog box will appear:

    Cadcorp Address Loader > Select AddressBase data folder dialog
  2. Click the Browse button and navigate to the location of the AddressBase Premium CSV file (zipped or unzipped) that you want to load into CadCorp.

  3. In the Workspace Folder section, select a folder in which to store the log file and unzipped data. This can be a folder of your choosing or the application data folder.

  4. Click Next.

  5. Another dialog box will appear where you can select which address files to load. You can choose to load all or selected files.

    Cadcorp Address Loader > CSV files to load dialog
  6. Click Next.

  7. The next dialog box to appear will allow you to select a database into which you can save the AddressBase Premium data. Select your database of choice, then click Next.

    Cadcorp Address Loader > Select database dialog

    Note - The following instructions will relate to a PostGIS database.

  8. In the next dialog box, connect to an existing database by entering information into the following fields:

    • Host

    • Port Number

    • Database

    • User name

    • Password Note - These details can be found within the parameters of your database. It is not possible to create a database via this method, and one will have had to have been created prior to this stage.

      Cadcorp Address Loader > Connect to QGIS dialog
  9. Click Next.

  10. A schema dialog box will appear showing the tables that the data will be loaded into:

    Cadcorp Address Loader > AddressBase Premium Schema dialog
  11. At this stage, it is possible to create a gazetteer view or an interface table where a concatenated LPI address field can be built.

  12. Click Next in that dialog box, then Start in the following dialog box to begin loading the data:

    Cadcorp Address Loader > Load the data dialog
  13. Once finished, the tables will be loaded into the database.

At this stage, it is possible to load the spatial tables (BLPU and Streets) into CadCorp. You can join these tables together within your chosen database to then add all data into CadCorp. Please refer to the AddressBase Premium technical specification to gain a better understanding of the relationships between AddressBase Premium tables.

Loading CSV into CadCorp SIS Desktop via a database

Following on from the instructions in Loading CSV using CadCorp Address Loader, use the following instructions to load AddressBase Premium into CadCorp SIS Desktop via a database:

  1. Open a new or existing CadCorp SIS Desktop project.

  2. In the top ribbon, select Add Overlay.

    CadCorp SIS Desktop Add Overlay button
  3. On the left, select Databases, then select your database of choice from the list on the right (Note: A PostGIS database will be referred to in the instructions from this point on).

    CadCorp SIS Desktop Overlay Types dialog
  4. Click Next.

  5. Connect to your existing database. To connect to a saved database, select a database under Saved connections. Alternatively, you can manually enter the database details. Click Next.

    CadCorp SIS Desktop PostgreSQL Connection dialog
  6. In the next dialog box, select the type of database connection you want to make. The Simple connection option is effective in this instance. Click Next.

    CadCorp SIS Desktop Database connection type dialog
  7. Select the tables to load into CadCorp, then click Finish.

Loading CSV into a database

This section provides step-by-step instructions on how to load the CSV format of AddressBase Premium products into some commonly used databases, including PostgreSQL, Oracle and Microsoft SQL Server databases.

Considerations

Software dependencies

It should be noted that ArcMap, ArcGIS Desktop and ArcGIS Server software do not support the BIGINT/NUMBER data type as an Object ID. Bear this in mind if the expectation is to use this data type directly with these ESRI products. An alternative method to facilitate using ESRI software is to store this data as a string and add a new Serial ID to act as the Object ID.

If you are loading AddressBase data directly into a database, you may need to increase the column length to accommodate language characters such as '^'. Some databases treat this as an additional character and, therefore, if you define the column length according to our specification, there is a chance the load may fail. Please bear in mind such adjustments may be required depending on the database you use to load the data.

UPRN deletions

It is important to note that Primary Keys on all tables (for example, UPRN on the BLPU table) are valid upon a data load. If a Delete is issued for a Primary Key, this doesn’t mean that Primary Key will not reappear in subsequent supplies.

There are a number of reasons this may happen:

  • The record has moved in location more than once, moving it out of your AOI (therefore, the record is deleted) but then back into your AOI in the future. This would also occur if you altered your AOI.

  • A record has failed data validation upon a change being made. This can result dependent on the change being made in the record being deleted and then reintroduced when the error is fixed by the data supplier.

If a unique property reference number (UPRN) is deleted, it will not be reallocated to a different property, and it therefore remains the unique identifier for a property.

Loading CSV data instructions

PostgreSQL

The following instructions describe how to load AddressBase Premium into a PostgreSQL database using the text files created using the CSV file merge utility. The instructions are based on PostgreSQL version 1.12.3 and assume that you have set-up your database with the PostGIS spatial extension. It is recommended that you have a basic understanding of database terminology before following these instructions.

  1. Prepare the text files as described in Preparing the CSV data.

  2. Check that there are no carriage returns (extra rows) at the end of the CSV output file as this will result in errors. To check this, open the CSV file and hit End on your keyboard. Your cursor should now be at the end of the last line, and not on any extra line below. If it is on the line below, hit Delete to remove the extra empty row.

  3. Open the PGAdmin tool (this can be found on the Windows Start Menu > pgAdmin).

  4. On the left-hand side, under Browser, you have the option to connect to either your existing databases or a new one. To connect to a new database, right-click on Databases, then select Create > Database…. It is recommended that the encoding is set to UTF-8.

  5. Open the public schema (although in a production environment, it is advised to use a different schema) and create the tables using the following steps:

    • Open the SQL query tool.

    • Download the SQL file in the GitHub AddressBase_Premium_and_Islands folder.

    • This SQL file can be opened in a text editor, and the SQL scripts within can be copied and pasted into the SQL query tool within PostgreSQL. To open a new SQL file, select Tools in the ribbon, then select Query Tool from the dropdown.

      pgAdmin 4 UI highlighting Tools > Query Tool navigation item
  6. Copy and paste the SQL code from the GitHub link given in step 5 into the SQL Query Tool (as shown in the following screenshot).

    pgAdmin 4 showing PostgreSQL script in the Query Tool
  7. The following tables should be created (you can alter table names as you wish):

    • BLPU

    • Classification

    • Cross reference

    • Delivery Point Address

    • LPI

    • Organisation

    • Streets

    • Street Descriptor

    • Successor Records

  8. Once the table has been created, the data can be loaded into each table using SQL COPY. Adding the CSV option as the first line contains a header record for each table. Note - The path and file name may need to be changed to reflect your data:

    COPY abp_blpu FROM 'C:/Address/ID21_BLPU_Records.csv' DELIMITER ',' CSV HEADER; 
    COPY abp_delivery_point FROM 'C:/Address/ID28_DPA_Records.csv' DELIMITER ',' CSV HEADER;
    COPY abp_lpi FROM 'C:/Address/ID24_LPI_Records.csv' DELIMITER ',' CSV HEADER;
    COPY abp_crossref FROM 'C:/Address/ID23_XREF_Records.csv' DELIMITER ',' CSV HEADER; 
    COPY abp_classification FROM 'C:/Address/ID32_Class_Records.csv' DELIMITER ',' CSV HEADER;
    COPY abp_street FROM 'C:/Address/ID11_Street_Records.csv' DELIMITER ',' CSV HEADER; 
    COPY abp_street_descriptor FROM 'C:/Address/ID15_StreetDesc_Records.csv' DELIMITER ',' CSV HEADER;
    COPY abp_organisation FROM 'C:/Address/ID31_Org_Records.csv' DELIMITER ',' CSV HEADER; 
    COPY abp_successor FROM 'C:/Address/ID30_Successor_Records.csv' DELIMITER ',' CSV HEADER;
  9. Once loaded, you may want to add Primary and Foreign Keys to the data. These can only be added on columns where the data values are unique. Where there are no unique data values, an index may be added which will aid searching. For the BLPU table, the UPRN provides a unique value. Primary Keys are added using the following steps:

    • Right-click on the table name and select Properties.

    • Select the Constraints tab.

    • Click the + symbol to add a new Primary Key.

    • Click the edit button .

    • Enter a name to call the key under the General tab (for example, Key1).

    • Under the Definition tab, select UPRN or any other unique value from the dropdown under columns.

    • Click Save.

  10. Repeat the procedure for the Streets table and USRN. However, in the other tables these columns may contain duplicate values. In this case, use the table key (for example, LPI_Key as the primary identifier). Alternative Object Identifiers (OID) can be added to each table (these are also required to use the data in some GIS, including QGIS and MapInfo.) The following SQL can be used for this:

    ALTER TABLE insert_table_name SET WITH OIDS

  11. To help performance when querying across multiple tables, a Foreign Key may be added. A list of the Foreign Keys with AddressBase Premium can be found in the Model overview for GML section of the AddressBase Premium technical specification. However, as with a Primary Key, only unique data columns can be used.

    • Right-click on the table name and select Properties.

    • Select the Constraints tab.

    • Click the + symbol to add a new Foreign Key.

    • Click the edit button .

    • Enter a name to call the key under the General tab (for example, Key1).

    • Under the Definition tab, select UPRN or any other unique value from the dropdown under columns.

    • Click Save.

  12. You can also index the data by using the following steps:

    • Right-click on the table name and select Create > Index.

    • Under the General tab, enter a name (for example, Idx1).

    • Under Definition tab > Columns, click the + symbol.

    • Select the UPRN for example, or any other unique value.

    • Click Save.

Converting coordinates to geometry

A PostGIS extension is required to create geometries. The AddressBase Premium products contain both British National Grid (BNG) and ETRS89 coordinates. The SQL below shows how to create a column for BNG, but it can be altered to utilise the ETRS89 data.

  1. Add a geometry column to make the data usable in a GIS:

    UPDATE public.abp_blpu SET geom = ST_GeomFromText(‘POINT(‘ || x_coordinate || ‘ ‘ || y_coordinate || ‘)’, 27700 )

  2. Load the data into your new geometry column:

    UPDATE public.abp_blpu SET geom = ST_GeomFromText(‘POINT(‘ || x_coordinate || ‘ ‘ || y_coordinate || ‘)’, 27700 )

    This sets the geom column in the BLPU table to equal the values from the X_coordinate and Y_coordinate columns, with the spatial reference defined as 27700.

  3. Create a spatial index on the data using:

    CREATE INDEX idx_abp_geom ON public.abp_blpu USING gist(geom) 

    This adds the index name idx_abp_geom to the same table on the geom column.

Oracle

Note - The following instructions assume a basic knowledge of Oracle databases and SQLLDR (the package used to load CSV files into the database). Other options are available for loading data into Oracle databases.

Note - When using SQLLDR, it is not necessary to merge all the AddressBase files into a single file as it can load the data directly from the provided file as long as it has been unzipped first.

Note - The following steps describe one method for loading a full supply of the data. Sections of text within <…> (a pair of less than and greater than symbols) denote where changes will need to be made to accommodate local file naming.

  1. Copy the data files from the disk to an appropriate location. It is worth noting that the files will need to be unzipped; therefore, you will need in the region of 40 Gb of free space to load AddressBase Premium and 1 Gb of free space to load AddressBase Premium Islands.

  2. Once the data is copied, the next stage is to unzip the *.zip files to extract the *.csv files. This can be done using a package such as Winzip or 7Zip. Please see the Data supply page for more information.

  3. Now that all the files are unzipped, the latter stages will be easier if you create a file listing all the CSV files to be loaded. This can be done using a batch file that writes all the files out to a text file. Copy the following into a text editor and save it as a .bat file in the same directory as the AddressBase Premium data:

    dir *.csv /b/s >filelisting.txt pause

    This file will form the basis for loading the control file in a later step.

  4. Go to the OS GitHub repository.

  5. Open the AddressBase_Premium_and_Islands folder. Open the file ending CreateTables.sql in a text editor.

  6. Within that SQL there are references to <TablespaceName>, which need to be changed to the tablespace name that you are working in. When these are changed, copy and paste the SQL into Oracle to create the tables.

  7. Next, a SQLLDR control file needs to be created. An example of one of these files is Oracle_AddressBasePremium_Control.ctl, provided in the AddressBase_Premium_and_Islands folder in the OS GitHub repository linked in step 4. Open this file in a text editor.

  8. Populate the INFILE lines with the file listing that was created in step 3; use one INFILE command for each file. This tells the process to open each of the files and carry out the other tasks listed below it.

  9. The rest of the file tells the tool how to interpret the files that it is reading in. The INTO statement at the top of each of the tables tests the first column (01) of the row in the file that it is looking at. If it meets the criteria, the structure of the table that the line is to be loaded into is described below it. Save the completed file with the extension *.ctl.

  10. Once this file is created, it can be called from a .bat file to run it on the box that holds the database rather than a remote machine. If you wish to run it from a remote machine, contact your Oracle Administrator who will be able to advise on the best way to do this within your environment. The contents of the .bat file should be similar to the following:

    @sqlldr <username>/<password>@<service name> control= <name of ctl file created previously> Pause

  11. When the .bat file has been run, the data is loaded. Errors with the load and/or any records that do not meet the expected structure are recorded in the and *.log and *.bad files, respectively. These are written out to the same drive location as the control file that is being used to load the data. It is strongly recommended that the log file is checked once the load is completed to verify that all of the data has loaded correctly before continuing.

  12. After loading, the indexes need to be built in order to be able to carry out spatial queries and other queries where the relationship between the tables need to be built. For example, in order to return all the Delivery Point Addresses within a county, there needs to be a spatial index on the BLPU table which contains the geometry, as well as the UPRN in both the BLPU and Delivery Point Address tables. The SQL statements to create the indexes can be found in the GitHub repository link that was referenced in step 4.

  13. Again, you can copy and paste the SQL statements from a text editor into Oracle in order to create the rest of the indexes. The table name provided may be different to yours and therefore might need changing before use.

  14. Once the indexes are complete, the data loading process is complete and the data is ready to use.

Microsoft SQL Server

Note - The following instructions assume that you have basic knowledge of Microsoft SQL Server, and that the CSV data is already prepared as described in Preparing the CSV data.

Note - There are many ways to load AddressBase products into Microsoft SQL Server; this is just one suggested method for guidance.

  1. Open the SQL Server Management Studio (SSMS).

  2. Right-click on the database you are loading into and select Properties.

  3. Select Options on the left-hand side menu.

  4. Expand the dropdown box for Recovery model and select Bulk-logged. This minimises the logfile size, otherwise the default logging for Microsoft SQL Server can cause logfiles to grow over 20 Gb which, in turn, can cause issues with loading. Click OK.

    SQL Server Management Studio Database Properties dialog
  5. Open the SQL Server Management Studio (SSMS) and right-click your database from the left-hand panel.

  6. Navigate to Tasks and click Import Data. This will open the SQL Server Import and Export Wizard.

  7. Click Next.

  8. On the next screen, change your Data Source to Flat File Source.

  9. Use the Browse button to select your CSV file. Each table needs to be added separately (for example, ID21_BLPU_Records.csv). If you cannot see your files, ensure that the bottom right dropdown box has 'CSV files (*.csv)' selected.

  10. Click Open.

  11. Your CSV file should already have a header row from Preparing the CSV data. Ensure that Column names in the first data row is ticked.

  12. Check that the Text Qualifier is set to a double quote (“). This ensures the quotations in the raw data supply are removed upon loading, but that the data remains intact.

  13. On the left-hand side of this screen, select Columns and check that the Column delimiter is set to Comma.

  14. On the left-hand side of the screen, select Advanced.

  15. For each column of data that you are loading, you will need to specify a DataType. The Microsoft SQL Server loader defaults each column to a String. The correct Data Types for each column are given in AddressBase Premium structure section of the technical specification.

  16. Once you have changed the column types to match the technical specification, click Next.

  17. Check that your table is going to be imported into the correct database and click Next.

  18. On this screen, you can edit the default table name that Microsoft SQL Server has chosen by clicking in the destination box. For example, for AddressBase Premium, renaming to [dbo].[BLPU_TABLE].

  19. Select Edit Mappings in the bottom right-hand corner.

  20. In the new window, you must remove the tick in the checkbox against the column which needs to be the Primary Key of the table. The Primary Keys for each table can be found in the in AddressBase Premium structure section of the technical specification.

  21. Click Next. On this screen, you can check that the Source column and Destination column are correct.

  22. Click Next. A summary of your import will appear. If you want to continue, click Finish.

  23. A report will be generated as your data is imported. Success should appear at the top once complete.

  24. You may need to right-click on your database and click Refresh to see your new table listed.

Setting Primary and Foreign Keys

To create a Primary Key field you can run an SQL statement, such as the following example.

Note - the columns you are creating these constraints on cannot be null or allowed to be null.

Primary Key

alter table dbo.ID21_BLPU_Records add primary key (UPRN);

Foreign Key

alter table dbo.ID32_Class_Records add foreign key (UPRN);

Creating the point geometry

You can also create point geometry using the X and Y coordinates or the Latitude and Longitude coordinate values. This is achieved by running the following SQL statement:

alter table dbo.ID21_BLPU_Records
add geometry_column as geometry::Point([X_Coordinate],[Y_Coordinate], 27700);

Note - This is using British National Grid coordinates, with 27700 representing the spatial reference of the data. To use the Latitude and Longitude coordinate, the spatial reference should be set to 4258 for ETRS89.

Working with COU data

Introduction to COU

AddressBase Premium and AddressBase Premium Islands are complex relational datasets that are used by a variety of customers who use a variety of methods and software to manage the data. Some of the software solutions take a considerable length of time to load and manage the data. A change-only update (COU) is a simple and effective way to keep data holdings up to date without spending considerable time loading and managing a full supply every time the data is refreshed.

A COU means you will only be supplied with the features which have changed since your last supply. The following sub-sections provide guidance on how to manage a COU supply of AddressBase Premium data.

Note - If you receive a tile supply, you will receive Change Chunks. This means if a record within your tile has changed, then all of the records in that tile will be provided to you as inserts, and no updates or deletes will be issued. This is not applicable for AddressBase Premium Islands as a tile supply is not available for that product.

Types of change within a COU

At a high-level, there are three types of change found within a COU:

  1. Deletes (CHANGE_TYPE ‘D’) are objects that have ceased to exist in your area of interest (AOI) since the last product refresh.

  2. Inserts (CHANGE_TYPE ‘I’) are objects that have been newly inserted into your AOI since the last product refresh.

  3. Updates (CHANGE_TYPE ‘U’) are objects that have been updated in your AOI since the last product refresh.

High-level COU implementation model

The diagram below outlines how to implement the AddressBase Premium COU within a database. It also shows the necessary primary keys needed to implement the COU for each relational table.

High-level COU implementation model – with archiving

Before a COU is applied, there may be a business requirement to archive existing address records. The diagram below outlines how to implement the AddressBase Premium COU within a database, shows the necessary primary keys needed to implement the COU for each relational table, and how to archive existing records.

Applying COU to tables

Changes to the BLPU table

Within the Basic Land and Property Unit (BLPU) table, there will not be any records with the same UPRN. This can be tested by checking the number of records that have the same UPRN. The following SQL code would notify you of any duplicates:

This query should return 0 rows, and this confirms there are no duplicates. As there are no duplicate records, the UPRN can be used to apply the COU. Once confirmed, the following steps can be taken to apply the COU (without archiving):

Initially delete the existing records that will be updated and delete

Insert the new updated records and the newly inserted records

Some of the COU records that are change type ‘U’ (updates) may change the Logical Status Code from ‘1’ to ‘8’, meaning that this address has become ‘Historical’. This means that the BLPU table intrinsically archives historical records.

Where there is a business requirement to keep the records that are being updated and deleted in a separate archive table, the following SQL will create an Archive Table and populate it with records that are being Updated and Deleted from the live BLPU table.

The following command creates an archive table of the records that are being updated and deleted from the existing BLPU table: If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE

The following command then deletes the records from the existing table which are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the live BLPU table:

Changes to the Classification table

Because there is a one-to-many relationship between the BLPU table and the Classification table, there can be records in the Classification table that share a UPRN. To apply COU to the correct record, users should use the Class_Key to ensure that the correct classification record is updated.

The table below provides examples of using the Class_Key to apply a COU to one of two classification records that share a UPRN in a Classification table.

Classification
Record 1
Record 2
Classification
Updated record
Record 2
Classification
COU record

The example in classification code table above illustrates a scenario when a user would need to choose between two classification records that have the same UPRN. In this case, the Class_Key has been used to apply the COU to Record 2.

To achieve this outcome (without archiving the ‘old’ Record 2), we can use the following SQL commands to apply the COU:

Initially delete the existing records that are being updated and deleted:

Insert the new update records and the new insert records:

One thing you may want to consider is keeping an archive of the updated and deleted classification records. For example, this might be useful to understand when an address has changed use from residential to commercial.

To achieve this outcome for change types ‘U’ (updates) or ‘D’ (deletes) (with archiving), we can use the following SQL commands to apply the COU:

The following command creates an archive table of the records that are being updated and deleted from the existing Classification table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the Classification table:

The following table shows classification and archive record details:

Classification
Archive record

When the updated or deleted records are moved into an archive table, the end date may not always be populated, as seen in Table 4. If this is the case, users may wish to consider adding an end_date (which could be based on the epoch date that it was archived) as shown in Table 5. Adding an end date to an updated or deleted record will enable querying for a particular timeframe.

The following table shows classification and archive record with an end date details:

Classification
Archive record

Changes to the Organisation table

The numerous one-to-many relationships between the BLPU table and the Organisation table mean there can be records in the Organisation table that share a UPRN. To apply COU to the correct record, we should use the Org_Key to ensure that the correct classification record is updated.

To apply the COU to the Organisation table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new updated records and the newly inserted records:

As with the Classification table, the changes in Organisation name may be useful to keep as archives as doing so will allow a business to find previous organisations and understand when name changes were made.

To apply the COU to the Organisation table (with archiving), the following code can be used:

The following command creates an archive table of the records that are being updated and deleted from the existing Organisation table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the Organisation table:

Changes to the Delivery Point Address table

Within the Delivery Point Address table, there will not be any records with the same Unique Delivery Point Reference Number (UDPRN). This can be tested by checking the number of records that have the same UDPRN. The following SQL code would notify you of any duplicates:

This query should return 0 rows, and this confirms that there are no duplicates. As there are no duplicate records, we can therefore use the UDPRN to apply the COU.

To apply the COU to the Delivery Point Address table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new updated records and the new inserted records:

The Delivery Point Address table does not have the ability to hold historical records as it is the current view of the Royal Mail Delivery Point Address File (PAF). Therefore, in order to capture the historical records, you will need to create an archive table that is populated when records are either deleted or updated. The following code will create the archive records:

To apply the COU to the Delivery Point Address table (with archiving), the following code can be used:

The following command creates an archive table of the records that are being updated and deleted from the existing Delivery Point Address table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the Delivery Point Address table:

Changes to the Land and Property Identifier table

The numerous one-to-many relationships between the BLPU table and the Land and Property Identifier (LPI) table mean there can be records in the LPI table that share a UPRN. To apply the COU to the correct record, we should use the LPI_Key to ensure that the correct classification record is updated.

To apply the COU to the LPI table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new updated records and the new inserted records:

As with the BLPU table, some of the COU records that are change type ‘U’ (updates) may change the Logical Status Code from ‘1’ to ‘8’, meaning that this address has become ‘historical’. This means that the LPI table intrinsically archives the historical record.

Where there is a business requirement to keep the records that are being updated and deleted in a separate archive table, the following SQL will create an archive table and populate it with records that are being updated and deleted from the live LPI table.

To apply the COU to the LPI table (with archiving), the following code can be used:

The following command creates an archive table of the records that are being updated and deleted from the existing LPI table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table which are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the LPI table:

The following table shows an original LPI record next to a COU record. In this example, the record is being made historical (logical status code: 8) and therefore has a populated end date attribute.

LPI
Record
COU Record

Changes to the Street table

Within the Street table, there will not be any records with the same Unique Street Reference Number (USRN). This can be tested by checking the number of records that have the same USRN. The following SQL code would notify you of any duplicates:

This query should return 0 rows, and this confirms there are no duplicates. As there are no duplicate records, we can use the USRN to apply the COU.

To apply the COU to the Street table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new updated records and the new inserted records:

The Street table does not have the ability to hold historical records as it does not have a Logical Status Code attribute. Therefore, to capture the historical records, you will need to create an archive table that is populated when records are either deleted or updated.

To apply the COU to the Street table (with archiving), the following code can be used:

The following command creates an archive table of the records that are being updated and deleted from the existing Street table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletions:

#The following command then inserts the new insert records and the new updated records into the Street table:

Changes to the Street Descriptor table

Within the Street Descriptor table, there will not be any records with the same USRN and the same language. This is called a compound key, rather than having a single column as a Primary Key. This can be tested by checking the number of records that have the same USRN. The following SQL code will notify you of any duplicates:

This query should return 0 rows, and this confirms there are no duplicates using the compound key. As there are no duplicate records, we can therefore use the USRN and LANGUAGE to apply the COU.

To apply the COU to the LPI table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new updated records and the new inserted records:

The Street Descriptor table does not have the ability to hold historical records as it does not have a Logical Status Code attribute. Therefore, to capture the historical records, you will need to create an archive table that is populated when records are either deleted or updated.

To apply the COU to the Street Descriptor table (with archiving), the following code can be used:

The following command creates an archive table of the records that are being updated and deleted from the existing Street table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletions:

The following command then inserts the new insert records and the new updated records into the Street table:

Changes to the Cross Reference table

Within the Cross Reference table, there will not be any records with the same XREF_KEY. This can be tested by checking the number of records that have the same XREF_KEY. The following SQL code will notify you of any duplicates:

The query above should return 0 rows and therefore confirms that there are no duplicates. As there are no duplicates, we can therefore use the XREF_KEY to apply the COU.

To apply the COU to the Cross Reference Table (without archiving), the following code can be used:

Initially delete the existing records that will be updated and deleted:

Insert the new records and the updated records:

The Cross Reference table does not have the ability to hold historical records as it does not have a logical status code attribute. Therefore, to capture the historical records, you will need to create an archive table which is populated when records are either deleted or updated.

To apply the COU to the Cross Reference table (with archiving), the following code can be used:

The following command creates an archive table of records which are being updated and deleted from the existing Cross Reference table. If this table already exists, you can simply use INSERT INTO rather than CREATE TABLE:

The following command then deletes the records from the existing table that are either updates or deletes:

The following command then inserts the new insert records and the updated records:

SELECT uprn, COUNT(uprn) AS NumOccurrences FROM abp_blpu
GROUP BY uprn
HAVING ( COUNT(uprn) > 1 );
DELETE FROM abp_blpu WHERE uprn IN (SELECT distinct uprn FROM abp_blpu_cou WHERE change_type!= ‘I’);
INSERT INTO abp_blpu SELECT * FROM abp_blpu_cou WHERE change_type != ‘D’;
CREATE TABLE abp_blpu_archive AS SELECT * FROM abp_blpu WHERE uprn IN (SELECT distinct uprn FROM abp_blpu_cou WHERE change_type != ‘I’);
DELETE FROM abp_blpu WHERE uprn IN (SELECT distinct uprn FROM abp_blpu_cou WHERE change_type!= ‘I’);
INSERT INTO abp_blpu SELECT * FROM abp_blpu_cou WHERE change_type != ‘D’;

Record identifier

32

32

Record identifier

32

32

Record identifier

32

Change type

I

I

Change type

U

I

Change type

U

Pro order

922371

922372

Pro order

922500

922372

Pro order

922500

UPRN

100062645004

100062645004

UPRN

100062645004

100062645004

UPRN

100062645004

Class key

1715C000002050

1715C802457028

Class key

1715C000002881

1715C802457028

Class key

1715C000002881

Classification code

U

CS

Classification code

CR08

CS

Classification code

CR08

Class scheme

AddressBase Premium classification scheme

VOA Primary Description

Class scheme

AddressBase Premium classification scheme

VOA Primary Description

Class scheme

AddressBase Premium classification scheme

Scheme version

1.0.0

1.0.0

Scheme version

1.0.0

1.0.0

Scheme version

1.0.0

Start date

2011-12-01

2010-03-16

Start date

2011-12-01

2010-01-16

Start date

2011-12-01

End date

N/A

N/A

End date

N/A

N/A

End date

N/A

Last update

2011-12-01

2010-08-12

Last update date

2013-05-04

2010-08-12

Last update

2013-05-04

Entry date

2011-12-01

2010-03-16

Entry date

2011-12-01

2010-03-16

Entry date

2011-12-01

DELETE FROM abp_classification WHERE class_key IN (SELECT distinct class_key FROM abp_ classification_cou WHERE change_type != ‘I’);
INSERT INTO abp_classification SELECT * FROM abp_classification_cou WHERE change_type != ‘D’;
CREATE TABLE abp_classification_archive AS SELECT * FROM abp_classification WHERE class_key IN (SELECT distinct class_key FROM abp_classification_cou WHERE change_type != ‘I’);
DELETE FROM abp_classification WHERE class_key IN (SELECT distinct class_key FROM aabp_ classification_cou WHERE change_type != ‘I’);
INSERT INTO abp_classification SELECT * FROM abp_classification_cou WHERE change_type != ‘D’;

Record identifier

32

Change type

I

Pro order

706838

UPRN

116000665

Class key

9055C000081107

Classification code

CL10RE

Class scheme

AddressBase Premium classification scheme

Scheme version

1.0.0

Start date

2011-12-01

End date

N/A

Last update date

2011-12-01

Entry date

2011-12-01

Record identifier

32

Change type

I

Pro order

706838

UPRN

116000665

Class key

9055C000081107

Classification code

CL10RE

Class scheme

AddressBase Premium classification scheme

Scheme version

1.0.0

Start date

2011-12-01

End date

2013-05-04

Last update date

2011-12-01

Entry date

2011-12-01

DELETE FROM abp_organisation WHERE org_key IN (SELECT distinct org_key FROM abp_organisation_ cou WHERE change_type != ‘I’);
INSERT INTO abp_organisation SELECT * FROM abp_organisation_cou WHERE change_type != ‘D’;
CREATE TABLE abp_organisation_archive AS SELECT * FROM abp_organisation WHERE org_key IN (SELECT distinct org_key FROM abp_organisation_cou WHERE change_type != ‘I’);
DELETE FROM abp_organisation WHERE org_key IN (SELECT distinct org_key FROM aabp_organisation_ cou WHERE change_type != ‘I’);
INSERT INTO abp_organisation SELECT * FROM abp_organisation_cou WHERE change_type != ‘D’;
SELECT udprn, COUNT(udprn) AS NumOccurrences FROM abp_delivery_point GROUP BY udprn
HAVING (COUNT(udprn) > 1 );
DELETE FROM abp_delivery_point WHERE udprn IN (SELECT distinct udprn FROM abp_delivery_point_cou WHERE change_type != ‘I’);
INSERT INTO abp_delivery_point SELECT * FROM abp_delivery_point_cou WHERE change_type != ‘D’;
CREATE TABLE abp_delivery_point_archive AS SELECT * FROM abp_delivery_point WHERE udprn IN (SELECT distinct udprn FROM abp_delivery_point_cou
WHERE change_type != ‘I’);
DELETE FROM abp_delivery_point WHERE udprn IN (SELECT distinct udprn FROM abp_delivery_point_cou WHERE change_type != ‘I’);
INSERT INTO abp_delivery_point SELECT * FROM abp_delivery_point_cou WHERE change_type != ‘D’;
DELETE FROM abp_lpi WHERE lpi_key IN (SELECT distinct lpi_key FROM abp_lpi_cou WHERE change_type != ‘I’);
INSERT INTO abp_lpi SELECT * FROM abp_lpi_cou WHERE change_type != ‘D’;
CREATE TABLE abp_lpi_archive AS SELECT * FROM abp_lpi WHERE lpi_key IN (SELECT distinct lpi_key FROM abp_ lpi_cou WHERE change_type != ‘I’);
DELETE FROM abp_lpi WHERE lpi_key IN (SELECT distinct lpi_key FROM abp_lpi_cou WHERE change_type != ‘I’);
INSERT INTO abp_lpi SELECT * FROM abp_lpi_cou WHERE change_type != ‘D’;

Record identifier

24

24

Change type

I

U

Pro order

478857

478857

UPRN

100000527208

100000527208

LPI key

4520L000005174

4520L000005174

Language

ENG

ENG

Logical status

1

8

Start date

‘2001-03-23’

‘2001-03-23’

End date

‘2013-04-24’

Last update date

‘2010-05-21’

‘2013-04-24’

Entry date

‘2001-03-23’

‘2001-03-23’

SAO start number

SAO start suffix

SAO end number

SAO end suffix

SAO text

PAO start number

PAO start suffix

PAO end number

PAO end suffix

PAO text

‘SITE OF FORMER MISER NETHAULERS’

‘FORMER SITE OF MISER NETHAULERS’

USRN

36815950

36815950

USRN match indicator

1

1

Area name

Level

Official flag

SELECT usrn, COUNT(usrn) AS NumOccurrences FROM abp_street
GROUP BY usrn
HAVING ( COUNT(usrn) > 1 );
DELETE FROM abp_street WHERE usrn IN (SELECT distinct usrn FROM abp_street_cou WHERE change_type != ‘I’);
INSERT INTO abp_street SELECT * FROM abp_street_cou WHERE change_type != ‘D’;
CREATE TABLE abp_street_archive AS SELECT * FROM abp_street WHERE usrn IN (SELECT distinct usrn FROM abp_ street_cou WHERE change_type != ‘I’);
DELETE FROM abp_street WHERE usrn IN (SELECT distinct usrn FROM abp_street_cou WHERE change_type != ‘I’);
INSERT INTO abp_street SELECT * FROM abp_street_cou WHERE change_type != ‘D’;
SELECT usrn, language, COUNT(usrn) AS NumOccurrences FROM abp_street_descriptor
GROUP BY usrn, language HAVING ( COUNT(usrn) > 1 );
DELETE FROM abp_street_descriptor WHERE EXISTS (SELECT 1 FROM abp_street_descriptor_cou WHERE abp_street_descriptor_cou.usrn = abp_street_descriptor.usrn AND abp_street_descriptor_cou.language = abp_street_descriptor.language
AND abp_street_descriptor_cou.change_type != ‘I’ ) 
INSERT INTO abp_street_descriptor SELECT * FROM abp_street_descriptor_cou WHERE change_type != ‘D’;
CREATE TABLE abp_street_descriptor_archive AS SELECT * FROM abp_street_descriptor WHERE EXISTS (SELECT 1 FROM abp_street_descriptor_cou
WHERE abp_street_descriptor_cou.usrn = abp_street_descriptor.usrn AND abp_street_descriptor_cou.language = abp_street_descriptor.language AND abp_street_descriptor_cou.change_type != ‘I’ )
DELETE FROM abp_street_descriptor WHERE usrn IN (SELECT distinct usrn FROM abp_street_descriptor_cou WHERE change_type != ‘I’);
INSERT INTO abp_street_descriptor SELECT * FROM abp_street_descriptor_cou WHERE change_type != ‘D’;
SELECT XREF_KEY, COUNT(XREF_KEY) AS NumOccurences FROM ABP_XREF
GROUP BY XREF_KEY
HAVING (COUNT(XREF_KEY) > 1);
DELETE FROM ABP_XREF WHERE XREF_KEY IN (SELECT distinct XREF_KEY FROM ABP_XREF_COU WHERE CHANGE_TYPE != ‘I’);
INSERT INTO ABP_XREF SELECT * FROM ABP_XREF_COU WHERE CHANGE_TYPE != ‘D’;
CREATE TABLE ABP_XREF_ARCHIVE AS SELECT * FROM ABP_REF WHERE XREF_KEY IN (SELECT DISTINCT XREF_KEY FROM ABP_XREF_COU WHERE CHANGE_TYPE != ‘I’);
DELETE FROM ABP_XREF WHERE XREF_KEY IN (SELECT DISTINCT XREF_KEY FROM ABP_XREF_COU WHERE CHANGE_TYPE != ‘I’);
INSERT INTO ABP_XREF SELECT * FROM ABP_XREF_COU WHERE CHANGE_TYPE != ‘D’;
High-level COU implementation model diagram
High-level COU implementation model diagram
High-level COU implementation model diagram showing how to create archive tables and apply a COU
High-level COU implementation model diagram showing how to create archive tables and apply a COU
Windows Command Prompt window
ArcGIS Pro UI showing default background map
ArcGIS Pro UI Catalog pane in showing Project >Toolboxes navigation item
ArcGIS Pro Add Toolbox dialog
ArcGIS Pro UI Catalog pane in showing Toolboxes navigation item
ArcGIS Pro Geoprocessing window
ArcGIS Pro UI showing loading OS AddressBase Data
ArcGIS Pro Add Data navigation button
ArcGIS Pro Add Data dialog
ArcGIS Pro UI showing feature classes containing geometry
ArcGIS Desktop UI highlighting Catalog button
ArcGIS Desktop Catalog showing Connect To Folder action
ArcGIS Desktop Catalog showing AddressBase split record files
ArcGIS Desktop Catalog showing new File Geodatabase and split record files
ArcGIS Desktop Catalog showing how to add AddressBase files to the output Geodatabase
ArcGIS Desktop Catalog showing Create Feature Class From XY Table dialog
ArcGIS Desktop Add Data dialog
ArcGIS Desktop Table Of Contents showing Relate action
ArcGIS Desktop Relate dialog
ArcGIS Desktop Layer Properties dialog
MapInfo UI highlighting Home > Open Table navigation item
MapInfo Open dialog
MapInfo Comma Delimited CSV Information dialog
MapInfo UI highlighting Home > Save > Save Copy As navigation item
MapInfo UI highlighting Table > Maintenance > Table > Modify Structure navigation item
MapInfo Modify Table Structure: blpu dialog
MapInfo UI highlighting Spatial > Create Points navigation item
MapInfo Create Points dialog
MapInfo UI highlighting Map > Map navigation item
QGIS Options | CRS dialog
QGIS Coordinate Reference System Selector
QGIS Data Source Manager | Delimited Text
QGIS Data Source Manager | Delimited Text
QGIS Data Source Manager | Delimited Text
QGIS Layer Properties - ID21_BLPU_Records - Joins dialog
QGIS Identify Results dialog
Cadcorp Address Loader > Select AddressBase data folder dialog
Cadcorp Address Loader > CSV files to load dialog
Cadcorp Address Loader > Select database dialog
Cadcorp Address Loader > Connect to QGIS dialog
Cadcorp Address Loader > AddressBase Premium Schema dialog
Cadcorp Address Loader > Load the data dialog
CadCorp SIS Desktop Overlay Types dialog
CadCorp SIS Desktop PostgreSQL Connection dialog
CadCorp SIS Desktop Database connection type dialog
pgAdmin 4 UI highlighting Tools > Query Tool navigation item
pgAdmin 4 showing PostgreSQL script in the Query Tool
SQL Server Management Studio Database Properties dialog

Creating a single-line or multi-line address

Delivery Point Address vs Geographic Address

The AddressBase Premium products contain a variety of data fields which allow a user to construct, for a given addressable object, different forms of an address dependent on how the address is to be used.

There are two types of address contained in the AddressBase products:

  • Delivery Point Address

  • Geographic Address

These two address types come from different sources and are matched together by GeoPlace.

The Delivery Point Address is sourced from Royal Mail’s Postcode Address File (PAF), which is a non- geocoded list of addresses. These addresses are used primarily as a ‘mailing list’ for postal purposes.

Geographic Addresses are maintained by contributing Local Authorities. The structure of a Geographic Address is based on the British Standard BS7666. These addresses are used to provide an accurate geographic locator for an object to aid, for example, service delivery, asset management, or command and control operations. They also represent the legal form of addresses as created under street naming and numbering legislation.

High-level data model

The AddressBase Premium data model accommodates both the Delivery Point Address and the Geographic Address by linking them using the unique property reference number (UPRN) as the key.

AddressBase Premium high-level data model diagram with address ‘types’ highlighted.

It is important to note the cardinality differences that the Geographic and Delivery Point Address components have with the Basic Land and Property Unit (BLPU):

  • The relationship between the Delivery Point Address and the BLPU is 0..1 – 1.

  • This means that the Delivery Point Address is an optional component, so a Delivery Point Address will only be created when it has been matched to the Geographic Address. Moreover, only one Delivery Point Address can be matched to a BLPU.

  • The relationship between the Land and Property Identifier (LPI) and the BLPU is 1..* – 1.

  • This means that the LPI component is mandatory; therefore, at least one LPI must exist for each BLPU. Moreover, there can be more than one LPI linked to a single BLPU.

Together, these differences mean that there are more Geographic Addresses in the product than there are Delivery Point Addresses, because:

  • Not every BLPU has a Delivery Point (postal) Address, only those that have been matched to the Royal Mail PAF database.

  • A single BLPU can have only one Delivery Point Address.

  • A single BLPU can have more than one Geographic Address (because alternative and historical addresses are available in AddressBase Premium).

Background to single-line and multi-line address labels

A common requirement for customers using the AddressBase products is to build a single address label from core address elements.

There are two types of address label: single line and multi-line. The simplest label is a full address on a single line, with different elements separated by commas and spaces. This type of label is suited for displaying a full address within a tabular display, such as within an on-screen data grid or spreadsheet, or where a single-line printed address is most appropriate (such as within the text, header or footer of a letter), for example:

ROSE COTTAGE, 5 MAIN STREET, ADDRESSVILLE, LONDON, SE99 9EX

The second type of formatted address is a multi-line address label. These labels are most often used on envelopes or at the tops of letters, where different parts of an address are separated onto different lines, for example:

ROSE COTTAGE 5 MAIN STREET ADDRESSVILLE LONDON SE99 9EX

The following sections outline a methodology for structuring and layering a single address label using AddressBase Premium. The rules outlined are suggestions only and can be used for visual display of full addresses. It is strongly recommended that address components are stored in the format in which they are provided in order to allow maximum flexibility of use and derived value.

Delivery Point Address

A Delivery Point Address contains information sourced from Royal Mail (PAF). Stringent rules are used to match these addresses to the Geographic Address and assign a common UPRN to link addresses from the two addressing sources together in the data model.

To construct a single address label based purely on the Royal Mail PAF address fields, the following attributes listed in Table 7 can be used to build a Delivery Point Address label.

The following table details the Delivery Point Address components.

Delivery Point Address component
Type

DEPARTMENT_NAME

Character

ORGANISATION_NAME

Character

SUB_BUILDING_NAME

Character

BUILDING_NAME

Character

BUILDING_NUMBER

Integer

PO_BOX_NUMBER

Integer

DEPENDENT_THOROUGHFARE (or WELSH_DEPENDENT_THOROUGHFARE)

Character

THOROUGHFARE (or WELSH_THOROUGHFARE)

Character

DOUBLE_DEPENDENT_LOCALITY (or WELSH_DOUBLE_DEPENDENT_LOCALITY)

Character

DEPENDENT_LOCALITY (or WELSH_DEPENDENT_LOCALITY)

Character

POST_TOWN (or WELSH_POST_TOWN)

Character

POSTCODE

Character

These address components are listed in the correct order in which they should appear on an address label. There may be a business need to replace the thoroughfare, locality and post_town attributes with the Welsh equivalent (listed in Table 7). The following examples will use the English version of these attributes.

It should be noted that most of the PAF fields are optional and may contain null values (or zero, in the cases of BUILDING NUMBER and PO BOX NUMBER). In these cases, those fields should be omitted.

The following (entirely fictional) example shows all of the PAF fields filled in (apart from the PO BOX NUMBER) and illustrates how these fields should be ordered in a single address label:

Delivery Point Address component
Example

DEPARTMENT_NAME

CUSTOMER SERVICE DEPARTMENT

ORGANISATION_NAME

JW SIMPSON LTD.

SUB_BUILDING_NAME

UNIT 3

BUILDING_NAME

THE OLD FORGE

BUILDING_NUMBER

7

PO_BOX_NUMBER

DEPENDENT_THOROUGHFARE

RICHMOND TERRACE

THOROUGHFARE

MAIN STREET

DOUBLE_DEPENDENT_LOCALITY

HOOK

DEPENDENT_LOCALITY

WARSASH

POST_TOWN

SOUTHAMPTON

POSTCODE

SO99 9ZZ

In cases where a PO BOX NUMBER is present, it will only be described in the data as an integer. In order to properly format these addresses when generating an address label, these integers should be prefixed with the text ‘PO BOX’, as shown in the following example:

Delivery Point Address component

Data content

Formatted output

ORGANISATION_NAME

‘JWS CONSULTING’

JWS CONSULTING

PO_BOX_NUMBER

5422

PO BOX 5422

THOROUGHFARE

‘HIGH STREET’

HIGH STREET

POST_TOWN

‘SPRINGFIELD’

SPRINGFIELD

POSTCODE

‘SP77 0SF’

SP77 0SF

Where null or empty string values exist (for character fields) or zeros or nulls (for integer fields), those fields should be entirely omitted from the output. However, the order in which the fields should be concatenated always remains the same, as shown in the following example:

Delivery Point Address component

Data content

Formatted output

DEPARTMENT_NAME

null

ORGANISATION_NAME

‘TM MOTORS’

TM MOTORS

SUB_BUILDING_NAME

null

BUILDING_NAME

‘THE OLD BARN’

THE OLD BARN

BUILDING_NUMBER

0 (or null)

PO_BOX_NUMBER

0 (or null)

DEPENDENT_THOROUGHFARE

null

THOROUGHFARE

‘HORSHAM LANE’

HORSHAM LANE

DOUBLE_DEPENDENT_LOCALITY

null

DEPENDENT_LOCALITY

null

POST_TOWN

‘HORSHAM’

HORSHAM

POSTCODE

‘RH12 1EQ’

RH12 1EQ

Building a single-line Delivery Point Address

Building a single-line, formatted address for a Delivery Point is relatively straightforward. All the fields should be checked in the order shown previously in the tables above, and those that have values should be concatenated together into a single line. Generally, address components should be separated by a comma followed by a single space (‘, ’), although sometimes only a space is used between a building number and a thoroughfare name. You can use your preference.

Examples of SQL logic to create a single-line Delivery Point Address are on our GitHub repository, which incorporates the following elements:

  • The SQL operator for concatenating text is a double pipe (‘||’).

  • CASE blocks have been used to test each of the fields for null values before concatenating its contents (along with a suitable separator: either ‘, ‘ or ‘ ‘).

  • The field names and table names used are illustrative and may vary between databases.

  • Depending on the database schema and data loading method used, it may be necessary to test some fields for empty strings (‘’) or zero values (for integer fields) instead of, or as well as, testing for NULLs.

  • If you are using PostGres (PostGIS), it might be beneficial to substitute the ‘IS NOT NULL’ with != ‘’. This should improve the overall appearance of the output.

Building a multi-line Delivery Point Address

Splitting a Delivery Point Address into multiple lines is more complicated. There are several rules to consider in order to avoid having very short lines (for example, just a building number) or very long lines within the formatted address. A summary of these rules is as follows:

  • Generally, if there is a building number, it should appear on the same line as the thoroughfare (or dependent thoroughfare). If there is no thoroughfare information, the building number should appear on the same line as the first locality line.

  • In cases where building numbers have been placed in the building name field due to the presence of a letter suffix (for example, ‘11A’) or a number range separator (for example, ‘3-5’), these should be detected and placed on the same line as the thoroughfare (or on the first locality line if no thoroughfare is present).

  • In most other cases, the building name, if present, should appear on a separate line above the thoroughfare name or dependent thoroughfare or locality line if no thoroughfare is present.

  • Similar tests should be applied to the SUB_BUILDING_NAME field: if this field contains a number, a number with a suffix or a numeric range, it should precede the building name on the same line. In most other cases, it should appear on a separate line above the building name.

Geographic Address (Local Authority Address)

The structure of a Geographic Address is based on the British Standard BS7666 and is split into a number of components. This means that in order to construct a complete address label, for example, on an envelope, database form or GIS display, the components need to be constructed according to a set of rules.

Within the AddressBase products, the core property-level address information is stored within the Primary Addressable Object (PAO) and Secondary Addressable Object (SAO) fields of the LPI table. The additional attribution required to build a full address label is maintained in the BLPU (postcode_locator), ORGANISATION (organisation) and STREET_DESCRIPTOR (street_description, locality_name, town_name, administrative_area) tables.

For a full description of PAOs and SAOs, and the complete set of AddressBase fields, please refer to the relevant AddressBase Premium Technical Specification.

Constructing a single address label from the Geographic Address fields

To construct a single address label based purely on the BS7666 address fields, the following attributes listed in the table below should be used to build a Geographic Address label.

The following table details the Geographic Address components.

Table
Geographic Address Component

Organisation

ORGANISATION

LPI

SAO_TEXT

LPI

SAO_START_NUMBER

LPI

SAO_START_SUFFIX

LPI

SAO_END_NUMBER

LPI

SAO_END_SUFFIX

LPI

PAO_TEXT

LPI

PAO_START_NUMBER

LPI

PAO_START_SUFFIX

LPI

PAO_END_NUMBER

LPI

PAO_END_SUFFIX

Street Descriptor

STREET_DESCRIPTION

Street Descriptor

LOCALITY

Street Descriptor

TOWN_NAME

Street Descriptor

ADMINISTRATIVE_AREA*

BLPU

POSTCODE_LOCATOR

*ADMINISTRATIVE_AREA is optional because it is common for this field to be the same as the TOWN_NAME. Sometimes, however, this field will help users construct a more complete address.

These address components are listed in the correct order in which they should appear on an address label. There may be a business need to build the address using the alternate language for SAO_TEXT, PAO_TEXT and Street Descriptor entries. This can be achieved by filtering on the language field of the LPI and Street Descriptor tables. The same order as above would be applicable.

Linking address components

The LPI table includes the PAO and SAO fields. However, in order to obtain the rest of the address, it is necessary to join the LPI table to the Street Descriptor table to pick up the street name, locality and town information (using the USRN as the key), and also to the Organisation and BLPU tables (using the UPRN as the key) to pick up the organisation names and postcodes, respectively.

The diagram below shows the links that need to be made in order to build a full Geographic Address from the different BS7666 components in AddressBase Premium.

Table join logic diagram for Geographic Address label

Using the LPI table as a starting point, the remaining address components can be picked up using table joins to the other tables on UPRNs and USRNs. Note that there can be more than one LPI for each UPRN, so if only one address is required per BLPU, the LPI with logical_status = 1 (approved) should be selected (there can be only one approved LPI per BLPU).

Rendering SAOs and PAOs

When building a single address label, it may be necessary to concatenate the various SAO fields and PAO fields together respectively. These fields contain any property names, numbers, number ranges or suffixes that apply to an address.

A PAO number / range string should be constructed from the PAO_START_NUMBER, PAO_START_SUFFIX, PAO_ END_NUMBER and PAO_END_SUFFIX fields, as illustrated in the following table:

Attribute
Example 1
Example 2
Example 3
Example 4

PAO_START_NUMBER

1

1

1

1

PAO_START_SUFFIX

A

A

PAO_END_NUMBER

5

5

PAO_END_SUFFIX

C

Rendered PAO range

1

1A

1-5

1A-5C

Similarly, a SAO number / range string should be constructed from the SAO_START_NUMBER, SAO_START_ SUFFIX, SAO_END_NUMBER and SAO_END_SUFFIX fields.

In addition to the numeric range fields described above, there are also PAO_text and SAO_text fields. These fields may be populated instead of, or as well as, the numeric range fields. In both cases, if both text and a numeric range string are present, the text should appear before the numeric range in any formatted address, as shown in the following table:

Attribute
Example 1
Example 2
Example 3
Example 4

PAO (number string)

1

1A

1A

PAO (text)

Rose Cottage

Rose Cottage

Rendered PAO (showing street name location)

1 <street>

1A <street>

Rose Cottage, 1A

<street>

Rose Cottage,

<street>

For primary addressable objects (PAOs), there will always be either a text entry or a numeric/range entry or both. This is not the case for SAOs, which may be entirely absent for a given address.

Street description, town, locality and administrative area names

The street description and administrative area names are always present, while the locality name and town name may be empty.

The ADMINISTRATIVE_AREA field always contains a value; however, this value will not always enhance an address, but in some cases it will. In particular, check that it is not the same as the value in the TOWN_NAME field, as is often the case. The following table shows an example where the administrative area name (in this case, BURY) has been included and excluded from a single-line address:

Administrative area not included

34, CROW LANE, RAMSBOTTOM, BL0 9BR

Administrative area included (BURY)

34, CROW LANE, RAMSBOTTOM, BURY, BL0 9BR

In other cases, the administrative area name will simply contain the local authority name, which would not traditionally form part of a single or multi-line address but can be included to add additional information to an address label. Its inclusion is largely down to business requirements or personal preference; however, it may also be useful to 'de-duplicate' some Geographic Addresses.

The following (entirely fictional) example shows all of the BS7666 Geographic Address fields filled in and illustrates how they should be ordered in a single address label.

The table below details the Geographic Address formatting:

Geographic Address Component
Example

ORGANISATION

JW SIMPSON LTD

SAO_TEXT

THE ANNEXE

SAO (number / range string)*

1A

PAO_TEXT

THE OLD MILL

PAO (number / range string)*

7–9

STREET_DESCRIPTION

MAIN STREET

LOCALITY

HOOK

TOWN_NAME

WARSASH

ADMINISTRATIVE_AREA

SOUTHAMPTON

POSTCODE_LOCATOR

SO99 9ZZ

*The number/range strings are built from the relevant PAO / SAO start_number, start_suffix, end_number and end_suffix fields, as described above, and formatted as character strings.

Where an administrative area matches the town name, it should always be omitted.

Delivery Point Address Component
Data content
Formatted output

PAO_TEXT

‘HIGHBURY HOUSE’

HIGHBURY HOUSE

STREET_DESCRIPTION

‘HIGH STREET’

HIGH STREET

TOWN_NAME

‘SOUTHAMPTON’

SOUTHAMPTON

ADMINISTRATIVE_AREA

‘SOUTHAMPTON’

POSTCODE_LOCATOR

‘SO77 0SF’

SO77 0SF

Where null or empty string values exist (for character fields) or zeros or nulls (for integer fields), those fields should be entirely omitted from the output; however, the order in which the fields should be concatenated always remains the same.

Delivery Point Address Component
Data content
Formatted output

ORGANISATION

‘TM MOTORS’

TM MOTORS

SAO_TEXT

null

SAO (number / range string)*

null

PAO_TEXT

‘THE OLD BARN’

THE OLD BARN

PAO (number / range string)*

‘1’

1

STREET_DESCRIPTION

‘HORSHAM LANE’

HORSHAM LANE

LOCALITY_NAME

null

TOWN_NAME

‘HORSHAM’

HORSHAM

ADMINISTRATIVE_AREA

‘HORSHAM’

* Duplicate name omitted

POSTCODE_LOCATOR

‘RH12 1EQ’

‘RH12 1EQ’

Building a single-line Geographic Address

Building a single-line, formatted address for a Geographic Address is slightly more complicated than for a Delivery Point Address due to the need to pre-format the SAO and PAO number/range strings and join tables together. However, once this is done, the process is largely the same as before: the calculated fields should be checked in the order shown previously in the table above, and those that have values should be concatenated together into a single line. Generally, address components should be separated by a comma followed by a single space (‘, ’), although sometimes only a space is used between a PAO number/range string and a street description. This is down to personal preference.

Example SQL logic to create a single-line Geographic Address can be found on our GitHub repository, which incorporates the following elements:

  • The SQL operator for concatenating text is a double pipe (‘||’).

  • CASE blocks have been used to test each of the fields for null values before concatenating its contents (along with a suitable separator – either ‘, ‘ or ‘ ‘).

  • The field names and table names used are illustrative and may vary between databases.

  • Depending on the database schema and data loading method used, it may be necessary to test some fields for empty strings (‘’) or zero values (for integer fields) instead of, or as well as, testing for NULLs.

  • If you want no duplicate UPRNs to be returned an additional DISTINCT line needs to read DISTINCT(l.UPRN).

Building a multi-line Geographic Address

Splitting a Geographic Address into multiple lines is more complex. As with Delivery Point Addresses, there are several rules to consider in order to avoid having very short lines (for example, just a building number) or very long lines within the formatted address.

A summary of these rules is as follows:

  • Generally, if there is a PAO number/range string, it should appear on the same line as the Street Description. 11A MAIN STREET

  • If there is a PAO_text value, it should always appear on the line above the Street Name (or on the line above the <PAO number string> + <Street Name> where there is a PAO number/range). PAO_text only ROSE COTTAGE, MAIN STREET PAO_text and PAO number or range ROSE COTTAGE, 11A MAIN STREET

  • If there is a SAO_text value, it should appear on a separate line above the PAO_text line (or the PAO number/range + street line where there is no PAO_text value). SAO_text value only, with PAO_text value only THE ANNEXE, ROSE COURT,

    MAIN STREET SAO_text value only, with PAO number/range only THE ANNEXE, 11A MAIN STREET

  • If there is a SAO number/range value, it should be inserted either on the same line as the PAO_text (if there is a PAO_text value), or on the same line as the PAO number/range + Street Name (if there is only a PAO number/range value and no PAO_text value). If there are both PAO_text and a PAO number/range, then the SAO number/range should appear on the same line as the PAO_text, and the PAO number/range should appear on the street line. SAO number/range value only, and PAO_text value only 1A ROSE COURT, MAIN STREET SAO number/range value only, and PAO number/range value only 1-3, 11A MAIN STREET SAO number/range value only, and both PAO_text and PAO number/range values 1A ROSE COURT,

    11A MAIN STREET

  • If there is a SAO_text value, it should always appear on its own line. SAO_text value only with PAO_text only THE ANNEXE, ROSE COTTAGE, MAIN STREET SAO_text and SAO number/range and PAO_text and PAO number/range WARDEN’S FLAT, 1A ROSE COURT,

    11A MAIN STREET

  • If there is an Organisation Name, it should always appear alone as the top line of the address. Organisation Name along with all PAO + SAO fields COTTAGE INDUSTRY LTD, THE ANNEXE, 1A ROSE COURT, 11A MAIN STREET

  • The Locality (if present) should appear on a separate line beneath the Street Description, followed by the Town Name on the line below it. If there is no Locality, the Town Name should appear alone on the line beneath the Street Description. Locality and Town Name present [first part of address, formatted as described above] MAIN STREET,

    HIGHFIELD,

    SOUTHAMPTON Town Name only [first part of address, formatted as described above] HIGH STREET,

    SOUTHAMPTON

  • If the Administrative Area name is required and it is not a duplicate of the Town Name, it can optionally be included on a separate line beneath the Town Name. Administrative Area name included [first part of address, formatted as described above] MAIN STREET, WINDSOR, ROYAL BOROUGH OF WINDSOR AND MAIDENHEAD

  • Finally, the Postcode Locator should be inserted on the final line of the address. With Postcode_Locator on final line [first part of address, formatted as described above] HIGH STREET, MILTON, ML99 0WW

Advice on creating mailing lists using AddressBase Premium products

It's possible to create mailing lists using the AddressBase Premium and AddressBase Premium Islands products (you can also create them using AddressBase Plus and AddressBase Plus Islands). Given that the AddressBase Premium products contain two different types of address, a decision needs to be made on whether to use the Geographic or Delivery Point Addresses, or a mixture.

The following two options should be considered:

  • Use Delivery Point Addresses whenever they are available, and when they are not, use a Geographic Address.

  • Use Geographic Addresses in all cases.

Depending on business requirements, in some user interfaces, it may be worth considering displaying both forms of an address, since this will provide the maximum information available about a given UPRN.

‘Mixing and matching’ components from the two different forms of address into a single address label is not recommended as this is likely to cause confusion in some instances.

Address status

When building your query to extract a mailing list, it is important that you consider filtering your results based on the address status and type. The status of an address is often something that needs to be considered when working with address data. Questions need to be answered before AddressBase Premium can be used effectively, such as “Is the addressable object in planning, being constructed, current, demolished or accurately positioned?”.

The table below offers guidance on what status filters should be considered. Please see the AddressBase Premium technical specification on our website for more information about each of these attributes.

Status attributes
Table
Use
Values

LOGICAL_STATUS

BLPU

Describes where a land or property unit is in its lifecycle.

1 = Approved

6 = Provisional

8 = Historical

LOGICAL_STATUS

LPI

Describes where an address is in its lifecycle.

1 = Approved

3 = Alternative

6 = Provisional

8 = Historical

BLPU_STATE_CO DE

(optional)

BLPU

Informs the user what physical state the land or property is in (for example, ‘under construction’, ‘in use’, ‘demolished’).

1 = Under construction

2 = In use

2 = Unoccupied

4 = No longer existing

6 = Planning permission granted Null= Unknown or N/A

RPC_CODE

BLPU

To ascertain how accurate the coordinate is. Use in conjunction with the postcode_locator field to understand the accuracy of the address’ position.

1 = Visual centre

2 = General internal point

3 = SW corner of 100m grid ref

4 = Start of referenced street

5 = Postcode unit point

9 = Centre of Local Authority area

ADDRESSBASE_ POSTAL

BLPU

This field can be used to limit your records based on whether they are capable of receiving mail or not.

D = A record which is linked to PAF

C = A record which is postal and has a parent linked to PAF

L = A record identified as postal via Local Authority information

N = Not a postal address

LANGUAGE

LPI STREET_DESCRIPTOR

This information can be used to limit your records based on the language.

ENG = English CYM = Welsh GAE = Gaelic

Other filters available in AddressBase Premium products for use in addressing labels

AddressBase Premium is a rich addressing dataset that contains a wealth of other attributes that could be used in conjunction with address labels. For example:

  • Classification can be used to target certain types of property.

  • OS MasterMap Topography TOID cross references can be used to link address labels to Topographic objects and viewed in a GIS for Great Britain (AddressBase Premium Islands does not has OS MasterMap Topography TOID cross references).

AddressBase Premium high-level data model diagram with address ‘types’ highlighted.
Table join logic diagram for Geographic Address label

Attribute format comparison

The naming of attributes between CSV, GML and GPKG will be different due to the requirements of the file formats. The following tables map the CSV attribute name to the GML and GPKG attribute names.

Basic Land and Property Unit (BLPU)

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GeoPackage

CHANGE_TYPE

changeType (Provided in FeatureWithLifecycle)

change_type

PRO_ORDER

Not required in GML

Not provided in GeoPackage

UPRN

uprn

uprn

LOGICAL_STATUS

logicalStatus

logical_status

BLPU_STATE

blpuState

blpu_state

BLPU_STATE_DATE

blpuStateDate

blpu_state_date

PARENT_UPRN

parentUPRN

parent_uprn

X_COORDINATE

position

x_coordinate

Y_COORDINATE

position

y_coordinate

LATITUDE

positionLatLong

latitude

LONGITUDE

positionLatLong

longitude

RPC

rpc

rpc

LOCAL_CUSTODIAN_CODE

localCustodianCode

local_custodian_code

COUNTRY

country

country

START_DATE

startDate (Provided in FeatureWithLifecycle)

start_date

END_DATE

endDate (Provided in FeatureWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in FeatureWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in FeatureWithLifecycle)

entry_date

ADDRESSBASE_POSTAL

addressbasePostal

addressbase_postal

POSTCODE_LOCATOR

postcodeLocator

postcode_locator

MULTI_OCC_COUNT

multiOccCount

multi_occ_count

Classification

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GeoPackage

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GeoPackage

URPN

uprn (obtained from the feature)

uprn

CLASS_KEY

classKey

class_key

CLASSIFICATION_CODE

classificationCode

classification_code

CLASS_SCHEME

classScheme

class_scheme

SCHEME_VERSION

schemeVersion

scheme_version

START_DATE

START_DATE (Provided in EntityWithLifecycle)

start_date

END_DATE

Provided in EntityWithLifecycle

end_date

LAST_UPDATE_DATE

Provided in EntityWithLifecycle

last_update_date

ENTRY_DATE

Provided in EntityWithLifecycle

entry_date

Delivery Point Address

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GPKG

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GPKG

UPRN

uprn (obtained from the feature)

uprn

UDPRN

udprn

udprn

ORGANISATION_NAME

organisationName

organisation_name

DEPARTMENT_NAME

departmentName

department_name

SUB_BUILDING_NAME

subBuildingName

sub_building_name

BUILDING_NAME

buildingName

building_name

BUILDING_NUMBER

buildingNumber

building_number

DEPENDENT_THOROUGHFARE

dependentThoroughfare

dependent_thoroughfare

THOROUGHFARE

thoroughfare

thoroughfare

DOUBLE_DEPENDENT_LOCA LITY

doubleDependentLocality

double_dependent_locality

DEPENDENT_LOCALITY

dependentLocality

dependent_locality

POST_TOWN

postTown

post_town

POSTCODE

postcode

postcode

POSTCODE_TYPE

postcodeType

postcode_type

DELIVERY_POINT_SUFFIX

deliveryPointSuffix

delivery_point_suffix

WELSH_DEPENDENT_THOR OUGHFARE

welshDependentThoroughfare

welsh_dependent_thoroughfare

WELSH_THOROUGHFARE

welshThoroughfare

welsh_thoroughfare

WELSH_DOUBLE_DEPENDEN T_LOCALITY

welshDoubleDependentLocality

welsh_double_dependent_locality

WELSH_DEPENDENT_LOCALI TY

welshDependentLocality

welsh_dependent_locality

WELSH_POST_TOWN

welshPostTown

welsh_post_town

PO_BOX_NUMBER

poBoxNumber

po_box_number

PROCESS_DATE

processDate

process_date

START_DATE

START_DATE (Provided in EntityWithLifecycle)

start_date

END_DATE

Provided in EntityWithLifecycle

end_date

LAST_UPDATE_DATE

Provided in EntityWithLifecycle

last_update_date

ENTRY_DATE

Provided in EntityWithLifecycle

entry_date

Land Property Identifier (LPI)

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GPKG

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GPKG

UPRN

uprn (obtained from the feature)

uprn

LPI_KEY

lpiKey

lpi_key

LANGUAGE

Provided within an ‘xml:lang’ tag

language

LOGICAL_STATUS

logicalStatus

logical_status

START_DATE

startDate (Provided in EntityWithLifecycle)

start_date

END_DATE

endDate (Provided in EntityWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in EntityWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in EntityWithLifecycle)

entry_date

SAO_START_NUMBER

saoStartNumber

sao_start_number

SAO_START_SUFFIX

saoStartSuffix

sao_start_suffix

SAO_END_NUMBER

saoEndNumber

sao_end_number

SAO_END_SUFFIX

saoEndSuffix

sao_end_suffix

SAO_TEXT

saoText

sao_text

PAO_START_NUMBER

paoStartNumber

pao_start_number

PAO_START_SUFFIX

paoStartSuffix

pao_start_suffix

PAO_END_NUMBER

paoEndNumber

pao_end_number

PAO_END_SUFFIX

paoEndSuffix

pao_end_suffix

PAO_TEXT

paoText

pao_text

USRN

usrn

usrn

USRN_MATCH_INDICATOR

usrnMatchIndicator

usrn_match_indicator

AREA_NAME

areaName

area_name

LEVEL

level

level

OFFICIAL_FLAG

officialFlag

official_flag

Organisation

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GPKG

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GPKG

UPRN

uprn (obtained from the feature)

uprn

ORG_KEY

orgKey

org_key

ORGANISATION

organisation

organisation

LEGAL_NAME

legalName

legal_name

START_DATE

startDate (Provided in EntityWithLifecycle)

start_date

END_DATE

endDate (Provided in EntityWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in EntityWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in EntityWithLifecycle)

entry_date

Application Cross Reference

CSV
GML
GPKG

RECORD_IDENTIFIER

Not required in GML

Not provided in GPKG

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GPKG

UPRN

uprn (obtained from the feature)

uprn

XREF_KEY

xrefKey

xref_key

CROSS_REFERENCE

crossReference

cross_reference

VERSION

version

version

SOURCE

source

source

START_DATE

startDate (Provided in EntityWithLifecycle)

start_date

END_DATE

endDate (Provided in EntityWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in EntityWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in EntityWithLifecycle)

entry_date

Street

CSV
GML
GeoPackage

RECORD_IDENTIFIER

Not required in GML

Not provided in GeoPackage

CHANGE_TYPE

changeType (Provided in FeatureWithLifecycle)

change_type

PRO_ORDER

Not required in GML

Not provided in GeoPackage

USRN

usrn

usrn

RECORD_TYPE

recordType

record_type

SWA_ORG_REF_NAMING

swaOrgRefNaming

swa_org_ref_naming

STATE

state

state

STATE_DATE

stateDate

state_date

STREET_SURFACE

streetSurface

street_surface

STREET_CLASSIFICATION

streetClassification

street_classification

VERSION

version

version

STREET_START_DATE

startDate (Provided in FeatureWithLifecycle)

street_start_date

STREET_END_DATE

endDate (Provided in FeatureWithLifecycle)

street_end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in FeatureWithLifecycle)

last_update_date

RECORD_ENTRY_DATE

entryDate (Provided in FeatureWithLifecycle)

record_entry_date

STREET_START_X

streetStart

street_start_x

STREET_START_Y

streetStart

street_start_y

STREET_START_LAT

streetStartLatLong

street_start_lat

STREET_START_LONG

streetStartLatLong

street_start_long

STREET_END_X

streetEnd

street_end_x

STREET_END_Y

streetEnd

street_end_y

STREET_END_LAT

steetEndLatLong

street_end_lat

STREET_END_LONG

steetEndLatLong

street_end_long

STREET_TOLERANCE

streetTolerance

street_tolerance

Street Description

CSV
GML
GeoPackage

RECORD_IDENTIFIER

Not required in GML

Not provided in GeoPackage

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GeoPackage

USRN

usrn (obtained from the feature)

usrn

STREET_DESCRIPTION

streetDescription

street_description

LOCALITY

locality

locality

TOWN_NAME

townName

town_name

ADMINSTRATIVE_AREA

administrativeArea

administrative_area

LANGUAGE

Provided within an ‘xml:lang’ tag

language

START_DATE

startDate (Provided in EntityWithLifecycle)

start_date

END_DATE

endDate (Provided in EntityWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in EntityWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in EntityWithLifecycle)

entry_date

Successor

CSV
GML
GeoPackage

RECORD_IDENTIFIER

Not required in GML

Not provided in GeoPackage

CHANGE_TYPE

Not required in GML

change_type

PRO_ORDER

Not required in GML

Not provided in GeoPackage

UPRN

uprn

uprn

SUCC_KEY

succKey

succ_key

START_DATE

startDate (Provided in EntityWithLifecycle)

start_date

END_DATE

endDate (Provided in EntityWithLifecycle)

end_date

LAST_UPDATE_DATE

lastUpdateDate (Provided in EntityWithLifecycle)

last_update_date

ENTRY_DATE

entryDate (Provided in EntityWithLifecycle)

entry_date

SUCCESSOR

successor

successor

Entity with Life Cycle

CSV
GML
GPKG

Provided within the datatypes

startDate

Provided within the datatypes

Provided within the datatypes

endDate

Provided within the datatypes

Provided within the datatypes

lastUpdateDate

Provided within the datatypes

Provided within the datatypes

entryDate

Provided within the datatypes

Feature with Life Cycle

CSV
GML
GPKG

Provided within the feature type

changeType

Provided within the feature type

Provided within the feature type

startDate

Provided within the feature type

Provided within the feature type

endDate

Provided within the feature type

Provided within the feature type

lastUpdateDate

Provided within the feature type

Provided within the feature type

entryDate

Provided within the feature type