{"id":17269490,"url":"https://github.com/systemed/conflation","last_synced_at":"2025-10-12T22:13:51.002Z","repository":{"id":145599584,"uuid":"179030992","full_name":"systemed/conflation","owner":"systemed","description":"OpenStreetMap Live Conflation","archived":false,"fork":false,"pushed_at":"2019-05-14T11:36:46.000Z","size":544,"stargazers_count":14,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T21:46:50.164Z","etag":null,"topics":["openstreetmap"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/systemed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-04-02T08:17:00.000Z","updated_at":"2025-01-29T20:18:24.000Z","dependencies_parsed_at":"2024-01-07T03:40:14.532Z","dependency_job_id":"b5e5573e-8f7d-4b07-83b6-6be521032c90","html_url":"https://github.com/systemed/conflation","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/systemed%2Fconflation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Fconflation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Fconflation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Fconflation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/systemed","download_url":"https://codeload.github.com/systemed/conflation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248843867,"owners_count":21170492,"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":["openstreetmap"],"created_at":"2024-10-15T08:16:25.883Z","updated_at":"2025-10-12T22:13:50.923Z","avatar_url":"https://github.com/systemed.png","language":"CSS","funding_links":[],"categories":["amazing insight and delivery"],"sub_categories":["openstreetmap"],"readme":"### OpenStreetMap Live Conflation\n\nOSM Live Conflation provides a visual interface for manually merging third-party datasets into OpenStreetMap.\n\nYour third-party data is encoded into vector tiles (Mapbox MVT format). The UI enables mappers to select items from the vector tiles and either transfer their attributes to existing OSM objects, or create new objects. By calling the OSM API to find nearby features and then matching based on proximity and tag similarity, the most likely candidates are presented first. Once the mapper has merged their chosen features, the resulting changes can be uploaded direct to the OSM API.\n\n### Requirements\n\nThe server is written in Ruby. The sqlite gem is required (to serve vector tiles in .mbtiles format), and either rack (for a local webserver) or Phusion Passenger (for deployment). If deploying with Phusion Passenger, use the supplied config.ru and point your Apache root to /srv/yoursitename/static .\n\nVector tiles are prepared using [tilemaker](https://github.com/systemed/tilemaker). You are recommended to build the latest version from source.\n\n### Getting up and running\n\nMake sure your input data is in shapefile format, EPSG 4326 projection (simple WGS84 lat/long). You can convert most vector formats to shapefile using ogr2ogr, for example:\n\n\togr2ogr -f \"ESRI Shapefile\" -t_srs \"EPSG:4326\" shp OOCIE_Extract_20190214.gdb.zip\n\nThen create vector tiles from the data using tilemaker. To do this you'll need to write two config files, examples of which are provided.\n\n* config.json lists the shapefiles that you want to read; what zoom levels each should show up at; and the bounding box for your project.\n* process.lua is a Lua script that reads the shapefile attributes and converts them to OSM tags. This is where you put your tag remapping logic. `attribute_function` is called with a table (hash) of shapefile attributes and must return a table (hash) of OSM tags.\n\nMake sure you're in the directory containing these two files, then simply\n\n    tilemaker --output vector_tiles.mbtiles\n\t\nThe result is an .mbtiles file containing vector tiles with all your data. (An example is provided: delete this before creating your own.)\n\nYou can now spin up the server. To run it locally:\n\n    ruby server.rb vector_tiles.mbtiles\n\t\nThen open the site at http://localhost:8080/index.html .\n\n### Using OSM Live Conflation\n\n![Screen layout](https://www.systemed.net/osm/conflation_screenshot.jpg \"OSM Live Conflation\")\n\nYour source data is on the left, OSM on the right.\n\nThe points and lines from your source data are overlaid on a satellite map. Clicking on any of these will identify OSM candidates to be modified, or a new geometry to be created. Use the 'Next \u003e' button to page through the candidates. Each candidate is highlighted on the OSM map (top right) as you do so.\n\nOnce you've chosen one, you can use the checkboxes to deselect any tags you don't want to be applied. Click 'Accept' to make the change. The source feature is temporarily removed from the left-hand map when you do so. (If you don't want to remove it - for example, if a source feature maps to more than one OSM feature - then click 'Accept and keep open').\n\nTo upload your changes, enter your OSM username and password into the input fields; click 'Upload'; and enter a changeset comment.\n\nKeyboard shortcuts are available: 1-9 to toggle tags, Space to cycle through candidates, Enter to accept, Delete to ignore.\n\n### Using vector tiles in iD\n\nYou can also load your vector tiles directly into iD, OpenStreetMap's default online editor.\n\nIn iD, click the 'Map data' icon on the right, then '...' by 'Custom Map Data'. In the dialogue that appears, enter a URL like https://url.of.your.server/{z}/{x}/{y}.pbf .\n\n### Advanced tag remapping\n\nWhen rewriting tags into vector tiles, you can add special keys/values. Currently the following are supported:\n\n* You should always add an \"id\" key with a value unique to that feature. (Since a feature may cross vector tile boundaries, this enables features to be consistently removed from the source map display.)\n* The key \"_match_key\" indicates that candidates must have a tag with that key (e.g. _match_key=highway)\n* A key \"_filter\", with value \"waynode:highway\", indicates that candidates must be nodes within a highway way\n* Any other key beginning with \"_\" will be ignored (useful for comments)\n\n### About this project\n\nWork on this project was supported by the Open Data Institute via Oxfordshire County Council: https://theodi.org/article/the-projects-were-funding-to-explore-open-geospatial-data-in-local-government/\n\nSee https://github.com/systemed/conflation/issues/1 for a to-do list of identified enhancements.\n\nMap rendering is via [Mapbox GL](https://github.com/mapbox/mapbox-gl-js) and [Leaflet](https://leafletjs.com).\n\nMIT licence, (c) Richard Fairhurst 2019.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemed%2Fconflation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsystemed%2Fconflation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemed%2Fconflation/lists"}