You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello,
I want to extract the geoclimate data for Calais, Pau and Saint Nazaire but I get errors (I don't have these for other citites).
The codes and the errors are below.
Would you have any idea where it comes from ?
Thanks !
Here is the script of the groovy code (geoclimate_with_urban_sprawl.groovy):
@GrabResolver(name='orbisgis', root='https://oss.sonatype.org/content/repositories/snapshots/')
@Grab(group='org.orbisgis.geoclimate', module='geoclimate', version='0.0.2-SNAPSHOT')
/**
* This script is used to run geoclimate and compute the urban sprawl
*/
import org.orbisgis.geoclimate.osm.OSM
import org.orbisgis.data.H2GIS
String location = args[0]
//Directory to store all the results
String outputDirectory ="/home/balglave/Desktop/Research/geoclimate/res/"
if(!outputDirectory){
println "The output directory to store the result cannot be null or empty"
}
File dirFile = new File(outputDirectory)
if(!dirFile.exists()){
println "Create the output directory because it doesn't exist"
dirFile.mkdir()
}
//Compute the BBOX of the ICU layer
def local_database_name = "geoclimate_sprawl"
def h2gis_db_parameters = [
"folder": outputDirectory,
"name" : "${local_database_name};AUTO_SERVER=TRUE".toString(),
"delete": false
]
if(!location){
println("The location value cannot be null")
}
//Create before the local H2GIS database that will be used to compute the BBOX of the area
H2GIS h2GIS = H2GIS.open(h2gis_db_parameters.folder + File.separator + h2gis_db_parameters.name)
if(h2GIS==null){
println("Cannot create the local H2GIS database")
return
}
def outputTableNames = runGeoclimate(h2gis_db_parameters, location, outputDirectory )
if(!outputTableNames){
println("Cannot compute the GeoClimate indicators")
}
def rsu_lcz = outputTableNames.rsu_lcz
//Extract sprawl area
String urbanSprawlH2GIS = computeUrbanSprawl(h2GIS, rsu_lcz )
if(!urbanSprawlH2GIS){
println("Cannot compute the urban sprawl")
return
}
//Save the data in a geojson file
h2GIS.save(urbanSprawlH2GIS, outputDirectory+File.separator+"osm_"+location+ File.separator+"urban_sprawl.geojson", true)
/**
* Run the GeoClimate OSM worflow
* @param h2gis_db_parameters
* @param envelope
* @return
*/
def runGeoclimate(def h2gis_db_parameters, def zone, def outputDirectory) {
if (!zone) {
println "The name of the zone to process cannot be null or empty"
}
/*================================================================================
* Exemple with OSM input areas configuration
*/
def input = ["locations": [zone], "delete": true, "area": 2800]
/*================================================================================
* Folder to store the results
*/
def output = [
"folder" : "$outputDirectory"
]
/*================================================================================
* WORKFLOW PARAMETERS
*/
def workflow_parameters = [
"description" : "Run the Geoclimate chain and export result to a folder",
"geoclimatedb": h2gis_db_parameters,
"input" : input,
"output" : output,
"parameters" : [
"rsu_indicators" : [
"indicatorUse": ["LCZ"]
], "worldpop_indicators": true
]
]
Map process = OSM.workflow(workflow_parameters)
return process.values().collectEntries()
}
/**
* Compute the urban sprawl from the LCZ
*
* @param outputDirectory
* @param h2GIS
* @param lczTableName
* @param save
* @return
*/
String computeUrbanSprawl(H2GIS h2GIS, String lczTableName ){
def mergingLcz = "merging_lcz"
h2GIS.execute("""
DROP TABLE IF EXISTS $mergingLcz;
CREATE TABLE $mergingLcz as
select EXPLOD_ID as id_rsu, the_geom from ST_EXPLODE('(
select st_removeholes(st_union(st_accum(the_geom))) as the_geom FROM $lczTableName where LCZ_PRIMARY IN (1,2,3,4,5,6,7,8,9,10,105))')
""".toString())
//Create a grid to generalize the urban areas
h2GIS.execute(""" DROP TABLE IF EXISTS grid;
CREATE TABLE grid as select * from ST_MAKEGRID('$mergingLcz', 100,100);
""".toString())
h2GIS.createSpatialIndex("grid")
h2GIS.createSpatialIndex(mergingLcz)
//Compute the percentage by grid
h2GIS.execute(""" DROP TABLE IF EXISTS grid_lcz, grid_lcz_area, grid_raster;
CREATE TABLE grid_lcz as select st_area(st_intersection(a.the_geom, b.the_geom)) as area, a.id from grid as a,
$mergingLcz as b where a.the_geom && b.the_geom and st_intersects(a.the_geom, b.the_geom);
CREATE TABLE grid_lcz_area as select sum(area) as sum_lcz, id from grid_lcz group by id;
CREATE INDEX ON grid_lcz_area (ID);
CREATE INDEX ON grid (ID);
CREATE TABLE grid_raster as select a.id, a.the_geom from grid as a left join grid_lcz_area as b on a.id=b.id where sum_lcz/(100*100) > 0.4
""".toString())
def urban_sprawl = "urban_sprawl"
h2GIS.execute("""
DROP TABLE IF EXISTS $urban_sprawl;
CREATE TABLE $urban_sprawl as
select EXPLOD_ID as id_rsu, the_geom from ST_EXPLODE('(
select st_removeholes(st_union(st_accum(the_geom))) as the_geom FROM grid_raster)') ;
DROP TABLE IF EXISTS grid_lcz, grid_raster, grid, grid_lcz_area, mergingLcz;
""".toString())
return urban_sprawl
}
Error for Calais:
Caught: java.lang.NullPointerException: Cannot get property 'key' on null object
java.lang.NullPointerException: Cannot get property 'key' on null object
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2$_closure14.doCall(InputDataFormatting.groovy:180)
at jdk.internal.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.data.jdbc.JdbcDataSource.eachRow(JdbcDataSource.java:522)
at org.orbisgis.data.jdbc.JdbcDataSource$eachRow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2.doCall(InputDataFormatting.groovy:170)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy:169)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy)
at org.orbisgis.geoclimate.osm.InputDataFormatting$formatBuildingLayer$2.call(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM$_osm_processing_closure2.doCall(WorkflowOSM.groovy:466)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.WorkflowOSM.osm_processing(WorkflowOSM.groovy:412)
at org.orbisgis.geoclimate.osm.WorkflowOSM$osm_processing$1.callCurrent(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM.workflow(WorkflowOSM.groovy:361)
at org.orbisgis.geoclimate.osm.WorkflowOSM$workflow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.OSM.workflow(OSM.groovy:49)
at org.orbisgis.geoclimate.osm.OSM$workflow.call(Unknown Source)
at geoclimate_with_urban_sprawl.runGeoclimate(geoclimate_with_urban_sprawl.groovy:115)
at geoclimate_with_urban_sprawl$runGeoclimate.callCurrent(Unknown Source)
at geoclimate_with_urban_sprawl.run(geoclimate_with_urban_sprawl.groovy:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Error for Pau:
Caught: java.lang.NullPointerException: Cannot get property 'key' on null object
java.lang.NullPointerException: Cannot get property 'key' on null object
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2$_closure14.doCall(InputDataFormatting.groovy:180)
at jdk.internal.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.data.jdbc.JdbcDataSource.eachRow(JdbcDataSource.java:522)
at org.orbisgis.data.jdbc.JdbcDataSource$eachRow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2.doCall(InputDataFormatting.groovy:170)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy:169)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy)
at org.orbisgis.geoclimate.osm.InputDataFormatting$formatBuildingLayer$2.call(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM$_osm_processing_closure2.doCall(WorkflowOSM.groovy:466)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.WorkflowOSM.osm_processing(WorkflowOSM.groovy:412)
at org.orbisgis.geoclimate.osm.WorkflowOSM$osm_processing$1.callCurrent(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM.workflow(WorkflowOSM.groovy:361)
at org.orbisgis.geoclimate.osm.WorkflowOSM$workflow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.OSM.workflow(OSM.groovy:49)
at org.orbisgis.geoclimate.osm.OSM$workflow.call(Unknown Source)
at geoclimate_with_urban_sprawl.runGeoclimate(geoclimate_with_urban_sprawl.groovy:115)
at geoclimate_with_urban_sprawl$runGeoclimate.callCurrent(Unknown Source)
at geoclimate_with_urban_sprawl.run(geoclimate_with_urban_sprawl.groovy:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Error for Saint Nazaire:
Caught: java.lang.NullPointerException: Cannot get property 'key' on null object
java.lang.NullPointerException: Cannot get property 'key' on null object
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2$_closure14.doCall(InputDataFormatting.groovy:180)
at jdk.internal.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.data.jdbc.JdbcDataSource.eachRow(JdbcDataSource.java:522)
at org.orbisgis.data.jdbc.JdbcDataSource$eachRow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.InputDataFormatting$_formatBuildingLayer_closure2.doCall(InputDataFormatting.groovy:170)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy:169)
at org.orbisgis.geoclimate.osm.InputDataFormatting.formatBuildingLayer(InputDataFormatting.groovy)
at org.orbisgis.geoclimate.osm.InputDataFormatting$formatBuildingLayer$2.call(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM$_osm_processing_closure2.doCall(WorkflowOSM.groovy:466)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.orbisgis.geoclimate.osm.WorkflowOSM.osm_processing(WorkflowOSM.groovy:412)
at org.orbisgis.geoclimate.osm.WorkflowOSM$osm_processing$1.callCurrent(Unknown Source)
at org.orbisgis.geoclimate.osm.WorkflowOSM.workflow(WorkflowOSM.groovy:361)
at org.orbisgis.geoclimate.osm.WorkflowOSM$workflow.call(Unknown Source)
at org.orbisgis.geoclimate.osm.OSM.workflow(OSM.groovy:49)
at org.orbisgis.geoclimate.osm.OSM$workflow.call(Unknown Source)
at geoclimate_with_urban_sprawl.runGeoclimate(geoclimate_with_urban_sprawl.groovy:115)
at geoclimate_with_urban_sprawl$runGeoclimate.callCurrent(Unknown Source)
at geoclimate_with_urban_sprawl.run(geoclimate_with_urban_sprawl.groovy:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
The text was updated successfully, but these errors were encountered:
Hello,
I want to extract the geoclimate data for Calais, Pau and Saint Nazaire but I get errors (I don't have these for other citites).
The codes and the errors are below.
Would you have any idea where it comes from ?
Thanks !
Here is the command I run in the terminal:
groovy geoclimate_with_urban_sprawl.groovy city_name
Here is the script of the groovy code (geoclimate_with_urban_sprawl.groovy):
Error for Calais:
Error for Pau:
Error for Saint Nazaire:
The text was updated successfully, but these errors were encountered: