One coordinate system for every project on the property: lot feet from the northwest fence corner, 50 ft cells A–G by 1–26, tied to latitude and longitude. Pages and code helpers all read the same data file.
Whole lot, north up, 50 ft cells
Reading a grid reference
Lot feet: x is feet east of the west fence, y is feet south of the north fence. The origin (0, 0) is the northwest fence corner, and the fences run true north–south and east–west.
Cells: a column letter (A–G, west to east) plus a row number (1–26, north to south). Each cell is 50 × 50 ft, so B19 is x 50–100, y 900–950. Write a spot as B19 (x 63, y 921) .
SiteRef: B19-E13-S21 means 13 ft east and 21 ft south of B19's northwest corner. See the SiteRef guide and examples on the second printed page.
Lot and location
Feature coordinates and SiteRefs
SiteRefs below identify feature centers, not the full extent of a building or water line. Generated codes round to 0.01 ft; this does not improve the map's roughly 10 ft GPS accuracy.
SiteRef Location Codes and Shared Helpers
Format: CELL-Eoffset-Soffset fits a precise location in one printed column. C17-E12-S18 means 12 ft east and 18 ft south of C17's northwest corner : x 112, y 818. Decimals are feet, not inches; C17-E12.5-S18 is valid.
Planted example: the M-111 rootstock at orchard R6-C3 is B10-E33-S35 (x 83, y 485) in the current layout. SiteRef locates the spot, not the plant: keep the metal tag and individual Plant ID separately. A replacement plant can reuse the spot's code.
Unknown locations: record PENDING, never guessed offsets. The three Urban apples' outside-orchard locations are pending. Keep cell and offsets as underlying values and generate SiteRef for printing; do not maintain a second editable copy.
GPS input: the shared metadata stores one latitude/longitude tie for the lot. Each cell's northwest-corner GPS coordinates are calculated from its x0, y0 values, not stored as a second table. Convert a GPS point with SiteGrid.fromLatLon(latitude, longitude), then generate its SiteRef. Latitude comes first; Idaho longitudes are negative. Near cell boundaries, phone GPS error plus the roughly 10 ft map accuracy can put a point in the neighboring cell; verify measured offsets.
Web pages load generated data/site_grid.js and data/site_terrain.js, then call SiteGrid. Edit canonical JSON in the repository's data/ directory; see the property data and SQLite guide .
Scripts and the command line use tools/site_grid.py, which reads the same files:
Conventions