Giter Club home page Giter Club logo

cyberspatial's People

Contributors

charlesvardeman avatar omegaice avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cyberspatial's Issues

Disable Data and Maps

Disable Data and Maps dropdowns, with the requirement that when the user is logged in he/she sees both dropdowns, otherwise only About is visible (check bootstrap if it supports that).

Documentation Build

Scripts to automatically generate documentation from embedded code comments using Sphinx.

3D Tile Server Investigation

The tile workflow need to be extensible to generate 3D tiles using one of the emerging standards at the same time we generate the contours. This could potentially be used with 3D terrain mapping in future version of the model. One emerging specification is the Cesium Tile specification that has been submitted to a OGC working group.

Setup 3 VM's

Configure 3 Ubuntu VM's with one as public facing master and two slaves.
These will be used to have the website online and also as general development setup.

hostnames are:

  • njcoast1.crc.nd.edu (public IP)
  • njcoast2.crc.nd.edu (private IP)
  • njcoast3.crc.nd.edu (private IP)

specs:
Ubuntu 16.04 LTS with 2 cores, 2 GB RAM and 25 GB disk

Only two rules have been added: one allowing SSH from anywhere (still restricted in /etc/hosts.allow though) and another allowing access from our backup server for the nightly TiBS tape backups.

Login with ND netID and passwords.
Chris and James have sudo.

Addition of Roles to GeoNode Framework

Django models need to be added to GeoNode to support Role based permissions in data access. These role data models would also support search (discovery) of datasets based upon rules associated with each role that specifies data type preferences.

Vector Tiles Workflow

Refactoring python model code to generate GeoJSON vector tiles from matplotlib contours. There is a utility code that can generate contours called geojsoncontour.

Relevant links are:
Change to generating vector tile sets:
Mapbox tiles

Generate GeoJSON contours from matplotlib,
Matplotlib Library

[Matplotlib basemap utility)[https://github.com/matplotlib/basemap]

Use Vector Tiles on GeoServer

Geoserver python configuration library.

Mapbox geojson vector tile server

Youtube talk that explains vector tile implementation in GeoServer.

Blog post on terrain models and vector tile layers

Setup infrastructure

Stable cyberinfrastructure fully containerized and ready for population.

Architecture:

  • Google cloud container engine (GKE) or AWS Kubernetes
  • location: US central
  • Nodes: 3 virtual machines which run the containers
  • 5 containers: Django, Geoserver (Java-based), PostGIS server, Rabbitmq, ElasticSearch
  • All the containers can see each other
  • External accessibly are Django and Geoserver via Nginx proxy

Software stack:

  • Django container runs a Gunicorn Python tool (web server)
  • GeoServer is a Java web app and has Catalina (Tomcat - web server) in front of it
  • PostgreSQL with PostGIS
  • RabbitMQ for message passing
  • ElasticSearch (unknown for what it's being used right now)
  • Kubernetes to manage containers and scheduling
  • Helm to manage the Kubernetes via templates

Database footprint:

  • PostgreSQL container and can only be accessed from other containers within the kubernetes cluster. v9.6 incl. PostGIS additions
  • Image: mdillon/postgis
  • imageTag: 9.6-alpine
  • there is dev and prod DB (separate from each other)

Map view

As a user
I want to use the map with various tools to manipulate, share and store map/layer data.

We are not concerned about roles for now, just note that there are 3 different roles for which we need to adopt a permission schema to control features. Right now, we just want to have a user being able to use the site.

Mockup: http://www.crc.nd.edu/~kfurse/nj-coast_front-mock/map-p.html

AC:

  • Display of base map, centered at user’s specified municipality’s coordinates
  • GIS layers available (for this role) listed adjacent to map
  • Layers are grouped by category
  • users can click the layers they wish to toggle on and off
  • (List of available GIS layers should load dynamically based on the intersection of role and designated municipality (there are GIS layers that are available statewide and others that may be specific to a municipality)). will come later with role schema
  • users should be able to share maps with other users
  • users can annotate maps (James is exploring options - Leaflet), refer to him for more details)
  • users can share map annotations with others
  • Users should be able to mouse over hazard intensity visualization to see surge height or wind speed at a given location (needs to be specified in GeoJSON model output)
  • User has access to Storm hazard prediction tool to run a custom scenario to be made available as a new GIS layer in their dashboard. the SHP tool will be the next piece of work

Create project plan

As a PO
I want to have a realistic view of all tasks
so I can schedule additional resources, track the budget and over time task progression.

Security

Tim and Swapna are conducting following scans:

11/21 nmap
11/28 ZAP (Admin account needed)
12/4 Code review
? Snort

Persistent Base Layer configuration

Geoserver allows persistent base layers to be stored in the local_settings.py and automatically loaded into new instances. ArcGIS layers can also be added in this way. See the Geonode mailing list for a discussion. A sample base layer is:

Add ESR world ocean reference base layer to geoexplorer

source: new ol.source.XYZ({
url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' +
'Ocean/World_Ocean_Reference/MapServer/tile/{z}/{y}/{x}'
})
What to change in production:
http://docs.geonode.org/en/dev/deploy/production.html
How to add XYZ:
GeoNode/geonode#1286
{
"source": {"ptype": "gxp_olsource"},
"type":"OpenLayers.Layer.XYZ",
"args":[
"hot", ["http://a.tile.openstreetmap.fr/hot/${z}/${x}/${y}.png", "http://b.tile.openstreetmap.fr/hot/${z}/${x}/${y}.png", "http://c.tile.openstreetmap.fr/hot/${z}/${x}/${y}.png"], {"transitionEffect": "resize","attribution": "osm_attribution"}],
"visibility": True,
"fixed": True,
"group":"background"
},

Implement CSS for About Page

Kristina provided the CSS for the landing page. CSS and custom graphic files attached.
http://www.crc.nd.edu/~kfurse/nj-coast_front-mock/about.html
https://app.zenhub.com/files/88267239/d28fd98b-ac83-4a0f-a662-5b4acb455e64/downloadhttps://app.zenhub.com/files/88267239/5feb9a05-7215-4b40-ac03-1e5e470d87b8/download

Comment out People and Groups in the About dropdown and have the text as single page.

Notes from Kristina:

  1. I added to the css, as well as modifying some of the classes I defined for the homepage. Had to make a couple of changes to the homepage html. I added a “watermark” class and assigned it to the NJcoast watermark on the homepage top gray box (). This stopped my css from repositioning any image that has .emphasis as a parent. I also linked Storm Prediction Tool near the bottom of the page to an anchor on the About page. I think that’s it.
  2. Again, my html is broken (dropdowns don’t work, menu doesn’t collapse properly on small screen widths, etc.). Just a warning it can’t be pulled verbatim.

Minikube PersistentVolumes for hostpath volumes

Minicube fails to mount the host directories specified in the Kubernetes configuration files for minikube. This prevents both postgresql and geoserver persistent data volumes from have the correct data structure when the pods start. It is unknown if this issue exists with the GKE persistent volumes.

Update production

  1. Update production with the latest code from dev.
  2. Commit code to Github

Setup AWS

As a dev
I want to set up kubernetes in AWS
so that I can bring njcoast.us online.

Investigate AWS

Check out AWS with Kubernetes to replace GKE.
A decision needs to be made for whether we go with the ND account or create our own.

Setup local dev. environment

Setup environment for Django development. Please talk to James about the required stack and existing dependencies.
Also he needs to show where to commit your code (repo/branch).

Training/Tutorial page

As a user
I want to go through a tutorial/training
so that I get a better understanding of the tools and different features.

AC
1.How will the tutorial be triggered/ accessed from?
2.What is the scope of the tutorial?
2.1.Account creation? explaining the 3 different roles
2.2.Maps/Layers/Annotation tools/ Share/Create a Map,Layer/Download
2.3.Storm Hazard Projection Tool

Travis Tests

Auto-deployment testing scripts for TravisCI or for Jenkins CI test servers.

Create Project Timeline

Create a new project plan for the SLA in Ominplan with an updated timeline of all Milestones M4 to M8.

REST design for computational models

Design of Restful components for bot the Job management and individual computational models. We need to consider the extra metadata necessary to describe the model result's response in known controlled vocabularies. The Earthcube xdomes.org is probably a good starting point for building out the controlled vocabularies.

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.