Launch release: 16.4M address points and derived postal code points, national coverage. See coverage

Schema reference

Two layers, both delivered as GeoPackage and CSV. Geometry is WGS84, EPSG:4326; in CSV it appears as latitude and longitude columns.

Address points

Identity

ColumnTypeNullDescription
address_idtextnoPersistent identifier. Survives a street rename or a re-survey, so joins hold between releases.

Address components

ColumnTypeNullDescription
civic_numberintegeryesPrimary number. Null on named-only and rural addresses.
civic_suffixtextyesLetter or fraction, e.g. A, 1/2.
unittextyesUnit, suite or apartment designator where the source supplied one.
street_nametextyesStandardised name, without type or direction.
street_typetextyesStandardised type, e.g. AVE, CRES.
street_directiontextyesStandardised direction, e.g. NW.
full_addresstextnoAssembled single-line form, for display only.
source_addresstextyesThe original string as received, kept for audit.

Location

ColumnTypeNullDescription
geomgeometry(Point, 4326)noGeoPackage only.
latitudenumericnoWGS84 decimal degrees.
longitudenumericnoWGS84 decimal degrees.
position_classtextnoA under 5 m, B 5 to 25 m, C over 25 m.

Administrative

ColumnTypeNullDescription
provincetextnoTwo-letter code.
cd_uidtextyesCensus division identifier.
csd_uidtextyesCensus subdivision identifier.
csd_nametextyesCensus subdivision name.
postal_codetextyesSix characters, no space.

All administrative attribution is spatial. Nothing is matched by name.

Provenance

ColumnTypeNullDescription
source_idtextnoWhich source contributed the record.
releasetextnoRelease it belongs to, e.g. 2026Q3.
change_flagtextyesadded, moved, retired, attribute_change.

Postal code points

ColumnTypeNullDescription
postal_codetextnoSix characters, no space. The key.
geomgeometry(Point, 4326)noCalculated position for the member addresses.
latitudenumericnoWGS84 decimal degrees.
longitudenumericnoWGS84 decimal degrees.
address_countintegernoAddresses carrying this code in this release.
spread_mnumericyesDistance from the point to the furthest member address, in metres.
number_uniquebooleannoTrue when every civic number under this code appears exactly once.
provincetextnoTwo-letter code.
csd_uidtextyesCensus subdivision of the point.
releasetextnoRelease it belongs to.

number_unique is what makes two-field matching safe

Where it is true, civic number plus postal code identifies an address without a street name, so the whole class of Ave versus Avenue matching failures does not arise. Where it is false — typically a rural code covering several roads — the same two fields can return more than one address and you need the street.

Check the flag rather than inferring it from the code format. See geocoding with postal codes.

Use address_count and spread_m together

They are how you tell a usable point from a misleading one.

A code with 60 addresses and a spread of 200 m is a city block, and the point means something. A code with 4 addresses and a spread of 14 km is a rural route, and the point is the middle of nowhere in particular. Both are in the file; only one should go on a map without comment.

Notes on nulls

A null civic_number is meaningful, not missing — rural and named addresses exist. Filtering on civic_number IS NOT NULL quietly drops them.

A null postal_code on an address means no code could be attributed, not that the address has none. Those addresses contribute to no postal point.