Git Product home page Git Product logo

openmapkitserver'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.
  • ...

openmapkitserver's People

Contributors

ahmedopeyemi avatar danbjoseph avatar eoglethorpe avatar hallahan avatar mojodna avatar rrlara avatar russbiggs avatar smit1678 avatar trendspotter avatar willemarcel 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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

openmapkitserver's Issues

No Data No Crash

If you try to hit endpoints with no ODK submissions, the server crashes, because it's missing directories. Don't crash in this situation, it's ok.

Simple Auth

sometimes you want very basic auth to protect the site if you put it up publically anywhere.

Add support for simple username/pass for one user for the entire site. No need to do user management and all that jazz.

This should be configurable to be default off and then turned on via posm-build install

Material Design Lite CSS

We want to use Material Design Lite.

There are many ways to bring it in as a package like npm and bower, but let's just directly include it in the Jekyll project so we don't have yet another dependency.

We do want to tweak the CSS to have the OpenMapKit Look and feel. Take a look at OpenMapKit iD editor. We want to match those colors for the top bar and other elements.

screenshot 2016-02-26 11 55 45

OpenMapKit Icon

ic_omk_nobg-web

OSM Green: #7ebc6f
OSM Light Green: #ff8bd27c
OSM Dark Green: #83b26e

Check that XLS Form is xlsx format

pyxform only understands xlsx format. It does not understand xls format. Make sure that it checks for this and provides an informative error.

Handle Bad Manifests Gracefully

Currently the /omk/deployments endpoint is down on Dale's server. We're getting

{
status: 500,
msg: "Unexpected token ]",
err: { }
}

This is because the JSON in one of the manifests is formatted improperly. Handle this gracefully so the rest of the deployments continue to show up.

cc/ @dalekunce

Take out dead submissions link

In the upper right there is a link to submissions that isn't associated with a form.

We don't need that link, since there is a link to the submissions for a given form in the Forms page

Create OSM Submission Module

This module should directly talk to get-osm-submissions.js to get OSM data. This module is responsible for opening and submitting changesets to an OSM server.

Form Upload: DnD & File Name

screenshot 2016-03-04 11 12 23

1. The user should be able to drag and drop a file in the box. 2. After a file has been selected, show the name of the file so that the user knows that it is staged to be submitted.

Deployment Provisioning

This is the master issue of the server component regarding the provisioning of data for a field deployment.

Below is the drawing from the kickoff meeting describing how a deployment is abstracted.

deployment-provisioning

OpenMapKit Server will provide all of the proper metadata needed by OpenMapKit Android to find and retrieve data associated with a deployment. The actual data will be served as static assets, and metadata for a specific deployment will reside in a manifest.json file within the directory of the deployment.

The actual OSM data in the deployment such as OSM XML and MBTiles will be generated by posm.

Work on this feature will be in the deployment branch.

Form upload GUI

Need a simple GUI to upload forms to the server. Ideally this would be a drag and drop interface.

Limit For .osm End Point

Create a limit query parameter limits how many OSM XML files make it to the response. Using this a long side with the blacklist checksum patching mechanism, we can paginate through all of the OSM in chunks we feel comfortable with.

Aggregate OSM submissions with Filter Funcationality (Partial Data Export)

for times when data is collected over multiple days but we want to do a rolling upload to OSM. it would be nice to have a way to export (or just get easily, through filtering in JOSM somehow) a subset of the osm file export

for example data collected on Tuesday is downloaded, conflicts resolved and it’s uploaded on Wednesday, more data collection on Thursday, want to get an osm file with only the new data submissions. can use the 'purge' advanced JOSM tool to have it forget selected data but you still have to be able to know which features are new and somehow select everything else.

ODK CSV Export

Hi all,

I success build OMK Server in my local server and right now I'm curious about how to download all the result from field mapping because all the finished form that i uploaded to server have unique folder name with .json and .xml file inside the folder.

Is OMK server also have capabilities to append/combine all the submitted form as one csv file? If yes, would you guys tell me how to do it? Thanks

Remove const to support old NodeJS

I think using const keyword is the only thing stopping us from running on NodeJS 0.10.*. Might be good to just go old school and use var only.

What version of Node does this assume?

Our best-practice is to pin it to either a specific patch or minor version using a .nvmrc in the project's root directory. See nvm more more info.

A sample .nvmrc that pins Node to 4.2.x (assuming users use nvm and run nvm use / nvm install) looks like:

4.2

link to http://openmapkit.org is broken

I get this message when I want to visit the website :

404
There isn't a GitHub Pages site here.
If you're trying to publish one, read the full documentation to learn how to set up GitHub Pages for your repository, organization, or user account.

GitHub Status — @githubstatus

need more detailed error reporting when uploading forms

is it possible to include any more details when a form fails to upload?

omkserver appears to have just one generic message:
screen shot 2016-04-16 at 9 59 50 am
(also, which appears to be missing a space before the file name)

formhub is much more helpful:
screen shot 2016-04-16 at 9 59 35 am

Check form_id is unique

ODK Collect only shows one form if the server has multiple forms with the same ID. Upon upload, check this, and inform the user if there is a problem (or automatically add a number at the end).

Failed when trying to run npm install

Hi,

I want to try OMK server in my virtual machine (Ubuntu Server 15). And when i want to run npm install i got these error:

image

Do you guys know what's the problem? Did i missing something that i need installed before i run npm install?

My position is fresh install Ubuntu Server 15.04 and just installed npm for run npm install

delete survey UI

currently there is no way to delete a survey using the GUI.

Be sure to include a confirmation dialog.

Forms Page

We need a page showing the forms available. This endpoint shows a list of forms:

/formList?json=true

An example of this endpoint's response:

{
  "xforms":{
    "attributes":{
      "xmlns":"http://openrosa.org/xforms/xformsList"
    },
    "xform":[
      {
        "name":"Building Placeholders",
        "formID":"building_placeholders",
        "hash":"md5:0e13893e49a5e567f864de01de6ab2c0",
        "downloadUrl":"http://localhost:3210/omk/data/forms/building_placeholders.xml"
      },
      {
        "name":"Buildings",
        "formID":"buildings",
        "hash":"md5:007b8707e0bb9c2c6ef53502df915ae7",
        "downloadUrl":"http://localhost:3210/omk/data/forms/buildings.xml"
      },
      {
        "name":"Buildings with POIs",
        "formID":"buildings_with_pois",
        "hash":"md5:b4d9f02b7fd41c52004c0889fa8b4d37",
        "downloadUrl":"http://localhost:3210/omk/data/forms/buildings_with_pois.xml"
      },
      {
        "name":"Mobile Money Agent",
        "formID":"mobile_money",
        "hash":"md5:1431de362053a476a9778bbae349b614",
        "downloadUrl":"http://localhost:3210/omk/data/forms/mobile_money.xml"
      },
      {
        "name":"Points of Interest",
        "formID":"pois",
        "hash":"md5:cfa8c4a0e95aa98047f33d9c5d946831",
        "downloadUrl":"http://localhost:3210/omk/data/forms/pois.xml"
      }
    ]
  }
}

We want to see this info in a Material Design card layout of similar size to the PSOM home page:

screenshot 2016-02-26 12 07 41

A given form should show up in a card about that size. We probably want the little bottom tab part actually be on top and be the name. In each card we should see:

  1. Name
  2. Number of Submissions
  3. Form ID
  4. XLS / XML download URLs

We want to link the name field to the /omk/pages/submissions page so that the user can see the submissions for the given form and download a CSV.

Lastly, we want to have a link to iD and Upload Form in the top header.

OMK -> POSM Workflow

In Huaquillas, we found that we really want to automatically submit all OSM edits to POSM OSM API. QA can be done by the main iD and JOSM from there. iD behaves normally with a standard OSM API, however the OMK OSM API gives iD too much data for the SVG rendering to work.

We need to resolve:

  1. Automatically uploading OSM XML submissions to POSM OSM API.
  2. Provide an alternative means of viewing OSM data submitted for a form. We wanted to be able to filter by date, OSM User, and Field Paper. This will no longer be possible once the data is in the POSM OSM API.

Discussion needed.

select multiple treated as geo-point in data on server

a select_multiple with answers like
1 Meat
2 Poultry
3 Fish
4 Fruit
5 Vegetables
97 Other
98 Refused
99 Don't Know

mostly has data like

"marktype": "3 4 5",

but will also appear like

"marktype": {
      "latitude": 1,
      "longitude": 3,
      "altitude": 4,
      "precision": 5
    },

(links to example occurrences are on April 4 in the posm channel in the openmapkit slack)

New Branch without mistake refactor

Somehow we've got 104 changed files in the jekyll branch:

screenshot 2016-03-04 09 51 43

It's probably easier to start a new branch and paste in what we really need.

Things got refactored in the API that we don't want to touch:

screenshot 2016-03-04 09 52 43

This should be easy, since we are only touching the jekyll and pages folder in this sprint.

Also, we need to .gitignore sass cache.

Number of Submissions in Forms

The number of submissions in the Forms page is not correct. in the /formsList?json=true endpoint, we should say how many submissions there are so we can have a real number in the UI.

screenshot 2016-03-07 18 26 56

Fix Unit Tests

Since the refactor that happened about a month ago, many of the unit tests are broken due to new paths of things. In particular, the deployment unit tests don't work.

Update OMKServer Docs

Lots has changed and improved. The docs are out of date.

I've updated some info about the endpoints, but I need to iterate further.

e0f5076

character encoding issues

Special characters are garbled in the json data on the server.

Mapper_registration_v1-0-2/44d28929-b177-4169-89db-1f1dc639895d/data.json

"FIRST_NAME": "Saa Célestin",

Mapper_registration_v1-0-2/912774e0-005f-4ae7-9404-6b8338d1498d/data.json

"QUARTIER_OU_DISTRICT": "Kènèma",

Mapper_registration_v1-0-2/1fae7871-0608-4c5d-9748-b3c33066b8bd/data.json

  "REGION_NAT": "Basse guinée",

Make fp.geojson Available in Deployments API

We have to expose the fp.geojson file in the deployment in the API. This is the contents of map.geojson that Field Papers provides. This GeoJSON is essential to move forward on

posm/OpenMapKitAndroid#19

This GeoJSON file can be used by OpenMapKit Android to draw the bounds of each field paper page. We also will use this to zoom the map to the extent of the field paper.

Sample Forms

We need a decent collection of sample XLS and XForms to be provided in the server by default. These should be good starters for people to make their own forms.

Export OSM Micro App

We want a simple app where we can apply submit time and username based filters, get that filtered and aggregated OSM XML file.

We need to:

  1. Download for JOSM
  2. Open in iD
  3. Try to directly submit to OSM

Filter OSM Submissions by Field Paper Page

In further brainstorming at RedCross HQ in DC, we have decided that we want to have the OMK OSM API filter by field papers page. This way, the user will be able to validate submissions field paper page-by-page -- makes sense with the intended workflow. Also, it will reduce overwhelming ID with too many SVGs to render.

This is an easier solution to implement, because we will not need to rethink the architecture of the current API, and it will be a tighter integration with Field Papers.

Implementing this decision will resolve #28 and alleviate the need for #13

cc/ @DrishT @dalekunce @mojodna @danbjoseph @rbanick

backups

Create a script, REST endpoint, and simple UI that tar.gz up the data directory of OpenMapKit to a backups directory. Serve that directory as a downloadable end point.

Aggregation Closure or Const Bug

There is a bug with either the closure or a const. When hitting an endpoint like this:

http://localhost:3210/odk/submissions/gampaha_2.json

We're getting an array of identical submissions, rather than unique submissions.

[
{
formhub: {
uuid: "0869fb2f13224809918f0120a1d46b93"
},
today: "2015-12-26",
deviceid: 864506020150190,
surveyor: "Malinga",
feature_type: "building",
osm_building: {
originalFilename: "OSMNode-1.osm"
},
form_completed: "2015-12-26T12:43:42.529-08",
meta: {
instanceId: "uuid:37c76b15-7e22-4244-b02d-a94892dab8f7",
instanceName: "Gampaha_draft_survey_v2",
formId: "gampaha_2",
version: 201511261115,
deviceId: "imei:864506020150190",
submissionTime: "2015-12-26T20:44:15.455Z"
}
},
{
formhub: {
uuid: "0869fb2f13224809918f0120a1d46b93"
},
today: "2015-12-26",
deviceid: 864506020150190,
surveyor: "Malinga",
feature_type: "building",
osm_building: {
originalFilename: "OSMNode-1.osm"
},
form_completed: "2015-12-26T12:43:42.529-08",
meta: {
instanceId: "uuid:37c76b15-7e22-4244-b02d-a94892dab8f7",
instanceName: "Gampaha_draft_survey_v2",
formId: "gampaha_2",
version: 201511261115,
deviceId: "imei:864506020150190",
submissionTime: "2015-12-26T20:44:15.455Z"
}
},

Fix this and have a unit test to prove it.

Download image attachments in bulk

if images have been collected as part of the ODK portion of a survey. is there a way to get a single download of all the image files?

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.