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 ## 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 ### Roads
Queries Overpass for all highway types: motorway, trunk, primary, secondary, tertiary, residential, unclassified, and their link variants, plus service and track.
### Addresses ### 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. 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.
Open in JOSM, and download the affected areas from OSM including highways with this Overpass query:
### Paths ### 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 ## Docker Quick Start
@@ -81,22 +90,37 @@ docker push your-registry.example.com/you/osm-import-tools
## Features ## Features
### Main Dashboard (/) ### Main Dashboard (/)
- Run data processing scripts for Lake and Sumter counties - Run data processing scripts per county (Roads, Paths, Addresses)
- View real-time script output - View real-time script output with colored status indicators
- Access to: - Live CPU/memory/disk usage charts during execution
- Diff Roads - Cancel running jobs
- Diff Addresses - Quick-access links to processed GeoJSON files
- Diff Multi-Use Paths
- Download OSM Data
### Map Viewer (/map) ### Map Viewer (/map)
- Interactive map viewer for GeoJSON files - Interactive Leaflet map for comparing GeoJSON layers
- Upload and compare OSM, Diff, and County data - Layer controls with drag-and-drop reordering
- Filter by removed/added features - Filter by added (green) / removed (red) features
- Hide highway=service roads - Hide service, track, and unclassified roads
- Drag-and-drop layer reordering - Click features to inspect properties
- Click on features to view properties - Accept/reject diff features and save results
- Accept/reject diff features - 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 ## Volume Mounts
@@ -106,17 +130,39 @@ The Docker container mounts a single data directory:
Inside `/data`, the structure is: Inside `/data`, the structure is:
- `/data/lake/` - Lake County data - `/data/lake/` - Lake County data
- `/data/sumter/` - Sumter 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. All changes are persisted on the host in the local `./data` folder.
## API Endpoints ## API Endpoints
- `GET /` - Main dashboard ### Auth
- `GET /map` - Map viewer - `GET /api/auth-status` - Check authentication status
### Script Execution
- `POST /api/run-script` - Execute a processing script - `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 /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 ## Troubleshooting
@@ -166,56 +212,3 @@ addr:postcode=33513
addr:state=FL addr:state=FL
addr:street=Hideaway Circle addr:street=Hideaway Circle
- Sr is SR (State Route) - 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"
}
]
}