← back to Nationalrealestate
TK-16: add CENTER_LAT/CENTER_LON to la-county adapter — fills lat/lng for 2.37M parcels
b435d6d3f687c5a9eeabda943d23319c1b683b10 · 2026-08-01 04:21:36 -0700 · steve@designerwallcoverings.com
Files touched
M src/ingest/parcels/arcgis_sales.ts
Diff
commit b435d6d3f687c5a9eeabda943d23319c1b683b10
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date: Sat Aug 1 04:21:36 2026 -0700
TK-16: add CENTER_LAT/CENTER_LON to la-county adapter — fills lat/lng for 2.37M parcels
---
src/ingest/parcels/arcgis_sales.ts | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/ingest/parcels/arcgis_sales.ts b/src/ingest/parcels/arcgis_sales.ts
index 01cab93..78e5199 100644
--- a/src/ingest/parcels/arcgis_sales.ts
+++ b/src/ingest/parcels/arcgis_sales.ts
@@ -200,17 +200,21 @@ const SOURCES: Record<string, Source> = {
},
'la-county': {
// Los Angeles County — the largest US county (~2.43M parcels), West Coast.
- // Assessor roll layer: no per-parcel sale price, but rich value + characteristics.
+ // Assessor roll layer: no per-parcel sale price or owner name (excluded by policy),
+ // but rich value + characteristics + parcel centroids (CENTER_LAT/CENTER_LON).
+ // TK-16: added CENTER_LAT/CENTER_LON so lat/lng populates as the sweep continues.
key: 'la-county', label: 'Los Angeles County CA (Assessor parcels)', cursorKey: 'la_county', geometry: false, orderBy: 'OBJECTID', pageSize: 1000, // server maxRecordCount=1000; pageSize>that broke the loop after 1 page
layer: 'https://public.gis.lacounty.gov/public/rest/services/LACounty_Cache/LACounty_Parcel/MapServer/0',
where: 'Roll_LandValue>0',
- outFields: 'APN,SitusFullAddress,SitusCity,SitusZIP,UseDescription,YearBuilt1,Bedrooms1,Bathrooms1,SQFTmain1,Roll_LandValue,Roll_ImpValue',
+ outFields: 'APN,SitusFullAddress,SitusCity,SitusZIP,UseDescription,YearBuilt1,Bedrooms1,Bathrooms1,SQFTmain1,Roll_LandValue,Roll_ImpValue,CENTER_LAT,CENTER_LON',
fieldMap: { source_id: 'APN', address: 'SitusFullAddress', city: 'SitusCity', zip: 'SitusZIP',
use_desc: 'UseDescription', year_built: 'YearBuilt1', beds: 'Bedrooms1', baths: 'Bathrooms1',
- sqft: 'SQFTmain1', land_value: 'Roll_LandValue', improvement_value: 'Roll_ImpValue' },
+ sqft: 'SQFTmain1', land_value: 'Roll_LandValue', improvement_value: 'Roll_ImpValue',
+ lat: 'CENTER_LAT', lng: 'CENTER_LON' },
toRecords: (fs) => fs.map(f => { const a = f.attributes; const apn = s(a.APN); if (!apn) return null;
const land = num(a.Roll_LandValue), imp = num(a.Roll_ImpValue);
return { fips: '06037', apn, address: clean(a.SitusFullAddress), city: clean(a.SitusCity), zip: s(a.SitusZIP),
+ lat: num(a.CENTER_LAT), lng: num(a.CENTER_LON),
use: clean(a.UseDescription), year: num(a.YearBuilt1), beds: num(a.Bedrooms1), baths: num(a.Bathrooms1),
sqft: num(a.SQFTmain1), totalValue: (land || imp) ? (land || 0) + (imp || 0) : null, raw: a } as Rec; }).filter(Boolean) as Rec[],
},
← 498df4a listings.html: load col-resize.js for parity with markets/br
·
back to Nationalrealestate
·
TK-5: add san-diego-sandag and santa-clara to hourly loop ro 49158f6 →