frabas / displace_gui Goto Github PK
View Code? Open in Web Editor NEWA Scientific Research Software for Spatial Fisheries and Natural Resource Management
Home Page: https://displace-project.org/
License: GNU General Public License v2.0
A Scientific Research Software for Spatial Fisheries and Natural Resource Management
Home Page: https://displace-project.org/
License: GNU General Public License v2.0
OutputFileParser depends from output files on text format (original version).
It should be nice to remove it.
But removing it also requires the simulator to signals the gui which part of the db has been updated, to avoid reloading all the nodes data.
See #110 and comments.
This would require a big refactoring of all .pro files, but:
Needs a deep evaluation before starting this task.
detect all the nodes included in the polygons of the shape file and then assign the penalty to them. We should be able to repeat this for different shapefiles sequentially.
This affects only debug mode compilation, because in release asserts are no-op.
mFeedback->setMax() (graphbuilderworker.cpp line 12) tries to update the gui while in a non-gui thread, this shouldn't be done.
Commit rate in simulation is hardwired to 100, it would be nice to have the possibility to fine tune it with a proper command line option:
--commit-rate 250
Will commit the changes every 250 steps.
Needs boost::program_option
so it depends on #87
change read_scenario_config_file() so that
For example, currently we have:
baseline TACs LTMP
baseline
1
etc.
The idea would be to replace by
dyn_alloc_sce baseline TACs LTMP
dyn_pop_sce baseline
biolsce 1
with a keyword in first position
then read_scenario_config_file() could detect the keywords line by line and redirected the reading in the right variable. While the comments are just ignored...
then make possible different orders to limit mistakes in input e.g.
biolsce 1
dyn_pop_sce baseline
dyn_alloc_sce baseline TACs LTMP
It seems that WIndows and MacOS application icons differs. Check this.
Also check the .desktop fail for linux.
While compiling on HPC we need to remove some function (ipc), and on MacOS and Windows we must remove the crash handler and other stuff.
We could instead check for certain header files and add proper definitions/libraries/whatever to avoid requiring he user to manually do this.
We can still leave the options. But ideally a simple CMake
call without any definition should correctly compile under every platform (linux, windows, MacoS, hpc).
When the version is outdated, the tables cannot be created/loaded and app must not crash.
Due to a race condition on exit, the Map thread doesn't exit before the main thread completes.
On Windows this makes the app hang, on Linux/MacOS this generate a crash report.
avifieldupdater and avifieldshuffler (and perhaps vmsmerger) could be merged in a single command line tool - or perhaps rewrite them in python or other scripting tools?
Symbol size on map hardcoded to 30 for Windows
...at least on Windows. for example the ui crashes as soon as a graph file is missing but no e.g. QMessageBox is popping up to inform the user with the problematic reading.......
....currently the tariff map is at the overall level. We actually need a tariff map for each metier (i.e. each node has a vector for tariffs with as many elements as the number of metiers)...
A nice small feature to have in the Object Editor would be to add an option on the first ui for the user to choose the type of the separator in use for the .csv file before diplaying them. Because it could be either a comma or a semi-colon depending on the region and users.....
If Load() fails (for example because a file is missing), instead of showing a msg box, the program crashes.
The problem is that DisplaceModel runs a thread (mParserThread) in the constructor. This thread isn't stopped before destroying the object (the implicit destructor is used) so the program crashes.
Solutions: Either don't start the parser thread in the constructor, or stop it in the destructor.
Using -1 as "invalid" values makes things more complex in SQL. Use NULL instead.
First of all it is not clear how and why it is possible to load a harbour file (name/idx) when the Graph is empty!! Where are the coordinates of the added icons for harbours on the map coming from? Is the loader looking for a graph coord.dat in the path? or in the name_harbours.dat file?
Currently the expected file (names_harbours.dat) for Load Harbour is already aware of the Graph node idx e.g.:
9866 Kappeln
9895 Århus
9898 Vedbæk
9899 Bogense
9903 København
9905 Egernsund
9905 NA22
9909 Gilleleje
etc.
it would actually be better and more natural to directly load some harbours file with lat long and then the ui has to add a node for each harbour to the new graph (therefore also adding them to the end of the coord,dat file) ....before creating the additional edges to link all the harbour nodes to the graph.
Then the input file (harbours.dat) could be instead:
name;x;y;idx.port
Baabe (Ostseebad);13.715744;54.362458;1
Barth;12.72666667;54.37166667;2
Bensersiel;7.575;53.675;3
Brake;8.483333333;53.33333333;4
Bremerhaven;8.573333333;53.53666667;5
Burgstaaken/Fehmarn;9.156246;53.896146;6
Büsum;8.85;54.13333333;7
etc.
The exception must be catched before the threads exit.
Actually during simulation running, the plot is updated everytime the simulator signals a change to the upper gui.
For optimization purposes, the gui should only set the plot as dirty, and update it only when focused, or immediately only for displayed plots.
...while the db is ok because can be loaded from a fresh DISPLACE GUI start
Add a transaction complete after the end of the simulation loop. Otherwise the steps between the last commit and the end of the simulation wont be committed.
Fix the calendar display in replay mode. e.g. the month Mt keeps 0 even if should be incremented to 1 when tstep>745 etc.
The editor should be able to generate (or complete) all the vesselsspe files from the editor, e.g. list of fgrounds and proba of visits from a geospatial shape file layer, etc. and copy/paste the info for a bunch of vessels...
...and open and set up the AGraph field accordingly (maybe also the N Row Coord and N Row Graph if the user actually removed some nodes!) in the Scenario ui and save and close, also forcing another name, for example baseline_graphXX.
To do: retrieve the fishing pressure (swept area) from the Vessel::do_catch () and export it like other output layers, also into the statistic windows.
Ships
tracking for emissions of SOx NOx CO2 and PM (fine particles)
tracking for transported tonnage
etc.
Fishframs
tracking for input nutrients
tracking for farmed fish production
etc.
Parse the application name to add it to the db when loading (right now: only simu 2 is written in the Model Objects Window)
To avoid mixing decision trees that evaluate based on time (tstep) with those based on Fishing Grounds (fground), we should use different Abstract Nodes.
See VesselsEvaluators.h
Size is too large by default, creating symbol overlap.
A potential double free / memory leak bug is present in MapObjectController.cpp line 321:
OGRSFDriverRegistrar::Open
will return a static allocated pointer that must be released using ReleaseDataSource
, and not a shared_ptr as currently done.
When updating the vessel status, only tstep== x is used. Must load just one row with tstep <= x instead.
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.