Full procedure for researching a new site address — parcel lookup, APN, lot area, polygon extraction from GIS portals, and writing the skeleton JSON. Use when adding a new site or verifying parcel data.
Walk through the complete GIS intake procedure for a new or existing site.
$ARGUMENTS — address string, or site ID to verify, or "list" to show all sitesTaking a street address and turning it into a complete site JSON with verified parcel data. This is Flow A in the architecture diagram (Output/architecture.html).
This is purely data research + JSON editing + py tools/build.py. The browser engines (MapEngine, SetbackEngine, etc.) are not involved until after the build.
Goal: Get APN, lot area (SF), lot dimensions, legal description, year built.
ParcelQuest at
assr.parcelquest.com469-690-20-00)Primary source — Washington: King County Assessor at blue.kingcounty.com/assessor/eRealProperty
0723049368)National fallback: Regrid at app.regrid.com — aggregates county data nationwide
Goal: Get lat/lng centroid and decide rectangle vs polygon mode.
Centroid from Google Maps:
saved.lat and saved.lngRectangle vs Polygon decision:
parcelPolygon: [])Polygon extraction from GIS portal:
parcelPolygon as [[lat1,lng1], [lat2,lng2], ...]Goal: Get zoning designation, setbacks, FAR, height limit, density.
Sources by jurisdiction:
sandiego.gov/development-services/zoningfrontSetback, rearSetback, sideSetback, baseFAR, maxHeight, densityPerSFcommFAR, commercialDepthGoal: Get DIF rates, NEF rates, affordability %, inspector contacts.
Sources:
nefRatePerSF, difPerUnit, difWaiverSF, affordabilityPct, inspectors[]File location: data/sites/{state}-{id}_{name}.json
Naming convention: State abbreviation, hyphen, assessor short ID, underscore, street name
Example: ca-4335_Euclid.json
Structure:
{
"site": {
"address": "...",
"apn": "...",
"zoning": "...",
"lotWidth": 50,
"lotDepth": 150,
"lotSF": 7500,
... (all 40+ fields)
},
"saved": {
"lat": 32.7556,
"lng": -117.0919,
"rotation": 0,
"buildings": [],
"setbacks": { "front": 0, "rear": 0, "sideL": 0, "sideR": 0 }
}
}
TBD format: For any field not yet confirmed: "-- TBD: [what] | Source: [where]"
Add entry to data/sites/index.json:
{ "id": "CA-4335_EUCLID", "file": "ca-4335_Euclid.json", "address": "...", "status": "skeleton" }
Set activeSiteId in data/site-data.json, then run py tools/build.py.
Open localhost:3040, confirm: