Releases: ohmg-dev/OldInsuranceMaps
v0.2.0
Summary
This release includes two new features:
- The addition of static XYZ tiles as a mosaic output
- The application does not yet make use of these tiles for any frontend pieces.
- For now, these tilesets can be created with a CLI command. In the future the creation will be automated or triggered from the frontend.
- Lists of Maps on the frontend now have an XYZ column to indicate whether a tileset has been made for that map
- Social authentication through OpenStreetMap
- Much more in the PR (see changelog below)
Upgrade steps
- Run
uv run manage.py migrate- This should install the newly added python dependencies
django-allauth[socialaccounts]andtopojson
- This should install the newly added python dependencies
- Run
uv run manage.py configure-servicesto remake the celery systemd files- The new services are
celery_mainandcelery_mosaic.
- The new services are
- Enable and start these services with provided instructions from the command
- Make sure these new workers are used by watching logs during a prep or georef session
- Disable and remove the old celery service, which is just called
celery.
To enable OpenStreetMap authentication, create a new OAuth 2 application in OSM and use that information in these two environment variables:
OSM_OAUTH_APP_CLIENT_ID="<etc>"
OSM_OAUTH_APP_SECRET="<etc>"
Bugfixes
- navbar height
- non-map modal toggle
- import error in s3 utils
- update the Atlascope footprints output to be in TopoJSON format
What's Changed
- Bugfixes: navbar height; non-map modal/toggle; download links; donor names by @mradamcox in #376
- 374 xyz tiles by @mradamcox in #377
- reorg s3 utils by @mradamcox in #379
- 143 osm auth by @mradamcox in #383
- Atlascope footprint output, display XYZ tiles url where available by @mradamcox in #384
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Why release now? This is the first tagged release of the OldInsuranceMaps.net code base in a very long time. The only prior release, v0.0.0-lahmg, tagged the code base a couple of years ago in its final state as a georeferencing extension for GeoNode, before I began the process of turning it into a standalone web application. That transition has been 100% complete for a long time now, and the code has been has been running in production with daily usage for years, even as I continue to fix bugs and add features. Last year I began managing a second deployment of OldInsuranceMaps (a private instance for a research group) and it's becoming messy to deploy fixes and features across these two instances with just branch management. So: it is high time to begin tagging releases in a more regular manner.
Overview
OldInsuranceMaps.net is a web georeferencing platform that facilitates crowdsourced contributions to the creation of seamless historical atlas mosaics. The underlying software is slowly becoming more generic and applicable for any maps, not just Sanborn atlases. Currently though, the line between the core package, Online Historical Map Georeferencer (OHMG), and the implementation of it at OldInsuranceMaps.net, is still blurry.
Features
These release notes have a baseline description and some screenshots of the platform's main features, future release notes will just have changes.
Processing workflow
- 3-step workflow for handling georeferencing activity
- Prepare: split an image (if needed)
- Georeference: create ground control points (GCPs)
- Trim: add a mask to remove margins if desired
- Handles common georeferencing complications
- Multi-page atlases
- Multiple insets or sections on the same page
- Also useful for folded maps with gaps between sections
- "Skippable" pieces that are too small to georeference well
- Non-map content, like title pages and indexes
- Session-based user input creates narrative of work performed
- Staff/admin accounts can undo any sessions as needed
Split interface
- Draw lines across a page to split it into different regions
- Upon submission, the input page is split into multiple files based on the defined regions
- Only necessary for pages that have insets or contain multiple maps
Georeferencing interface
- Manual ground control point (GCP) creation (define pixel coordinates -> define lat/long coordinates, repeat)
- Movable GCPs during editing
- After 3 GCPs, live preview shows warped overlay when GCP added or moved
- Polynomial and Thin Plate Spline transformations
- Target projections (this feature disabled in OldInsuranceMaps.net; EPSG:3857 is fine for all Sanborns)
- Reference layers
- Automatically added "key map" if one has been defined within the atlas
- Automatically added mosaic of all other georeferenced sheets in the same atlas
- Snappable parcel boundaries if a parcel layer has been created for the atlas' locale
Mosaic creation
- A "multi-mask" creation interface provides workflow for creating topologically sounds masks across many different layers
- Each vertex is snappable so adjacent layer masks will always have contiguous boundaries
- Vertices turn green when they are shared across multiple masks (easy visual inspection to find unsnapped vertices)
- A dashed red layer extent outline is added to the interface when a user hovers a layer name in the right-hand panel
- A server-side process can be run by a server admin to combine all masked layers into a single, downloadable geotiff
Map content management
- A database structure that models maps and pages to support the georeferencing workflow
- Map: a collector-style entry that can have one Document (for a standalone map) or many Documents (like a multi-page atlas)
- Document: a single scanned image
- A Document is "prepared" into one or more Regions
- Region: a defined portion of a Document, or entire boundary this Document was not split during preparation
- A region can be "skipped" to remove it from the georeferencing workflow, or marked as a non-map
- Layer: a georeferenced Region
- All layers are grouped by category into LayerSets
- Layers can have a mask defined which is an extra geojson polygon used to hide the margins of the page
- LayerSet: a thematic grouping of layers within a Map, like "main content" (the default), or "key map", or other categories
Import, export & web services
- Server-side direct import of any items from the Library of Congress Sanborn Map collection
- Server-side import of arbitrary files and non-Sanborn maps (requires local files or links and a CSV "manifest")
- An inherited Importer class pattern to provide foundation for future custom import pipelines
- Downloadable Cloud-Optimized GeoTIFF (COG) for any georeferenced layer
- Downloadable COG for any multi-layer mosaics that have been created (based on "multi-mask")
- Dynamic geospatial web services available for any layer or mosaic on the website
- Services are provided by TiTiler and include standard formats like XYZ Tiles, TileJSON, WMS, and more
- Annotations and AnnotationPages are generated that conform to the IIIF Georeference Extension and are directly viewable in Allmaps.org
Map viewer
- Basic interactive map viewer aggregates all "main content" mosaics for a given locale
- Opacity sliders allow multiple layers to be compared
- "stateful" url params track x/y/z position of the map view as well as opacity of all layers
What's Changed
- add simple endpoints for acquiring all tifs/jpgs/points (for MRM) by @mradamcox in #97
- Implement cogs in volume summary; add MultiMask by @mradamcox in #98
- App Restructure - model migrations by @mradamcox in #100
- Move documentation by @mradamcox in #103
- Add newsletter 42 by @mradamcox in #104
- Reset all migrations (remove GeoNode dependency completely) by @mradamcox in #120
- Preparation for 0.0.1-beta release by @mradamcox in #121
- Remove many unused images and much redundant docs content by @mradamcox in #123
- remove remnant import statements by @mradamcox in #124
- add recent activity etc. to home page, #10 by @mradamcox in #129
- add components by @mradamcox in #130
- Implement cache busting strategy by @mradamcox in #132
- Frontend Improvements by @mradamcox in #133
- Replace MapServer preview with TiTiler preview by @mradamcox in #136
- 83 overhaul modals by @mradamcox in #142
- Update compression strategy by @mradamcox in #145
- App restructure by @mradamcox in #146
- Frontend updates by @mradamcox in #150
- Merge dev to main by @mradamcox in #153
- Icon updates by @mradamcox in #163
- Install updates by @mradamcox in #164
- Merge dev/0.0.1 into main by @mradamcox in #165
- Frontend updates and prep for volume management by @mradamcox in #173
- 174 zoom level display by @mradamcox in #180
- Pages to db model by @mradamcox in #182
- Add virtual resource sets by @mradamcox in #186
- Importers by @mradamcox in #190
- Better navbar and more... by @mradamcox in #196
- Small updates by @mradamcox in #198
- redirect to current page after signin by @mradamcox in #199
- Packaging update by @mradamcox in #200
- Add layers api endpoint by @mradamcox in #202
- Data model upda...
v0.0.0-lahmg
This is the first tagged release, and its purpose is to preserve the state of the code base at the end of my master's thesis at LSU: Creating a Public Space for Georeferencing Sanborn Maps: A Louisiana Case Study.
Specifically, this release holds the most complete integration with GeoNode/GeoServer--a core aspect of the original project, but one that is likely to be factored out or split into an independent project in the coming months.
Description
This repository consists, primarily of two custom Django apps, based on the geonode/geonode-project paradigm. One app, georeference is designed as a standalone plugin for GeoNode that allows users to georeference Documents in the browser, turning them into Layers. The other app, loc_insurancemaps holds the theming and custom integration with the Library of Congress Sanborn Map Collection, through its JSON API.
Dependencies
In addition to a full installation of GeoNode 3.2.1, the georeference app requires MapServer, and its user interfaces are built with Svelte.
Documentation
Full documentation is in the docs/ directory, and (much) more information about the project as a whole is in my thesis linked above. However, a detailed installation guide does not exist at this time (but it can be furnished upon request).