readme
This commit is contained in:
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user