Matching Properties to Boundaries
Properties
There are multiple ways that a property can be identified within ATTOM Cloud. ATTOM ID is the preferred option, especially when it comes to matching properties to boundaries.
ATTOM ID
Each property is uniquely identified by a number known as ATTOM ID. Once assigned to a property, this number never changes. Being a number, ATTOM ID also offers many performance advantages over alternatives when matching large numbers of property records.
Assessor Parcel Number (APN)
APNs offer a reasonable alternative for identifying properties, especially when working with property data outside of ATTOM Cloud. A single APN is assigned to each property by the County Tax Assessor. The format of the APN varies from county to county and a county may decide at any time to change its numbering system.
Street Address
Street addresses can identify 90% of properties. Issues can occur formatting the address in a consistent manner.
Parcel Boundary
It is important to remember that a property is itself a geographic area defined by a boundary known as a parcel map. For this reason, it is possible for multiple boundaries to overlap a single property. This is especially true for large properties such as farms.
Boundaries
Boundaries (aka geographic areas) are identified by a geocode. ATTOM maintains its own proprietary geocoding systems to allow us to manage the many different types of boundaries it makes available. Specific boundary types such as a county, census block, zip code etc. may have codes that are established by the issuing authority and/or recognized national standards. e.g. CA is a well-known and accepted code for the state of California. In addition, it is not unusual for boundaries to have common names by which they are known. e.g. Irvine Unified School District. ATTOM Cloud collects many of these attributes for boundaries as a way of providing flexibility in how information about a specific boundary can be located.
GeoCodes
ATTOM Cloud uses two different geocodes to identify boundaries. The recommended approach is to use a combination of GeographyTypeKey and GeographyKey to match a specific boundary.
GeographyTypeKey
A small integer that identifies the type of boundary being referenced e.g. 32 = Census Block group.
Each value of GeographyTypeKey also has a two-character abbreviation that is commonly used within ATTOM API e.g. Census Block Group has a code of '32' and an abbreviation of 'BG'. A complete list of the GeographyTypeKeys and Abbreviations can be found in the table DimGeographyType.
GeographyKey
An integer (e.g. 123456) uniquely identifies each instance of a specific boundary. Being a number, it can be more efficient when matching a large number of boundaries.
When searching property data related to a single boundary type (e.g. DimCounty) it is only necessary to use GeographyKey. Tables containing data for a single boundary type may use an alias for GeographyKey. The alias almost always ends with the word "Key" (e.g. CountyKey). The table DimGeographyType lists the names of these keys in the field PrimaryKeyColumn. The following example shows using the GeographyKey for County, CountyKey to establish the number of properties that fall within each County and use the County Profile (DimCounty) to establish the official name of the state and county.
SELECT dc.StateName, dc.CountyName, Count(*) As NoProperties From adw.PropertyAddresses pa Left Join adw.DimCounty dc on pa.CountyKey = dc.CountyKey Group By dc.StateName,dc.CountyName Order By dc.StateName,dc.CountyName
When searching property data that combines multiple boundary types (e.g. CommunityDemographics) GeographyKey can be combined with GeographyTypeKey to uniquely identify a specific instance of a boundary. The following example shows how to establish the crime index of the Block Group containing a specific property. We use GeographyTypeKey (32) to locate the GeographyKey for the BlockGroup in the PropertyBoundaryMatch table and then match the GeographyKey and GeographyTypeKey in the PropertyCrime view.
SELECT CONCAT(pa.SitusAddress,', ',pa.SitusCity,' ',pa.SitusState,' ',pa.SitusZip) AS Address, cc.Crime_Index From adw.PropertyAddresses pa Left Join adw.PropertyBoundaryMatch pbm on pa.[ATTOM ID] = pbm.[ATTOM ID] And pbm.GeographyTypeKey = 32 Left Join adw.CommunityCrime cc on pbm.GeographyTypeKey = cc.GeographyTypeKey AND pbm.GeographyKey = cc.GeographyKey Where pa.[ATTOM ID] = 142467604
Searching the PropertyBoundaryMatch table using [ATTOM ID] and GeographyTypeKey provides a list of the values of GeographyKey for a specific property. The following example shows how we can establish the closest schools to a property. We use GeographyTypeKey (57) to locate each of the closest schools assigned for each Instructional Level (Elementary, Middle, High) in the PropertyBoundaryMatch table and then match the Geography Key (SchoolKey) in the DimSchool table to gather details about each school.
SELECT CONCAT(pa.SitusAddress,', ',pa.SitusCity,' ',pa.SitusState,' ',pa.SitusZip) AS Address, ds.SchoolName, ds.InstructionalLevel From adw.PropertyAddresses pa Left Join adw.PropertyBoundaryMatch pbm on pa.[ATTOM ID] = pbm.[ATTOM ID] And pbm.GeographyTypeKey = 57 Left Join adw.DimSchool ds on pbm.GeographyKey = ds.SchoolKey Where pa.[ATTOM ID] = 142467604
GeoID
A 32-hex-character id (e.g.b8efdd8318a9f3a3238028269f8640ce) uniquely identifies each and every boundary. The GeoIds for specific boundary types can sometimes be found in fields that end in GeoID. e.g. the following example shows how we can establish the CombinedStatistical Area (CSA) name and population associated with a specific property. We use the PropertyGeoData data to establish the GeoID of the CSA (CombinedStatisticalAreaGeoID) and then use that to locate the relevant record in the Community table.
Note: CSA aggregations of Community data are not available in the 5-county trial database.
SELECT CONCAT(pa.SitusAddress,', ',pa.SitusCity,' ',pa.SitusState,' ',pa.SitusZip) AS Address, c.geographyName, c.Population_2020 From adw.PropertyAddresses pa Left Join adw.DimCounty dc on pa.CountyKey = dc.CountyKey Left Join adw.Community c on dc.CombinedStatisticalAreaGeoID = c.GeoID Where pa.[ATTOM ID] = 142467604
This code is known within ATTOM API as GeoIdV4 as it replaced a previous geocode known as GeoID.
Matching Properties to Boundaries
Addresses
Many boundaries such as State form part of the Address information for each property.
- County
- Postal City
- State
- Zip Code
Geo Codes
Boundaries that are unique to a property and not specific to a county can be found in the Geo Codes information for each property.
- Census Block
- Census Block Group
- Census Tract
- Core-Based Statistical Area (CBSA)
- Metropolitan Statistical Area (MSA)
- Micropolitan Statistical Area (µSA)
- Combined Statistical Area (CSA)
- Metropolitan Division
County
If a boundary is an aggregation of counties (e.g. CBSA) then information about that boundary is stored as part of our County details. It is deemed to be far more efficient to store this information at a county level rather than repeat it for every property in a county.
- Core-Based Statistical Area (CBSA)
- Core Statistical Area
- Metropolitan Division
- State
PropertyToBoundaryMatch
There are some boundary types that are not always unique for a property e.g. A property may fall within the attendance area for many schools. For these boundary types, ATTOM Cloud has a special table PropertyBoundaryMatch that defines all the boundaries of a particular type that overlap with the property boundary.
- Census Block
- Census Block Group
- Congressional District
- County Subdivision
- FEMA FIRM Panel
- FEMA Flood Zone
- Macro Neighborhood
- Neighborhood
- Place
- School
- School District
- Sub Neighborhood
- Zip Code Tabulation Area
Note: Because the 5-county trial database only includes data for five counties, the PropertyToBoundaryMatch table in this database does not provide matches for boundaries that span counties, e.g. Congressional District.
Property To Boundary Match Guide
The following summarizes the ways to identify relevant boundaries that overlap with a specific property.
Boundary | Addresses | County | Geo Codes | PropertyBoundaryMatch |
Census Block | CensusBlock | 33 | ||
Census Block Group | CensusBlockGroup | 32 | ||
Census Tract | CensusTract | |||
Combines Statistical Area (CSA) | CSACode | |||
Congressional District | CongressionalDistrict | 35 | ||
Core-Based Statistical Area (CBSA) | MSACode | CBSACode | CbsaCode | |
County | CountyKey | |||
County Subdivision | 38 | |||
FEMA FIRM Panel | 39 | |||
FEMA Flood Zone | 40 | |||
Macro Neighborhood | 41 | |||
Metropolitan Division | DivisionCode | |||
Metropolitan Statistical Area (MSA) | MSACode | CBSACode | MsaCode | |
Micropolitan Statistical Area (µSA) | MSACode | CBSACode | MsaCode | |
Neighborhood | NeighborhoodCode | 42 | ||
Place | Township | 45 | ||
Postal City | SitusCity | |||
Quarter | Quarter | |||
QuarterQuarter | QuarterQuarter | |||
Range | Range | |||
Residential Subdivision | Subdivision | 44 | ||
School (Grade) | 56 | |||
School (Instruction Level) | 57 | |||
School District | 53 | |||
State | SitusState | StateCode | ||
Sub-Neighborhood | 43 | |||
Tract | TractNumber | |||
Zip Code | SitusZip | 50 | ||
Zip Code Tabulation Area | 51 |