riparias / gbif-alert Goto Github PK
View Code? Open in Web Editor NEWGBIF Alert is a GBIF occurrence based alert system.
Home Page: https://gbif-alert-demo.thebinaryforest.net/
License: MIT License
GBIF Alert is a GBIF occurrence based alert system.
Home Page: https://gbif-alert-demo.thebinaryforest.net/
License: MIT License
(in addition to the current map)
Subsequent question: how to find/interpret this data in DwC.
(on the data publishing side, we should make sure all data providers use the same field and vocabulary. What about data providers that are not part of Riparias?)
As with @timadriaens ever discussed, we should not only visualize the key species for RIPARIAS, but also the species of EU concern. You can find the list here: https://github.com/trias-project/indicators/blob/master/data/input/eu_concern_species.tsv
It seems this list could be updated soon (~December) with 33 new species. We are going to update the file above as soon as this happens.
Tip:
Let's use a custom user model early (so we have flexibility later)
To investigate:
How to deal with authentication in frontend/Vue.js-based components?
(harvester retrieve daily from the field collection tools, publish to GBIF, the dashboard refresh its data from GBIF daily, too)
This would be useful since it's an important/central part of the tool, and it's probably getting slowly more complex over time.
There's now a mechanism in place to automatically refresh data by downloading from GBIF.
During this process, the database spends a few minutes in a messed up state (occurrence duplicates because new data is added before the previous one is deleted, ...).
We need to show the website as temporarily unavailable during this time to avoid presenting incorrect data to users. I consider using django-maintenance-mode for that.
Additional considerations:
Large task, to be done later based on user's feedback. First ideas in #9, collecting ideas and requirement here
Request by @peterdesmet: make it more similar to https://hp-theme.gbif-staging.org/occurrence?view=MAP.
The inde-bundle.js file generated by Webpack is currently 4.5Mb. We should investigate soon how to improve.
That's something that popped during our meeting with BBPF
+:
-:
Should be fairly easy to implement with a GitHub action that can execute commands via SSH
Something to investigate soon, first questions that come to mind:
VACUUM
, ANALYZE
, ...?)We're currently using Chart.js which works okayish, but might bother us for the future, for example:
Some of our API endpoints accept get parameters, for example for filtering (datasetsIds[]=1
, ...)
Currently, if we make a typo and pass an unexpected parameter(datasetIds[]
for example), the parameter is simply ignored. It would be a better/more defensive approach to throw a (500?) error, with a clear error message.
This is probably not necessary for parameters that are automatically managed with Django routes (I believe errors are already thrown, to be checked), such as "api/tiles/hexagon-grid-aggregated/<int:zoom>/<int:x>/<int:y>.mvt"
While working on the data import for the datasets models, it appears some dataset are loaded into the database with a proper GBIF key, but without a name.
After investigation, it appears the datasetName
value is missing from the downloaded Darwin Core Archive (for some records/source datasets at least).
Possible solutions:
So data is more global (to all tests in a given class) rather than having exceptions in each test function.
Can be done incrementally, and maybe it shouldn't be done in all cases:
The map currently shows occurrences aggregated over an hexagon grid. That works great when they're many occurrences on the map.
I was wondering if we should tweak this system so at high zoom levels (i.e. neighbourhood) it would automatically switch to a more classic "one point per occurrence" view.
Anyu opinion?
Important remark from @timadriaens (people will share by email)
Probably due to server time VS user time issues.
I'd like to have a short paragraph explaining the scope, architecture, and where to find the different pieces of the puzzle, for example:
Where to write that exactly: I'm not sure. I would like that to be immediately visible to someone that visits our GitHub repositories (so this person can navigate them), but adding that to both READMEs mean duplication. Add the paragraph to one of the README, but link it from the other? Use Github wiki so we can have global (not tied to a specific repository) documentation.
@damianooldoni: would you be able to draft something? Do you have an opinion about the best place for that?
instead of http://54.75.164.69/:
@damianooldoni: any preference/suggestion?
So it's easier to immediately spot which code is running on a given instance
Some ideas:
<select>
(per taxonomic group?, spread status?, ... )<select>
? (vernacular name? others?)What is needed? What is the priority of this?
Ideally with a graph showing the number of occurrences per month (or week?)
@niconoe: where should I put these files? In which format do you prefer to have these files?
@niconoe: at least one important data provider (CR Jette) collects its data locally as GIS project on a laptop ("CR Jette" = "1 person" data speaking). Once the guidelines about GBIF, DwC requirements etc. are sent, I would like to contact CR Jette (ideally at end of October) for the technical part suggesting the easiest and most automatized way to harvest such GIS data.
@niconoe: do you have suggestions about it? Thinking loud: what do you think about creating an URL end-point under the riparias.be
umbrella? We cannot share such data openly via GitHub as they contain sensible information.
Alternatively, we discuss it with CR-Jette directly during a short meeting without proposing any solution in advance.
The following download was generated by the application: https://www.gbif.org/occurrence/download/0022344-210914110416597
Apparently it contains a duplicate (same gbifId: 334518077 and same content).
Report to GBIF?
Suggestion by @timadriaens: it would be great to have a comment system where users can let comment on a given occurrence.
Pay attention to the data update process: since observations are deleted and recreated every day, comments should be moved from one observation to another during the process.
A detail. The official colour of the project is 00a58d
in hex notation (see badge colour in README for example). @niconoe : could you replace the blue colour with this one? Thanks.
I suspect this will be a ticket open for some time since I feel we don't have enough information now to take sounds decision about this. It's however clear that some integration/communication will have to take place between the two tools developed by INBO and the one developed by BBPF.
In practice, this integration can take place in many different ways: API communication between different web applications shared Vue components, common Django backend for everything, ...
There are good reasons for a tight integration (common accounts - #48, common page design, ...), but also good reasons to keep some level of separation and build a huge monolith (different timeline/release cycles, keep web apps smaller so they can evolve more easily/independently, ...). Where to put the cursor exactly: I don't know, but that's a question we should keep in mind.
The split into different GitHub repositories (or not!) will have to reflect that, so I think it's a secondary, related question.
We are importing for each occurrence (only checked are done):
gbifId
taxonKey
with a fallback to acceptedTaxonKey
)year
, month
, day
)decimalLatitude
/ decimalLongitude
)individualCount
, organismQuantity
, organismQuantityType
and occurrenceStatus
basisOfRecord
locality
/ municipality
Feedback welcome: this list can be gradually completed and implemented (let's think about priorities: more important fields first)
We currently have standard Django tests, which are run on each push thanks to GitHub actions.
It would be very useful to have something in place to help testing the frontend components (whole pages? Vue components? Use Django or Vue tooling?)
First investigation: this is apparently due to Chart.js itself that acts weird where a chart is destroyed and recreated too fast (still webworkers/animations) running in the background. Possible interactions with Vue lifecycle / event management.
Not fixing now since it's not that easy, and we might drop Chart.js for something else.
We're currently using stock Bootstrap for our UI needs, but it appears more and more clearly that we'll probably build a sophisticated frontend app.
It might then be helpful to use a components library such as PrimeVUE, Quasar Framework, element-plus, ...
That would be an important change, a few considerations:
That'll be a central part of the tool, but it's pretty easy to a basic version now and it'll help presenting the proposed alert mechanism to stakeholders (#9) soon.
This would be future proof, and the earlier we try, the easier it should be
If a user is interested in an observation, he/she should be able to get some details about it. I was thinking about pop-ups.
Some details I think we need absoultely to show as they are relevant for the field managers:
@timadriaens : what do you think?
Shapefiles of the river basin units should be visualized as layers on the map and the user should be allowed to select one or more of them. By deafult all occs in BE should be visualized and all basin units should be added on top.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.