A self-contained local web app for georeferencing an aerial JPEG against OSM, then overlaying the result back on OSM.
pip install flask pillow numpy gdalGDAL note:
- Linux/Mac:
pip install gdal(needs libgdal-dev installed first) - Windows:
conda install -c conda-forge gdalor use the wheel from https://github.com/cgohlke/geospatial-wheels/releases
python app.py --image /path/to/your/aerial.jpgOpens automatically at http://localhost:5050
- The left panel shows your aerial image (pan with any mouse button drag or two-finger swipe; pinch or scroll to zoom)
- Click any recognizable road intersection on the aerial — a yellow circle-crosshair cursor shows the active pick point
- The right panel (OSM) activates — navigate to the same intersection and
click it. Use the Go To box (top-right of the OSM panel) to jump
quickly to a place name, address, or
lat, loncoordinates. - Green marker appears on OSM, GCP added to the sidebar list
- Repeat for 6–10 points spread across the image
- Once you have ≥ 4 GCPs the "Generate GeoTIFF" button enables
- Click it — GDAL warps the image using Thin Plate Spline transformation
OSM default view starts at the Golden Gate Bridge. Use the Go To box to navigate to your area of interest before picking GCPs.
After warping completes the app switches here automatically.
- Your georeferenced aerial is overlaid on OSM
- Use the opacity slider to compare alignment
- If alignment looks off, go back to Tab 1, add/fix GCPs, and re-warp
Written next to your input image:
<name>_georef.tif— GeoTIFF with embedded coordinate system (EPSG:4326)<name>_tiles/— XYZ tile pyramid for fast overlay serving (if gdal2tiles is available)
A self-contained local web app for georeferencing an aerial JPEG against OSM, then overlaying the result back on OSM.
pip install flask pillow numpy gdalGDAL note:
- Linux/Mac:
pip install gdal(needs libgdal-dev installed first) - Windows:
conda install -c conda-forge gdalor use the wheel from https://github.com/cgohlke/geospatial-wheels/releases
python app.py --image /path/to/your/aerial.jpgOpens automatically at http://localhost:5050
- The left panel shows your aerial image (pan with middle-click/right-click, zoom with scroll)
- Click any recognizable road intersection on the aerial → orange crosshair appears
- The right panel (OSM) activates — navigate to the same intersection and click it
- Green marker appears on OSM, GCP added to the sidebar list
- Repeat for 6–10 points spread across the image
- Once you have ≥ 4 GCPs the "Generate GeoTIFF" button enables
- Click it — GDAL warps the image using Thin Plate Spline transformation
After warping completes the app switches here automatically.
- Your georeferenced aerial is overlaid on OSM
- Use the opacity slider to compare alignment
- If alignment looks off, go back to Tab 1, add/fix GCPs, and re-warp
Written next to your input image:
aerial_georef.tif— GeoTIFF with embedded coordinate system (EPSG:4326)aerial_tiles/— XYZ tile pyramid for fast overlay serving (if gdal2tiles is available)
Once you have the GeoTIFF, run the OCR pipeline:
python ocr_pipeline.py --geotiff aerial_georef.tif(see ocr_pipeline.py — outputs labels.geojson)