Skip to content

determine appropriate web mapping application architecture #1

@cccs-ip

Description

@cccs-ip

his discussion is carried over from cccs-web/core issue 114.

CCCS is looking to build a web mapping application that affords users some relative autonomy in terms of adding and manipulating shapefiles (to occur from time to time, as new data becomes available) and to tweak the way those shapefiles are associated to different datasets (to be updated regularly) to help users visualize information.

CCCS' basic needs with respect to the operation of the web map application are:

  1. integrate with our current Django web environment
  2. allow reproducible installation for anyone cloning our repos with limited knowledge of code [clear documentation]
  3. load quickly on client browsers
  4. allow shapefiles to be easily loaded into map application
    • if we will be working in postgres and wish to use the database to serve the files, we'd also like to supply some instructions and reference guides for how to manage tables within postgres
  5. extensible to allow 'admins' to manipulate layer views from the front end:
    • shapefile color
    • shapefile transparency
    • layer order
  6. capability to manage files
    • group files into directories (helpful to toggle on- and off-views for multiple files)
  7. capability to support analysis
    • calculate distances from and between points
    • capability to visualize distances (such as creating a circulate around to point to extend a certain distance, or creating a fixed line element of a specific length that can be moved and rotated like a 'measuring stick)
    • facilitate custom queries such as "how far away from that airport is this house" or " show rings indicating distances at intervals of 10 meters from point, extending out 50 meters)

Existing software as a point of departure:

We may be able to learn and integrate elements from other applications. One bit of software that appears to be based on an software architecture similar to ideas CCCS has been kicking around is Marine Map.

MarineMap Demo:
* http://southcoast.marinemap.org/marinemap/
MarineMap Source Code:
* https://code.google.com/p/marinemap/

Initial Responses to Kartoza-proposed setup

Tim's proposal for file management architecture helps to explain how things work on the back end, but I still have a few questions about how we're connecting the front end. The README file suggests that we need to install and configure QGIS server, and that we'll be creating different qgis project files for the various maps we wish to publish. Is this correct? How will we connect it to our Django web applications? Will we be using Tim's QGIS-Django?

On a somewhat related point to data system architecture:

It looks to me that Tim's diagram suggests that CCCS data and our client project data will share the same repositories. This is not the case. CCCS client projects are essentailly idependent from the CCCS website. With the GitHub cccs-web/core repository houses the master version of the web application used by CCCS and all our client sites, each of these sites runs from an independent branch and uses a separate database. Hence, they should be considered equivalent and parallel sites (rather than dependent):

cccs-web/core/ client website app (cloned from cccs-web/core/)
custom mezzanine app
soc-maps app
custom mezzanine app client soc-maps app (cloned from cccs-web/soc-maps/)
other client-specific application
cccs database
client database

This also carries the implications for our development workflow. CCCS will remain public, but any client site we create must be private. We can discuss specific issues and work requests on the private client sites, and as we develop tools of refine 'how to' discussions, we can move these back into the public CCCS website. To the greatest extent possible, my goal is to host most of the development and 'how to' discussions on the CCCS GitHub account, so that it remains in the public domain.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions