A single-page web tool (plain HTML + CSS + JavaScript, no build step) for making printable NAD83 State Plane coordinate grid maps, with an optional lat/lon graticule on the same map.
Open index.html (or host the folder on any static web server / GitHub Pages).
- Pan/zoom a Leaflet map, then Draw region (drag a rectangle) or Use current view.
- The State Plane zone is auto-detected from the region (all 124 NAD83 SPCS zones, CONUS + Alaska + Hawaii + Puerto Rico/USVI); override it from the dropdown.
- Grid units (US survey feet / international feet / metres) and spacing (auto, a list of round values, or custom), with optional 1/5 minor grid and labels every nth line.
- Lat/lon graticule (auto or fixed spacing; D°M′S″, D°M.MMM′ or decimal labels) drawn in a second colour, with labels outside the region frame so the two systems don't collide. The footer shows the cursor position in both systems.
- Print / Save PDF: fits the region to a chosen paper size (Letter/Tabloid/A4/A3) with a title block (zone, EPSG code, spacing, approx. scale, date); use the browser's print dialog to save as PDF.
- Download grid (GeoJSON) for use in QGIS etc.
- Basemaps: OpenStreetMap, USGS Topo, USGS Imagery, Esri World Imagery, or none.
- Settings and the last region are remembered in
localStorage.
| File | Purpose |
|---|---|
index.html |
page / controls |
style.css |
screen layout and print layout |
app.js |
map, projection (proj4js), grid + graticule drawing, print, export |
zones.js |
NAD83 SPCS zone table: EPSG code, proj4 string, area-of-use bbox, conventional unit. Generated from the EPSG database via pyproj/PROJ 9.5.1 |
Leaflet 1.9.4 and proj4js 2.11 are loaded from CDNs (unpkg / cdnjs); everything else is local.
- Grids use the metre-based EPSG definitions and convert to feet, so a 1000 ft (US) grid matches the corresponding "(ftUS)" EPSG CRS exactly.
- Grid lines are true State Plane lines (slightly curved/rotated relative to the Web Mercator map), clipped to the region rectangle.
- Printed scale is approximate (assumes 96 CSS px per inch); use the scale bar or the grid itself for measurement.