Bonjour!
Je rencontre un problème en voulant établir la connexion au sein d'une relation entre un .shp de point et un raster (de couverture de sol). En effet, après avoir défini mes deux entités et les avoirs fait "matcher" avec leurs datafacers respectifs, je les ajoute dans mon scénario et créé une liste pour chacun grâce à la fonction readAll. Je défini ensuite ma relation.
relation HerdLandcov<Buffalo b, Landcover l>{
interaction check_landcov (){
b.landcover_ici = l.landcv_type //affect the landcover where the buffalo is to his entity
} (Je cherche à extraire la valeur de landcover pour chaque point, normalement pas besoin d' "agg" car chaque points doit avoir sont landcov, le cas est différent de l'exemple Obelix)
}
(Je créé au préalable une catégorie vide landcover (pas de match avec cette "variable ») dans l'entité Buffalo)
J'ajoute ensuite ma relation dans le scénario et essaye de faire la connexion, mon scénario au complet:
scenario Try_to_run {
println("Model Try_to_run ready to run")
// Read the Landcover raster
fix rastlandcov = new Landcov
fix cell_list = rastlandcov.readAllLandcover
fix ldcv = new Landcover
println("Nous avons obtenu "+cell_list.size+" entités MntCellule.")
fix buffles = new ShpPosition
fix buflist = buffles.readAll
fix bfl = new Buffalo
println("on as "+buflist.size+ " enregistrements")
// Definition of the buffalo-landcov relation
fix rhl = new HerdLandcov
rhl.connect(ldcv, bfl ) //visiblement il veut absolument des entités ici, pourquoi?????
// rhl.connect (cell_list,buflist) schéma trouvé dans l'exemple "Obélix" mais ne marche pas ici
rhl.check_landcov()
println("les buffles se trouve dans le type de sol " +bfl.landcover_ici )
}
Ayant regardé et fait tourner l'exemple Obelix, je ne comprends pas pourquoi ocelet ne veux pas compiler la seconde version de la ligne rhl.connect() ici alors que c'est celle-ci qui suit l'exemple Obelix (qui lui fonctionne).
Ocelet accepte ma ligne " rhl.connect(ldcv, bfl )" où les entités ont été placées, mais lorsque je fais tourner le modèle il me renvoi:
Exception in thread "main" java.lang.NullPointerException
at fr.ocelet.runtime.relation.impl.GeometryCellGraph.connect(GeometryCellGraph.java:143)
at fr.ocelet.model.try_to_run.Try_to_run.run_Try_to_run(Try_to_run.java:45)
at fr.ocelet.model.try_to_run.Try_to_run.main(Try_to_run.java:25)
J'ai beau tourner le problème dans tous les sens je ne trouve pas la solution...
Merci d'avance et bonne journée!
PS: mes entités au cas où:
////////////////////////LANDCOVER
entity Landcover{
property Cell cell
property Integer landcv_type
}
//================================================== Landcover Raster datafacer, read vegetation type from a raster
datafacer Landcov {
data RasterFile ("data/landcover/Gona/classif_gona_landcover.tif","EPSG:32736")
match Landcover {
landcv_type : "0"
}
}
entity Buffalo {
property Point position
property Integer landcover_ici
property Integer step
}
// Read starting / ending position from a shapefile
datafacer ShpPosition {
data Shapefile("data/bufalo/Gona/gp1_centroid_inf500m.shp","EPSG:32736")
match Buffalo {
position : "the_geom"
step : "STEP"
}
}