Giter VIP home page Giter VIP logo

rogue-jctd / maploom Goto Github PK

View Code? Open in Web Editor NEW
70.0 29.0 66.0 6.69 MB

MapLoom is a web mapping client based on OpenLayers 3. It provides full-featured editing capabilities for data stores in GeoServer - including PostGIS and GeoGig. For GeoGig layers, it lets you view history, and sync with other GeoGig repositories

License: MIT License

JavaScript 96.62% Smarty 0.02% Shell 0.01% Python 0.01% CSS 0.96% HTML 2.39%

maploom's Introduction

Build Status

MapLoom

MapLoom is a web client that leverages GeoGig to allow users to edit geographic information, view history, and sync layers with other GeoGig repositories. The goal is to put the power of distributed versioned editing into the hands of users. It's been developed to sit inside of GeoNode as an alternative to the default GeoNode map client but it can also be set up to stand alone. The best way to see MapLoom in action is to create a GeoSHAPE virtual machine. Please visit How To Get GeoSHAPE document for instructions.

Details

MapLoom has been built using OpenLayers 3, Angular, and Bootstrap.

License: The MapLoom source code is licensed under the BSD 3 clause license.

WPS & Feature Type Attributes Statistics Considerations

We are utilizing Geoserver Web Processing Services in a couple of places. For example, the 'zoom to layer data' uses a wps that is already included in geoserver. In the layer's table view, we have added the ability to view charts and statistics on the attribute values for the whole layer or a set of filtered features of a layer. To Accomplish this, we created a custom WPS called summarize_attrib which is using the geoscript functionality in geoserver. When the summarize/statistics button is clicked in maploom, geoserver will need to have the wps available. If you are using a geoserver instance that was created and configured using the geoshape script, everything will be taken care of already and you do not need to do anything mentioned here. If you are using a different deployment of geoserver, you'll need: 1) the geoserver wps extention, 2) commons-math3-3.3.jar, 3) geoserver-2.5-SNAPSHOT-python-plugin.zip, and 4) the scripts folder

Quick Start

Install Node.js and then:

$ git clone git://github.com/ROGUE-JCTD/MapLoom
$ cd MapLoom
$ sudo npm -g install grunt-cli karma bower
$ npm install
$ bower install
$ grunt watch

You can then open file:///path/to/MapLoom/build/index.html in your browser.

clean-build will ensure that all modules all pulled down again and is recommended when you pull the source where other might have added new dependancies.

Recommended Development Setup

The recommended way to develop maploom is to:

  • create a GeoSHAPE CentOS Virtual Machine which will have maploom configured as GeoNodes viewer/editor. We recommend using the vagrant approach specified in the document.

  • clone maploom repo on your host machine in the same folder in which you cloned the vagrant-geoshape repo

  • expose the MapLoom repository on the host into the VM by uncommenting this line in your Vagrant file in the geoshape-vagrant folder Vagrantfile. Note that this assumes your MapLoom and geoshape-vagrant repositories are in the same folder.

    config.vm.synced_folder "../MapLoom", "/MapLoom"

  • run vagrant reload (or vagrant halt followed by vagrant up) to apply changes made to the vagrant file.

  • run grunt watch in the maploom directory on the host to buid maploom

  • symbolic link the built maploom into the virtual machine such that GeoNode uses the latest build maploom. from in-side the geoshape VM, run:

    geoshape-config maploom_dev
    
  • you can now go to http://geoshape_vm_server_ip/maps/new or http://geoshape_vm_server_ip/layers to create a map from a layer. Changes on your host machine will cause grunt watch to rebuild MapLoom, and the symbolic links created by geoshape-config maploom_dev will make the newly buit maploom immediately available to Geonode in your VM.

Note that linter used by grunt watch is very paticular about the js programing style and guildlines. Be sure to fix all compile issues.

maploom's People

Contributors

danpalumbo avatar garnertb avatar ischneider avatar jdgarrett avatar kelseyishmael avatar milafrerichs avatar pjdufour avatar richard3d avatar scottevil avatar smesdaghi avatar yancymatherne 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maploom's Issues

Display the Legend for the Map

As a user I need to be able to see the legend for the symbols for the layers on the map

  • User can open and close the legend
  • The layers in the map are listed in the order they are displayed
  • The symbols for each layer are displayed
  • The layers can be expanded and collapsed
  • The legend is scrollable if the length of the dialog is exceeded

Display the Metadata for a layer in the web map

As a user I need to be able to view and edit the metadata for layers in the map.

  • Display the metadata for a layer (metadata list to be supplied by MapStory team)
  • Edit the metadata content

Edit Styles for Feature Layers in the Map

As a user I need to be able to choose and edit styles for the feature layers in the map so that I can update the symbology as needed.

  • Display common symbology choices for the type of layer (point line polygon) in the map
  • Allow the user to select a specific symbol for an attribute or combination of attributes
  • Allow the user to edit the size of the symbol
  • Allow for a user to save the updated style as a new SLD
  • Allow the user to view and edit the SLD directly (with a warning)

Generate Report of Changes Since a User-Defined Date/Time

As a user I need to be able to generate a report of all of the changes in a set of layers (GeoGit) since a particular data and time so that I can see the information for who made changes, when, and what those changes were.

  • [ ]

Handle CSS Issues When MapLoom is Embedded

When MapLoom is embedded into GeoNode or another application that uses Bootstrap for its styling, the theme for MapLoom is partially inherited from the host application. We need to find a solution and implement it such that MapLoom still appears and behaves as expected.

Save As Copy in MapLoom

In MapLoom the user needs to have a "Save As Copy" option in the Save Map dialog in order to create a new map from an existing map.

Filter History View in MapLoom

As a user, I need to be able to filter the history view in MapLoom so that I can sort though commits by user, date, or other criteria.

Layers with spaces in the title do not exapnd

Because MapLoom uses the label of the layer as the id of the expandable panel, if there are spaces in it, it does not expand. We should strip the whitespace for the id of the element and the target attribute.

Display the Contents of a Layer in a Table View

As a user I need to be able to see the contents of a layer in a tabular format so that I can sort, filter, and edit features.

  • Display the attributes of all of the features in a layer in a tabular format
  • Sort the attributes in the table
  • Filter the attributes in the table

Receive Notifications of Updates to GeoGit Layers

As a user I need to be able to know what changes have been made to the map layers in GeoGit so that I can understand where updates have been made

  • Display a number for the updates that have been made to the layers that are in the map
  • Allow the user to see the list of notifications
  • Highlight the feature on the map when the user selects a notification

Edit Layer Name Alias in MapLoom

As a user I need to be able to edit the display name in the map for a layer so that it's more representative of what's being displayed

  • The alias name is only persisted in that saved map
  • If someone copies the map, the setting carry across to the copy
  • The Alias is the primary name displayed in the layers list view
  • The details for the layer will show both the actual layer name and the Display Name
  • The alias name is the layer name that is displayed in the map legend

Add Time Controls to Table View in MapLoom

Add time controls as options for filtering the table view in MapLoom

  • Provide the ability to establish a time box for the attributes being viewed in a temporal layer (should be time of the event occurrence but we may need to let the user pick if there are multiple time columns)
  • Provide the option to switch between Time Zones with UTC being the default (unless the data explicitly states the time zone)

Edit Attributes in the Layer Tabular View

As a user I need to be able to make edits to the attributes for features in a layer while in the tabular view.

  • When in the tabular view, the user can make the attribute fields editable and manually type information for numbers and text
  • Date/Time columns are edited through a calendar/time picker
  • When editing the geometry the application transitions to the map view with the existing feature editing capability
  • When the data is saved, the edits are added as a commit

Depends on Issue #24

Support for MGRS Coordinates

As a user I need to be able to see the MGRS map coordinates for the location where the mouse cursor is located and to edit MGRS coordinates on point features

  • Coordinates are displayed in MGRS as well as DMS
  • The coordinates update constantly as the mouse cursor moves around the map
  • Option to enter MGRS coordinates when editing the coordinates for point features

Manage Servers

As a user I need to be able to add layers from different servers so that I can have as much information readily available in the map as possible

  • Must be able to add a server
  • Must be able to remove a server
  • Select which server to add layers from
  • Must be able to select layers from a server
  • Must be able to add TMS or WMTS server (also OSM, Stamen, MapBox?)
  • Provide the ability to filter the list of layers (using layer name, abstract content, and keywords)

Save Map to GeoNode

As a user I need to be able to save a map so that it is discoverable in GeoNode.

  • Map name is displayed (unsaved maps say New Map)
  • When a map is saved the user can enter the name and the abstract

Create Map From Layer

When user clicks the create map button on a layer in geonode, the resulting map is not functional.

Edit features in the web map

As a user I need to be able to create new features and edit existing features in the web map.

  • Add new points, lines, and polygons (geometry)
  • Edit existing points, lines, and polygons (geometry)
  • Edit feature attributes

Update Bounds Automatically when Editing in MapLoom

People editing the map shouldn't have to worry about whether or not their edit falls into bounds for the layer. When someone makes an edit that is outside the current bounds of the layer, then the layer bounds should recalculate and update automatically.

Basic Navigation Controls

As a user I need basic functionality to navigate the map

  • Rubberband zoom
  • Zoom bar
  • Zoom to extent of data in layer
  • Scale bar - metric and imperial units
  • Coordinates are displayed in Degrees, Minutes, Seconds
  • The coordinates update constantly as the mouse cursor moves around the map

Find a Location on the Map

As a user I need to be able to find a location on the map by either a name or by entering coordinates

  • If there are multiple hits for a place, the dropdown will allow the user to pick the correct one
  • Upon selecting a location name, the map centers on that location

Manage Layer Order

As a user I need to be able to manage the visibility and order of the layers in the map.

  • Turn layer visibility on and off

Manage layers in the web map

As a user I need to ba able to manage what layers are in the map and in what order they are displayed

  • Must be able to select layers from the home server
  • Must be able to add WMS layers
  • Must be able to remove layers
  • Provide the ability to filter the list of layers (using layer name, abstract content, and keywords)
  • Turn layer visibility on and off

View History for Layers

As a user I need to be able to view the history of a layer so that I can see all of the edit/commit activity for a certain time period on those layers

  • Display each commit in a list that shows who made each commit and at what time.
  • When the user hovers over the commit, a more detailed view of the commit will pop up.
  • When the user clicks on a commit, the changes made by that commit will appear in a new panel.
  • The user should be able to view all the changes made to a layer in a given time frame.
  • The user should be able to close the history panel.

Create an Emergency Response Grid

As an emergency response manager I need to be able to create a grid on the map (and define the labels for the grid) so that I can coordinate response operations

  • User can select the size and extent of a regular grid
  • User can label the grid
  • User can name the grid layer
  • User can enter abstract and metadata for the grid
  • Metadata that is available to the system (Author, Bounds, etc.) are filled in automatically
  • The grid is saved as a layer in GeoNode

Manage Repositories from MapLoom

As a user I need to be able to configure repositories to sync automatically on a time interval

  • Create Remotes
  • Delete Remotes
  • Manage links between repositories at the branch level
  • Initiate one-time sync
  • Initiate time interval (continuous) sync
  • Handle online/offline status for links

Feature History Window needs to Display Author Info

When viewing the history of a feature, the user can't see the author and commit information. This should be displayed along with the attribute information so the author info is available without having to close the view.

Get Feature Information on the web map

As a user I need to be able to find out more information about the features on a map so that I can see the details for that feature

  • A user gets feature information by clicking on that feature in the map
  • The information should appear in a popup over the map such that it minimizes space, but all of the information is available (scrollable)
  • If there are multiple features that fall within the click location, then a pop-up should appear asking the user to pick which of the features they're trying to get info about
  • For point features, the coordinates for the location of the feature is the first attribute field
  • If a feature has photos associated to it, then that is readily apparent to the user and they can click on the photos to see the full image

Manage Repositories in MapLoom

As a user I need to be able to manage which repositories are synching with other repositories.

  • Story needs further iterations to fully define functionality as laid out in the prototype

Overlay a Map Grid

As a user I need to be able to add an overlay to the map so that I can see the map grid for the map coordinates

  • The user can turn the map grid on and off
  • The user can select either Degrees, Minutes or MGRS grid

View layer Information in a Table

As a user I need to be able to view the current state of the information about a layer in a tabular format so that I can better understand multiple elements of data at one time

  • Display the attribute info for a layer in a table format where the columns are the attribute names and the rows are the features
  • Account for text wrapping
  • Allow all attribute columns to be sorted
  • Provide a search box to filter the data viewed in the table
  • Provide an option to clear filters

Manually Edit Point Geometry in MapLoom

As a user I need to be able to manually edit the geometry for points when in edit mode

  • For point features while in edit mode, the user is able to manually update the coordinates in a field
    • Coordinates are validated for proper formatting

Table View Option to Honor Infobox Visibility Settings

There should be an option to allow the table view to honor the infobox visibility options.

  • The default view for the attributes reflects the settings in the info box visibility and there is an option to "show all" in the table

Depends on Issue #6

Export csv from Table View in MapLoom

As a user I need to be able to export the table view for a layer's current state as a csv.

  • Export the table view of a layer to csv
  • Export honors filters that have been set in the table view

Manage Visibility of Layer Attribute Info

As a user I need to be able to manage which attributes in the layer are going to be visible in the feature info bubble

  • Display the list of attributes and their types
  • Toggle visibility of attributes for a layer (and display the status)

Area and Linear Measurement Tools

As a user I need to be able to measure area and length on the map.

  • Display units in US or metric units
  • Measure multisegment lines and display the length of each segment and the total length
  • Measure irregular and regular area polygons
  • Remove the measurements from the display

Merge Two Branches in MapLoom

As a user I need to be able to merge the commits from two branches

  • Select a source repository and branch
  • Select destination repository and branch
  • Perform merge

Resolve Merge Conflicts in MapLoom

As a user I need to be able to resolve conflicts that occur during a merge

  • View the list of changes introduced by a merge
  • See what changes (features) are in conflict
  • Resolve geometry by selecting one (of two) or editing one (of two)
  • Resolve attribute comments by selecting each attribute value to keep or editing

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.