Riverscapes/RaveAddIn

Manual Add to RS Project

Closed this issue · 3 comments

The Problem

We want to facilitate ownership in a project. I was thinking about an easy way to allow this. I just downloaded a really cool layer I'd like to add to my project. What do I do?

Suggestion

A simple sequence that is two-fold. First in the explorer the user right clicks on a parent or folder node in tree (might be smart to allow user to add folders/parent node to a project) and then invokes with a right click a Add Custom GIS Data command that allows the user to select a layer (or layer group) from the table of contents and it does the following:

  • Copies that layer source into the project on disc @ location specified in explorer
  • Adds the XML tags in the project.rs.xml project for this new
  • Has a user dialog that allows specification of custom <Metadata> tags for information about this and asks user to specify a <Metadata name="custom Type"> - descriptive type of dataset, and a <Metadata name="Label"> - Which is the label given to layer in table of contents by default, but could be overridden.
  • Automatically adds
    • <Metadata name="username"> - from user profile
    • <Metadata name="ImportDate"> - timestamp from operation
    • <Metadata name="SourceFolder"> - absolute path where file copied from
  • Automatically copies the symbology being used (for now as custom_01.lyr*) and makes copy of business logic being used by user into root of project folder with the addition of this custom entry.

The key is it does all this silently so a user can have their stuff in their Riverscape Project.

Later

Later we can think about shadow projects and/or allowing users to upload such changes to their own project in a warehouse.

Lots to unpack here, but in essence, I like this concept. The challenge will be that now we have multiple versions of the same project floating about; the master copy in a warehouse and multiple copies of users' computers that may have been altered. How do we synchronize all these versions simply and without conflicts?

This will get easier when we get funding to develop a warehouse viewer dockable window in ArcGIS. Essentially, an ArcCatalog view of an individual data warehouse program that shows whats available online, what's been downloaded and, based on this request, what's been modified and requires synchronization.

One part of this that should be easy... At the point that we allow the user to modify the project tree in RAVE the business logic XML that is currently being used to configure their project explorer should get copied next to the riverscapes project so that customization only affects the one project they are altering.

@MattReimer I am scared to ask your opinion on this!

My opinion is that I'm waiting to find out what this feature needs to be. Obviously if people are expecting to upload their custom layers we will have challenges.

Right now there is no attempt to merge XML files. Mine overwrites yours. Doing this isn't impossible but it will not be a small amount of effort and we need to run through all the cases carefully before implementing anything.

Questions I have:

  • Quality control. If everyone is adding custom layers what's to stop this getting out of hand?
  • What are the features that we absolutely need to have here? Can I see your custom layers?

We could look at other solutions too, like keeping the project XML file pristine and having another xml next to it for customization. This way we can make choices about ignoring this second file when we upload.