[object Object]

← 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

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 →