This commit is contained in:
zyphlar
2026-05-12 18:02:03 -07:00
parent e94b1d2959
commit 37398aac8c
+68 -75
View File
@@ -8,17 +8,26 @@
## Using
For each county, run the four steps in order using the dashboard. Each step must complete before the next:
1. **Download county data** — fetches the county dataset (or upload a shapefile ZIP for paths)
2. **Download OSM data** — queries Overpass for the relevant features in the county
3. **Convert to GeoJSON** — converts the county data to OSM-tagged GeoJSON
4. **Diff vs OSM** — compares county data against OSM; produces added (green) and removed (red) GeoJSON
Open the result in the Map Viewer. Green = features in county data missing from OSM (candidates to add). Red = features in OSM not in county data. Hide the OSM (gray) and county (purple) layers to focus on the diff. Click a feature to inspect its properties and accept or exclude it. Open accepted features in JOSM for final review before uploading.
### Roads
Queries Overpass for all highway types: motorway, trunk, primary, secondary, tertiary, residential, unclassified, and their link variants, plus service and track.
### Addresses
Run after Roads to reduce validation errors. Easiest to hide existing (gray) and removed (red) and just focus on what new addresses to add.
Open in JOSM, and download the affected areas from OSM including highways with this Overpass query:
Run roads first — having street geometries in JOSM reduces address validation errors during upload. Queries Overpass for all `addr:*` nodes and ways. Easiest to also hide removed (red) and focus only on added (green) addresses missing from OSM.
### Paths
Only Sumter currently has paths available.
Only Sumter currently has paths available. Queries Overpass for foot, bicycle, and multi-use paths.
## Docker Quick Start
@@ -81,22 +90,37 @@ docker push your-registry.example.com/you/osm-import-tools
## Features
### Main Dashboard (/)
- Run data processing scripts for Lake and Sumter counties
- View real-time script output
- Access to:
- Diff Roads
- Diff Addresses
- Diff Multi-Use Paths
- Download OSM Data
- Run data processing scripts per county (Roads, Paths, Addresses)
- View real-time script output with colored status indicators
- Live CPU/memory/disk usage charts during execution
- Cancel running jobs
- Quick-access links to processed GeoJSON files
### Map Viewer (/map)
- Interactive map viewer for GeoJSON files
- Upload and compare OSM, Diff, and County data
- Filter by removed/added features
- Hide highway=service roads
- Drag-and-drop layer reordering
- Click on features to view properties
- Accept/reject diff features
- Interactive Leaflet map for comparing GeoJSON layers
- Layer controls with drag-and-drop reordering
- Filter by added (green) / removed (red) features
- Hide service, track, and unclassified roads
- Click features to inspect properties
- Accept/reject diff features and save results
- Multi-select mode (or Shift+drag) for bulk operations
### Counties (/counties)
- Define counties with ID, name, state, color, and download URLs
- Download/upload the `counties.yml` config file
### Street Exceptions (/exceptions)
- Manage street name corrections (e.g. "D Angelo" → "D'Angelo")
- Download/upload the `exceptions.yml` config file
### Exclusions (/exclusions)
- Define field/value pairs to exclude from diff output
- Exclude button on map popups for quick additions
- Download/upload the `exclusions.yml` config file
### Authentication
- Login required for all write operations
- Admin user configured via `ADMIN_PASSWORD` environment variable
## Volume Mounts
@@ -106,17 +130,39 @@ The Docker container mounts a single data directory:
Inside `/data`, the structure is:
- `/data/lake/` - Lake County data
- `/data/sumter/` - Sumter County data
- `/data/counties.yml` - County definitions
- `/data/exceptions.yml` - Street name corrections
- `/data/exclusions.yml` - Exclusion rules
- `/data/users.yml` - User credentials
All changes are persisted on the host in the local `./data` folder.
## API Endpoints
- `GET /` - Main dashboard
- `GET /map` - Map viewer
### Auth
- `GET /api/auth-status` - Check authentication status
### Script Execution
- `POST /api/run-script` - Execute a processing script
- `GET /api/job-status/<job_id>` - Get script status and logs
- `GET /api/job-status/<job_id>` - Get job status and logs
- `POST /api/cancel-job` - Cancel a running job
### File Operations
- `GET /api/list-files` - List available GeoJSON files
- `GET /data/<path>` - Serve GeoJSON files
- `POST /api/upload-file` - Upload shapefile ZIP
- `POST /api/clear-data` - Delete all county data files
- `GET /data/<path>` - Serve data files
### Configuration
- `GET /api/config/<filename>` - Download a YAML config file
- `POST /api/config/<filename>` - Upload a YAML config file
- `GET/POST /api/counties` - Get or save county configuration
- `GET/POST /api/exceptions` - Get or save street exceptions
- `GET/POST /api/exclusions` - Get or save exclusions
- `POST /api/exclusions/add` - Append new exclusions (skips duplicates)
### System
- `GET /api/system-stats` - CPU, memory, and disk usage
## Troubleshooting
@@ -166,56 +212,3 @@ addr:postcode=33513
addr:state=FL
addr:street=Hideaway Circle
- Sr is SR (State Route)
### Corrections
{
"corrections": [
{
"from": "D Angelo Lane",
"to": "D'Angelo Lane"
},
{
"from": "Lajolla Circle",
"to": "La Jolla Circle"
},
{
"from": "Gardena Court",
"to": "Gardenia Court"
},
{
"from": "Glenmont Court",
"to": "Glenmount Court"
},
{
"from": "Pawleys Island Path",
"to": "Pawley's Island Path"
},
{
"from": "Oday Street",
"to": "O'Day Street"
},
{
"from": "Obrien Place",
"to": "O'Brien Place"
},
{
"from": "Ohara Court",
"to": "O'Hara Court"
},
{
"from": "Drive Randy Mcdaniel Way",
"to": "Doctor Randy McDaniel Way"
},
{
"from": "Mcneillrescue Lane",
"to": "Rescue Lane"
},
{
"from": "Longleaf Lane",
"to": "Long Leaf Lane"
}
]
}