{"id":14955737,"url":"https://github.com/kartta-labs/mapwarper","last_synced_at":"2025-10-01T01:31:31.210Z","repository":{"id":36237255,"uuid":"283538432","full_name":"kartta-labs/mapwarper","owner":"kartta-labs","description":"Historical maps georectfication ","archived":false,"fork":false,"pushed_at":"2022-12-14T12:05:06.000Z","size":15003,"stargazers_count":6,"open_issues_count":12,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-14T11:47:00.273Z","etag":null,"topics":["crowdsourcing","gdal","georectification","georeferencing","historical-maps","mapwarper","posgresql","rails-application"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kartta-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-29T15:40:42.000Z","updated_at":"2023-10-11T22:28:26.000Z","dependencies_parsed_at":"2022-07-27T11:15:11.204Z","dependency_job_id":null,"html_url":"https://github.com/kartta-labs/mapwarper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartta-labs%2Fmapwarper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartta-labs%2Fmapwarper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartta-labs%2Fmapwarper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartta-labs%2Fmapwarper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kartta-labs","download_url":"https://codeload.github.com/kartta-labs/mapwarper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234808946,"owners_count":18890088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crowdsourcing","gdal","georectification","georeferencing","historical-maps","mapwarper","posgresql","rails-application"],"created_at":"2024-09-24T13:11:38.990Z","updated_at":"2025-10-01T01:31:29.990Z","avatar_url":"https://github.com/kartta-labs.png","language":"Ruby","readme":"# Map Warper\n\nMapwarper is an open source map geo-rectification, warping and georeferencing application.\nIt enables a user to upload an image, a scanned map or aerial photo for example, and by placing control points on a reference map and the image, to warp it, to stretch it to fit.\n\n![Map Warper screenshot of main interface](/app/assets/images/Screenshot_MapWarper.png?raw=true \"Map Warper screenshot of main interface\")\n\nThe application can be seen in use at http://mapwarper.net for public use and in library setting at http://maps.nypl.org\n\nThe application is a web based crowdsourced geospatial project that enables people and organisations to collaboratively publish images of maps online and digitize and extract vector information from them.\n\nUsers rectify, warp or stretch images of historical maps with a reference basemap, assigning locations on image and map that line up with each other. Often these historical maps were in big paper books, and so for the first time they can be stitched together and shown as a whole, in digital format.\n\nUsers can crop around the maps, and join them together into mosaics (previously called layers).\n\nBy georeferencing the images, they can be warped or georectified to match the locations in space, and used in GIS software and other services. One such use of these warped maps is an application that that helps people digitize, that is, trace over the maps to extract information from them. For example, buildings in 18th Century Manhattan, details changing land use, building type etc. This application is called the Digitizer.\n\nThe application runs as a Ruby on Rails application using a number of open source geospatial libraries and technologies, including PostGIS, Mapserver, Geoserver, and GDAL tools.\n\nThe resulting maps can be exported as a PNG, GeoTIFF, WMS, Tiles, and KML for use in many different applications.\n\nGroups of maps can be made into \"mosaics\" that will stictch together the composite map images.\n\n## Documentation Index\n\n* [Overview](/README.md) (this document)\n* [Mapwarper Application in detail](/Mapwarper.md)\n* [Project Setup on GCP](/project_setup.md)\n* [Mapwarper \u0026 Kubernetes](/Mapwarper_kubernetes.md)\n\n## Features\n\n* Upload image by file or by URL\n* Find and search maps by geography\n* Adding control points to maps side by side\n* Crop maps\n* User commenting on maps\n* Align maps from similar\n* Create mosaics from groups of maps\n* Login via Github / Twitter / OpenStreetMap / Wikimedia Commons\n* OR signup with email and password\n* Export as GeoTiff, PNG, WMS, Tile, KML etc\n* Preview in Google Earth\n* User Groups\n* Map Favourites\n* Social media sharing\n* Bibliographic metatadata creation and export support\n* Multiple georectfication options\n* Keyboard shortcuts for map controls (save point etc)\n* Automagic placement of points based on transform\n* Import CSV of Control points to a map\n* Download CSV of control points\n* API\n  * JSON API Specifications\n* Admin tools include\n  * User statistics\n  * Activity monitoring\n  * User administration, disabling\n  * Roles management (editor, developer, admin etc)\n  * Batch Imports\n* Caching of WMS and Tile via Redis\n* i18n support\n  * English\n  * Dutch\n  * Japanese\n\n## Ruby \u0026 Rails\n\n* Rails 4\n* Ruby 2.4\n\n## Database\n\n* Postgresql 8.4+\n* Postgis 1.5+\n\n## Installation Dependencies\n\nIt's probably better to install everything locally but you can look at the Dockerfile to get an idea of what to install. Alternatively you can use docker compose to get it running \n\n\n### Ubuntu 16.04  18.04 \u0026 \n\nMapwarper should work on Ubuntu 16.04 - however there are issues with the Ubuntu package of GDAL and potentially with Mapserver (if not using package Ruby, e.g. RVM)\n\nGDAL needs to be compiled from source to ensure the gdal_rasterize bug is fixed. It should be installed locally and can exist with the package maintainers version. Then point to this newly compiled path in the application.yml file.\n\nIf rvm is being used, ruby mapscript for mapserver should be compiled from source, and then linked or installed into the path.  You can use the ubuntu package rubymapscript along with the system rub (2.3.1) without worrying about this.\n\nSee ubuntu16_18_installnotes for some hints as to what to do. \n\nUbuntu 18 by default has changed the imagemagick policies, so you can open up some of the limits. See config/imagemagick-policy.xml \n\n## Configuration\n\nCreate and configure the following files\n\n* `config/secrets.yml`\n* `config/database.yml`\n* `config/application.yml`\n\nIn addition have a look in `config/initializers/application_config.rb `for some other paths and variables, and `config/initializers/devise.rb `for devise and omniauth\n\n## Database creation\n\nCreate a postgis database\n\n` psql mapwarper_development -c \"create extension postgis;\" `\n\n## Database initialization\n\nCreating a new super user\n\nRun the rake task\n\n    rake warper:create_superuser\n\nand make a note of the generated password. \n\nAlternatively in the Rails console to do it by hand:\n\n    user = User.new\n    user.login = \"super\"\n    user.email = \"super@example.com\"\n    user.password = \"your_password\"\n    user.password_confirmation = \"your_password\"\n    user.save\n    user.confirmed_at = Time.now\n    user.save\n\n    role = Role.find_by_name('super user')\n    user = User.find_by_login('super')\n\n    permission  = Permission.new\n    permission.role = role\n    permission.user = user\n    permission.save\n\n    role = Role.find_by_name('administrator')\n    permission = Permission.new\n    permission.role = role\n    permission.user = user\n    permission.save\n\n## WMS/Tile Caching\n\nTo enable caching, install Redis and enable caching in the environment file. You may want to configure the redis.conf as appropriate to your server.\nFor example turning off saving to disk and setting a memory value for LRU  \"maxmemory 2000mb\" \"maxmemory-policy allkeys-lru\" keeps the redis server having 2gig and expires keys based on a least used algorithm.\n\n\n## Development\n\nProbably better to install and run things locally but you can get things going with Docker with a Dockerfile and a docker-compose yaml file which will set up a database and redis images too. \n\n## API\n\nSee README_API.md for API details\n\n## License\n\nMIT: see LICENSE\n\nNote that Tilestache which is bundled in lib/,  error_calculator.rb,  SelectFeatureNoClick.js and helmerttransform.js and all are individually BSD licensed. ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartta-labs%2Fmapwarper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkartta-labs%2Fmapwarper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartta-labs%2Fmapwarper/lists"}