[GRASS-dev] GSoC 2018 report week 04 - GRASS GIS module for Sentinel-2 cloud and shadow detection
Roberta Fagandini
robifagandini at gmail.com
Mon Jun 11 08:13:58 PDT 2018
2018-06-11 10:29 GMT+02:00 Moritz Lennert <mlennert at club.worldonline.be>:
> Hi Roberta,
>
> Thanks for your report and your great work !
>
Thank to you for your support!
>
> Here are a few remarks:
>
> - You have a -t flag with description "Do not delete temporary files".
> Is this only for debugging purposes (and which temporary files are
> created), or does this have any real use for the user ? If the
> former, this should probably not be part of the module UI, if the
> latter, it should be explained in the man page.
>
I have not yet decided whether to keep the option. At the moment it is
certainly useful for debugging purposes but I also think it could be useful
to users interested in understanding how the procedure works.
What do you think? Could it be useful?
>
> - I have several comments concerning your input_file parameter
>
>
> - The syntax of this file has to be explained in the man page,
> including the precise variable names (blue, not Blue, not
> BLUE, etc)
>
Of course! I have already added the explanation this morning.
>
> - The code for reading this file can probably be simplified
> quite easily by using something like this:
>
> for line in file(input_file):
> a = line.split('=')
> if len(a) <> 2 or a[0] not in ['blue', 'red', etc ]:
> gscript.fatal("Syntax error in the txt file.")
> a[1] = a[1].strip()
> bands[a[0]] = a[1]
>
Thank you! this is a better solution than mine. It was a first experiment
but I have already implemented your suggestion.
>
> - Again a (minor) remark on readability of the code. When you use named
> variables in format(), I would suggest that you use the actual names.
> i.e. instead of
>
> gscript.mapcalc('{r} = 1.0 * ({a})/{c}'.format(
> r=("{}_{}".format(b, d)),
> a=b, c=scale_fac),
> overwrite=True)
>
> why not use this:
>
> gscript.mapcalc('{r} = 1.0 * ({b})/{scale_fac}'.format(
> r=("{}_{}".format(b, d)),
> b=b, scale_fac=scale_fac),
> overwrite=True)
>
> ?
>
> I think it makes the formula more easily readable.
>
Yes, you are right! Done!
>
>
> - Some remarks on your handling of temporary maps:
>
> - You use
>
> processid = "{:.2f}".format(time.time())
> processid = processid.replace(".", "_")
>
> why not simply:
>
> processid = os.getpid() ?
>
I didn't know this function, it seems to be cleaner than mine..thank you,
added!
>
> - Instead of having to check for the type of every single map
> in the cleanup function, you could include the type in the
> info, i.e. something like this:
>
> r = 'raster'
> v = 'vector'
>
> tmp["cloud_v"] = ["cloud_v_" + processid, v]
> (I personally use "cloud_v_%i" % processid; not sure
> what is preferable)
>
> which then allows you to do something like this in cleanup():
>
> for temp_map, maptype in tmp:
> if gscript.find_file(temp_map, element=maptype)['name']:
> gscript.run_command('g.remove',
> flags='f',
> type=maptype,
> name=temp_map,
> quiet=True)
>
I tried to implement this solution but in this way, I get a warning message:
WARNING: Illegal filename <cloud_v_8048,vector> etc.
I tried different ways and I looked for something similar but I can not
find how to add the map type in the info.
>
> - In its final version your man page should contain an example,
> ideally a complete example starting with i.sentinel.download and
> going all the way to i.sentinal.mask in order to show the use of the
> module within a reproducible workflow, best using a North Carolina
> example to fit with the demo dataset.
>
I had already thought about making a complete example. I hope to prepare
and add this first part by the end of this week.
>
>
> Moritz
>
Roberta
>
> Le Sun, 10 Jun 2018 10:58:37 +0200,
> Roberta Fagandini <robifagandini at gmail.com> a écrit :
>
> > Hi all!
> > I'm Roberta Fagandini and I'm working on my GSoC project, a GRASS GIS
> > module for Sentinel-2 cloud and shadow detection.
> > This is my report for the fourth week of coding.
> >
> > *1) What did I complete this week?*
> >
> > - Implemented some changes from dev feedback (e.g. added a new
> > flag to manage the two procedure separately and added the text file
> > option to specify input bands)
> > - Tested the modified python script and fixed bugs (e.g. solved a
> > bug for -s flag)
> > - Created a real complete GRASS GIS module that can be installed
> > with g.extension
> > - Finished implementing the GUI
> > - Tested the GUI and fixed bugs
> > - Cleaned up the code from the style point of view in order to
> > make it more readable (followed PEP8 style guide and GRASS Python
> > Scripting Library rules, converted python lists into dictionaries,
> > added comments, messages and warnings, etc.)
> > - Started writing the manual page
> > - Solved a problem with g.extension thanks to dev community
> > suggestions
> > - Discussed future improvements with the dev community
> > - Frequently added the new version of the code to my GitHub
> > repository [0]
> > - Shared progress with the community
> >
> > *2) What am I going to achieve for next week?*
> >
> > - Implement any change from discussions and feedback
> > - Test and fix bugs
> > - Finish writing the manual page
> > - Check the code with mentors
> > - Prepare deliverable for the evaluation
> >
> > *3) Is there any blocking issue?*
> > No at the moment.
> >
> > Here the links to my wiki page [1] and GitHub repository [0]
> >
> > Kind regards,
> > Roberta
> >
> > [0] https://github.com/RobiFag/GRASS_clouds_and_shadows
> > [1]
> > https://trac.osgeo.org/grass/wiki/GSoC/2018/CloudsAndShadowsDetection
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20180611/7da7c90b/attachment-0001.html>
More information about the grass-dev
mailing list