portolan-pipeline
A fixed 5,000-row extract of a 388,550-row live address layer. Two
rules prevent most wrong answers. Never extrapolate counts or
densities from this sample to San Francisco. Never count rows when
you mean addresses, one row is a base address, a unit, and a parcel
link, so count(*) is 5,000 while distinct buildings are 4,488.
Query the GeoParquet data asset in place with DuckDB spatial, read_parquet('san-francisco-addresses.parquet'), or load it with GeoPandas. It streams over HTTP range requests, so query the published URL directly rather than downloading first. For rendering use the visual PMTiles asset with its MapLibre styles.
EPSG:4326, WGS 84, a geographic coordinate reference system whose coordinates are in degrees.
Planar distance functions return degrees, which are not ground units and vary with latitude. For real distances use a sphere or spheroid function, or transform to a projected CRS first.
The data asset carries the same code as proj:code.
For metric distances use ST_Distance_Sphere with
geometry_always_xy set, as the query below does, or transform to
EPSG:26910, UTM zone 10N, for planar work over San Francisco.
The grain, records against buildings against units.
Addresses within 250 meters of a point, metric distance done right.
Buildings with the most sampled units.
Nothing joins inside this catalog, the EAS keys point outward. parcel_number joins DataSF's Parcels layer on blklot, cnn joins the street centerlines, nhood joins Analysis Neighborhoods by name. The upstream is a live Socrata endpoint, referenced by URL only. This extract was converted to GeoParquet 2.0 with DuckDB spatial and dates itself, every row carries data_as_of July 24, 2026.