Git Product home page Git Product logo

openmapkit's Introduction

This project is no longer being maintained.

POSM

This is the GitHub home of POSM (Portable OpenStreetMap). POSM's goal is to integrate best-of-breed tools from a variety of sources and developers on a single device that can be deployed to the field alongside Red Cross staff and volunteers and facilitate mapping efforts, particularly when internet access is absent.

More Information

For more information, check the following sources:

Glossary

This is intended to provide a working definition of various terms used throughout POSM.

  • AOI - Area of Interest.
  • Atlas (Field Papers) - Identified by a Field Papers URL and represented as a QR code.
  • Deployment - The sending of staff to a deployment AOI. Alternately, the provisioning of associated artifacts necessary to facilitate enumeration to a server accompanying staff into the field.
  • Deployment AOI - A region that staff are deployed to. Typically corresponds to imagery / logistical requests.
  • Digitization - Tracing / transcribing features present on a page into a GIS system (e.g. JOSM or iD).
  • Extent - Bounding box coordinates describing an AOI.
  • Field Enumeration - Collection of information about geographic features in the field.
  • Form (OpenMapKit) - Set of questions used during a field survey. Generally unique to a deployment AOI.
  • Page (Field Papers) - Single sheet of paper. Part of an atlas; identified using grid coordinates (e.g. A1, F6, ...). Corresponds to an individual survey area. Identified by a Field Papers URL and represented as a QR code.
  • Provision - Artifacts associated with a task area.
  • Snapshot (Field Papers) - Identified by a Field Papers URL.
  • Survey (OpenMapKit) - A survey is a set of questions being asked in a form. There are several types of questions, including: number, select one, select multiple, etc. OpenMapKit provides the ability to answer questions with OpenStreetMap data.
  • Survey Area - A focused area within a task area. Should be sized appropriately that multiple survey areas can be covered by the same time in a single day. Corresponds to a single page within an atlas.
  • Task Area - A focused area within the deployment AOI. Corresponds to a set of pages within an atlas.
  • Response (OpenMapKit) - Collected metadata for an individual feature within a survey area.

Hardware

Our hardware target is an Intel NUC. More info is available in the docs.

Project-related Repositories

POSM is an aggregation of tools that are used in field enumeration and digitizing efforts. This is a list of some of those tools and how they fit into the overall effort.

POSM

  • POSM - You are here. This is the umbrella project for the POSM project and contains documentation and project-wide tasks.
  • posm-admin - Simple admin interface for posm configuration & management.
  • posm-build - Build scripts and configuration for software deployment.
  • osm-export-tool2 - A fork of the HOT Export tool used to create POSM data bundles.
  • posm-admin-ii - Next-generation admin interface for OpenDroneMap + Imagery API management.
  • posm-imagery-api - GeoTIFF tiling (including MBTiles generation).
  • posm-opendronemap-api - Produce GeoTIFFs and 3D models from UAV photos using OpenDroneMap.

OpenMapKit

Field Papers

  • fieldpapers - Umbrella project for Field Papers. Contains documentation and issues.
  • fp-legacy - (Now-unused) PHP code for the website, Python atlas creation + snapshot processing tools
  • fp-tasks - Node.js-based HTTP task runner for generating atlases and processing snapshots.
  • fp-tiler - tessera-based GeoTIFF map tiler for processed snapshots.
  • fp-web - Rails-based Field Papers website.
  • josm-fieldpapers - JOSM plugin for Field Papers.
  • Transifex - Field Papers translations.

Ancillary

  • OpenDataKit - Mobile data collection for Android.
  • OpenStreetMap - The one, the only, OpenStreetMap.
  • tessera - tilelive-based tile server. Can be used for serving static tiles (from MBTiles archives or elsewhere) and for rendering new data.
  • tl - tilelive-based tile utility belt. Used for creating MBTiles archives from both local and remote sources.
  • pyXforms-for converting Excel based surveys.
  • OpenDroneMap - process photos taken by UAVs into GeoTIFFs and 3D models using Structure from Motion.
  • ...

openmapkit's People

Contributors

danbjoseph avatar hallahan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmapkit's Issues

OpenStreetMap Architecture

OpenStreetMap Architecture

We are currently evaluating several approaches to handling OSM data, and each approach has advantages and disadvantages. This document is tracking each option so that we can evaluate the best path forward.

Required Functionality

As it stands, we need a system that accepts many small OSM changesets received by OpenMapKit Server. There are many OSM files, and these files are stored on the file system.

This system must also be able to ingest source OSM data from a given HTTP endpoint. This format needs to be OSM XML, and OSM PBF would be a bonus.

We must be able to filter our edited OSM data by various parameters. This ability will allow us to gather and validate data to submit for a given user, and the ability to gather certain subsets of the edited data will be very useful in the workflow of submitting finally submitting edits to the OSM Editing API.

We need to visualize our OSM data on a map. Two approaches can be taken.

  1. We will render raster or vector tiles of our data using Mapnik or an equivalent tool. This approach will allow us to apply cartographic styling and have tiles appropriate for final visualization.
  2. We will only serve OSM XML though a REST API. This approach will not create tiles, but it will be sufficient to provide data needed by the iD editor as well as the basic vector rendering functionality of OpenMapKit Android.

Regardless of the approach, we must serve OSM XML with a REST API compatable with the OSM 0.6 Editing API.

Database / Datastore

We have explored 3 options for handling our OSM data.

Flat OSM XML Files

Currently, Ona and OpenMapKit Server provide an aggregation of OSM edits for a given form by concatenating all of the small OSM media attachments received by the ODK server. This is only sufficient for handling tag edits of existing OSM elements, because new OSM elements are created by assigning arbitrary negative IDs consistent only within the given OSM file. As these files are read and aggregated together, new negative IDs need to be assigned. This is possible if we parse each OSM file and assign new IDs ad hoc in the aggregation operation.

Pros

  • Very simple.
  • No database dependency.
  • Can still provided the required end result of an aggregation of OSM edits for iD.

Cons

  • Very slow to parse and handle hundreds of OSM files repeatedly for each change in the underlying data.
  • Filtering OSM data based on parameters is cumbersome.
  • Rendering OSM XML directly in Mapnik is not recommended.

Spatialite Database

R&D efforts have focused on using Spatialite as the underlying database. Spatialite is SQLite with spatial extensions. An initial sprint that builds an OSM data model with Spatialite has been completed as OSMSpatialite. This approach was written in C++11 and is geared towards being compatible with AmigoClient. The data model is similar to the data model found in the current OpenMapKit Android.

Pros

  • Unified data model that can work on a server as well as Android / iOS.
  • Work already started.
  • Logical choice for a low resource platform.
  • Likely the most performant option.
  • Mapnik works with Spatialite as a data source.

Cons

  • Requires NodeJS Bindings for the REST API.
  • We have not yet tested how well Spatialite works with Mapnik.
  • C++11 has a learning curve. All team members may not be comfortable with using this language.
  • Macrocosm currently only supports a Postgres backend. Changes would need to be made to also support Spatialite.

PostGIS Database

As a team, we have the most experience working with PostGIS. The master OSM 0.6 Editing API uses Postgres as a backend, and Macrocosm is already built to leverage PostGIS. This is a traditional RDBMS, and it is not built to run on a low resource, embedded system.

Pros

  • Standard backend for Mapnik.
  • Compatible with Macrocosm.
  • Typical choice for OSM backend.
  • Osmosis can be used to populate db with source data.

Cons

  • Business logic of ingesting edits needs to be fleshed out.
  • Less performant for low resource device.
  • Cannot be built to also run on Android.
  • Macrocosm is meant to replace OSM API, not meant to be a staging server that submits to OSM API.

Currently, our evaluation involving PostGIS is focused around learning about Macrocosm. If we use this tool, we will have to adapt it significantly to meet our needs. It will need to be reimagined for the staging use case. It doesn't look like the model takes into account OSM users, and some important attributes found in the master OSM model are missing.

Support for vectors

It would be nice if it was possible to add vectors in an easy way, either by drawing them on the map or by using a gps track. This could be usefull to map roads, fences, etc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.