orbisgis / geoclimate

Geospatial processing toolbox for environmental and climate studies
GNU Lesser General Public License v3.0
59 stars 16 forks source link

Error : groovy.lang.MissingMethodException when calculating LCZ in a BoundingBox with BD Topo V3 #975

Closed Jukjuk-boop closed 3 months ago

Jukjuk-boop commented 4 months ago

In order to calculate LCZ around meteorological stations (#962) in a large area (20+ cities) I want use the Bounding_Box process, but I'm stuck on an error :

groovy.lang.MissingMethodException: No signature of method: org.orbisgis.geoclimate.bdtopo.BDTopoV3Workflow.saveLogZoneTable() is applicable for argument types: (org.orbisgis.data.H2GIS, String, ArrayList, String) values: [org.orbisgis.data.H2GIS@1da711c, C:\Users\Juk\AppData\Local\Temp\, ...] Possible solutions: saveLogZoneTable(org.orbisgis.data.jdbc.JdbcDataSource, java.lang.String, java.lang.String, java.lang.String) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:72) at org.codehaus.groovy.vmplugin.v8.IndyGuardsFiltersAndSignatures.unwrap(IndyGuardsFiltersAndSignatures.java:163) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) at org.orbisgis.geoclimate.bdtopo.AbstractBDTopoWorkflow$_execute_closure1.doCall(AbstractBDTopoWorkflow.groovy:224) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1008) at groovy.lang.Closure.call(Closure.java:433) at groovy.lang.Closure.call(Closure.java:422) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2389) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2374) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2427) at org.codehaus.groovy.runtime.dgm$209.doMethodInvoke(Unknown Source) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) at org.orbisgis.geoclimate.bdtopo.AbstractBDTopoWorkflow.execute(AbstractBDTopoWorkflow.groovy:209) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) at org.orbisgis.geoclimate.bdtopo.BDTopo.v3(BDTopo.groovy:165) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) at org.orbisgis.geoclimate.Geoclimate.call(Geoclimate.groovy:114) at org.orbisgis.geoclimate.Geoclimate.call(Geoclimate.groovy) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) at picocli.CommandLine.execute(CommandLine.java:2078) at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) at org.orbisgis.geoclimate.Geoclimate.main(Geoclimate.groovy:134)

For more informations :

In case it could be of any importance here is my input and output parameters in my Config.Json : "input": { "folder": "C:\Users\Juk\Desktop\geoclimate\BDtopo\", "locations": [ [ 6676912.095135515, 839376.633661055, 6710413.400384427, 869585.4463731416 ] ], "srid" : 2154,
}, "output": { "folder": "C:\Users\Juk\Desktop\Geoclimate\geoclimate\ResultBDtopo_BB" }

j3r3m1 commented 3 months ago

Hi, I cannot reproduce your issue using BDTopo V3 on an other department using a smaller zone. Can you please have a try downloading the data for this department and use the following json file ?


{
    "description": "Processing BDT data",
    "input": {
        "area" : 10000,
    "srid": 2154,
        "folder": "C://path/to/BDTopo/data",
        "locations": [
            [6930234,572256,6933020,574853]
        ]
    },
    "output": {
        "folder": "/tmp"
    }
}
Jukjuk-boop commented 3 months ago

Thanks for the quick reply, I'm gonna try a bit later today and give a more complet answer. I downloaded the file you used. In the Seine-Maritime (76) data I can find .md5 files but not in the Cote d'Or (21) data. Could it impact the geoclimate workflow (I guess not, but wanted to point it out) ?

j3r3m1 commented 3 months ago

Could it impact the geoclimate workflow (I guess not, but wanted to point it out) ?

No it should not

Jukjuk-boop commented 3 months ago

Yesterday I couldn't test with the data you provided (corrupted .rar, must be my connexion). I have run the process as you advised and it works.

It seems I must change the coordinates of my boundingbox, what csr did you used ? Should I add the "area" parameter too ?

Jukjuk-boop commented 3 months ago

The process work with the new coordinates (deleted the part after the ".") and saved to \tmp. Yet I can't find the LCZ layer : image Those files don't give any data about indicators or LCZ. Is there something I missed ?

j3r3m1 commented 3 months ago

Is the area that worked was the one you expected to run (Dijon and surroundings) ? It is totally normal that you do not have the LCZ layer since it was not asked in the configuration file. If you add the right info in the config file, you can get the result of the LCZ at RSU scale. But from what I understand (cf. discussion #962) it is not exactly what you are looking for. To run the LCZ at the unit you want (eg. 250 buffer circle around your stations), you then need to use the script that we refer in the discussion with the data you have created with this issue. Is that clearer ?

Jukjuk-boop commented 3 months ago

The area that worked was very similar (I used the bbox finder website to get the coordinates). As I want to study the relation between air temperature and LCZ I would like to try different scale to considere the LCZ :

j3r3m1 commented 3 months ago

I suppose you do not want to use the LCZ type aggregated at grid cell (RSU LCZ is sufficient) ? Then here is the configuration file you should use:


{
    "description": "Processing BDT data",
    "input": {
        "area" : 10000,
    "srid": 2154,
        "folder": "C://path/to/BDTopo/data",
        "locations": [
            [6930234,572256,6933020,574853]
        ]
    },
    "output": {
        "folder": "/tmp"
    },
    "parameters": {
        "rsu_indicators": {
            "indicatorUse": [
                "LCZ"
            ]
        }
    }
}
Jukjuk-boop commented 3 months ago

Indeed, RSU LCZ is sufficient for my goals. Used the config you gave me and it works ! I will try again with OSM data base, I hope it works without any issue Thanks a lot :)

*Edited as my previous message wasn't needed

j3r3m1 commented 3 months ago

Cool, if the problem that you first evoke in your issue is solved, please consider closing the issue.