USBF is a building-footprint dataset for the 48 contiguous U.S. states and the District of Columbia, containing approximately 150 million buildings. It combines GlobalBuildingAtlas (GBA) footprints and inherited building heights with selective footprint refinements supported by aerial RGB imagery and normalized digital surface models (nDSM).
The data are distributed as geographic GeoParquet tiles. Each feature includes its footprint and available source, height and edit attributes, allowing users to distinguish retained footprints from recorded geometry changes.
Coverage and tile layout
Property
Specification
Geographic coverage
Contiguous United States: 48 states and Washington, DC; excludes Alaska and Hawaii
Coordinate reference system
WGS 84, EPSG:4326; longitude and latitude in degrees
Tile dimensions
0.5° longitude × 0.5° latitude
Approximate ground dimensions
About 55 km north–south; east–west width varies with latitude
Spatial file format
GeoParquet; WKB geometry with GeoParquet CRS metadata
File organization
One file per tile, all in the same data directory
Geometry at tile edges
Whole footprints retained; no clipping or duplication at tile boundaries
Height and area units
Heights in metres; edit areas in square metres
Data files are in the USBF_v1 data directory. A filename such as USBF_x-00236_y+00067.parquet identifies grid indices x = -236, y = 67. The nominal tile bounds are:
For this example, the bounds are 118.0°W–117.5°W and 33.5°N–34.0°N, including part of Orange County, California. Each building is assigned to one tile using its original ownership coordinates. A footprint can extend beyond the nominal tile bounds. Use the actual spatial bounds in tile_index.parquet when selecting tiles for an area.
Files
File
Contents
USBF_x…_y….parquet
Building footprints and attributes for one geographic tile
The following are the principal attributes. Field names and types for the complete table are in schema.json. Fields that were not recorded for a feature can be null; a null flag is distinct from false.
Attribute
Type / units
Meaning
geometry
Geometry, EPSG:4326
USBF building footprint
usbf_id
String
Published feature identifier
source
String
Upstream footprint source label; examples include osm (OpenStreetMap), ms (Microsoft) and ours2 (GBA-derived)
id
String
Identifier inherited from the upstream source
state
String
Two-letter state or DC code
height
Metres
Building height inherited from GBA
gba_var
Numeric
GBA's inherited var attribute, retaining its upstream interpretation
original_geometry
Geometry / WKB, EPSG:4326
Original GBA footprint, where recorded
The nDSM coverage fields describe input availability, separately from the inherited height value. A feature may have a GBA height even when its nDSM coverage is missing. Upstream missing-height sentinels, where present, are retained. Area additions and removals are calculated in the CONUS Albers equal-area coordinate system, EPSG:5070.
Recorded modification categories
modification_type
Meaning
unchanged
Original GBA footprint retained
addition
Footprint area added
removal
Footprint area removed
addition_and_removal
Both area additions and removals
courtyard_opening
Interior opening introduced
circle_or_ellipse
Circular or elliptical shape replacement
coordinate_only
Coordinate representation changed with no area addition or removal above 0.01 m²
Example attribute records
The rows below are actual records from USBF_x-00236_y+00067.parquet in Orange County, California. Heights and areas are rounded only for display. This example shows the attribute table; field availability can vary by feature.
source
id
state
height (m)
modified
modification_type
added_area_m2
removed_area_m2
height_coverage_status
ms
UnitedStates_023013202_6
CA
0.94
false
unchanged
0.00
0.00
missing
osm
637666144
CA
5.21
true
addition
42.84
0.00
complete
osm
1217911380
CA
3.58
true
removal
0.00
17.26
complete
osm
1217657193
CA
6.67
true
addition_and_removal
14.74
6.92
Read or download an area
The tile index can be read first to identify relevant files. There is no need to download the entire country. The following Python example lists tiles intersecting a small Orange County area, then reads one selected tile and filters its footprints to the area.
The spatial filter selects intersecting footprints and retains their full geometry. Tile files can also be downloaded through the Source Cooperative file browser and opened in GIS software supporting GeoParquet.
Sources, attribution and citation
GBA supplies the base footprints, source identifiers and building heights. Its upstream footprint attribution is retained in source and id. Footprint refinements use aerial RGB imagery and elevation-supported evidence, including NAIP imagery and USGS 3DEP-derived nDSM where available.
Consult footprint_license, height_license and LICENSES.md for the applicable component terms. Footprint and height components can have different licenses.
For citation, identify USBF: U.S. Building Footprints, the dataset URL, the selected tiles and the access date. Also acknowledge the upstream dataset: GlobalBuildingAtlas, Earth System Science Data 17, 6647–6668 (2025), doi:10.5194/essd-17-6647-2025.
modified
Boolean
Whether a footprint change relative to GBA was recorded
modification_type
String
Category of the recorded footprint change; see below
added_area_m2
Square metres
Footprint area added relative to GBA
removed_area_m2
Square metres
Footprint area removed relative to GBA
hollow_cut
Boolean
Interior opening added to the footprint
shape_changed
Boolean
Circular or elliptical replacement adopted; ordinary boundary edits can have this set to false
possible_small_FP
Boolean
Flag for a possible small false positive; the feature remains in the dataset
height_coverage_status
String
nDSM input coverage: complete, partial or missing
height_valid_fraction
Fraction, 0–1
Valid nDSM coverage fraction within the original footprint
height_missing
Boolean
No valid nDSM input within the original footprint
height_incomplete
Boolean
Incomplete nDSM input within the original footprint
inference_input_mode
String
Image/elevation input mode, such as rgb_height, rgb_partial_height or rgb_only