Télécharger krig_02.dgibi

Retour à la liste

Numérotation des lignes :

  1. ** Test du krigeage sur une geometrie spherique (la terre !)
  2.  
  3. * Base sur la reference suivante :
  4. * Charles Vanwynsberghe
  5. * https://medium.com/towards-data-science/kriging-the-french-temperatures-f0389ca908dd
  6. *
  7. * Les donnees meteo sont publiques et disponibles sur les site de Meteo France :
  8. * https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=90&id_rubrique=32
  9. *
  10. * Les contours des regions de France sont issus de :
  11. * https://github.com/gregoiredavid/france-geojson/tree/master
  12. * https://france-geojson.gregoiredavid.fr
  13.  
  14.  
  15.  
  16. ** Options generales
  17. OPTI 'DIME' 2 'ELEM' 'TRI3' 'ECHO' 0 ;
  18. itrac = FAUX ;
  19.  
  20.  
  21. ** Repertoire ou sont ranges les fichiers de donnees utiles pour ce calcul
  22. divers = VENV 'CASTEM_DIVERS' ;
  23. rep = CHAI divers '/krigeage/' ;
  24.  
  25. ** Acquisition des maillages des regions
  26. treg = TABL ;
  27. treg . 1 = 'auvergne_rhone_alpes' ;
  28. treg . 2 = 'bourgogne_franche_comte' ;
  29. treg . 3 = 'bretagne' ;
  30. treg . 4 = 'centre_val_de_loire' ;
  31. treg . 5 = 'grand_est' ;
  32. treg . 6 = 'hauts_de_france' ;
  33. treg . 7 = 'ile_de_france' ;
  34. treg . 8 = 'normandie' ;
  35. treg . 9 = 'nouvelle_aquitaine' ;
  36. treg . 10 = 'occitanie' ;
  37. treg . 11 = 'pays_de_la_loire' ;
  38. treg . 12 = 'provence_alpes_cote_d_azur' ;
  39. cregion = VIDE 'MAILLAGE' ;
  40. sfrance = VIDE 'MAILLAGE' ;
  41. * liste des regions a retenir pour l'interpolation
  42. lreg = LECT 1 'PAS' 1 12 ;
  43. * maillages des contours et surfaces des regions
  44. REPE reg (DIME lreg) ;
  45. ireg = EXTR lreg &reg ;
  46. t1 = LIRE 'CSV' (CHAI rep (treg . ireg) '.csv') 'SEPA' ',' ;
  47. lig1 = QUEL 'SEG2' (t1 . 1) (t1 . 2) ;
  48. lig1 = lig1 ET (DROI 1 (lig1 POIN 'FINAL') (lig1 POIN 'INITIAL')) ;
  49. sur1 = TRIA lig1 ;
  50. * raffinement de maillage avec RAFT
  51. de = MESU sur1 'DENS' ;
  52. theta = 0.4 ;
  53. dmoy = (theta * (MAXI de)) + ((1. - theta) * (MINI de)) ;
  54. sur2 = RAFT sur1 (MANU 'CHPO' sur1 1 'SCAL' dmoy) ;
  55. cregion = cregion ET lig1 ;
  56. sfrance = sfrance ET sur2 ;
  57. FIN reg ;
  58. ELIM 1.E-9 cregion ;
  59.  
  60.  
  61. ** Acquisition des donnees meteo (Latitude/Longitude/Altitude/Temperature)*
  62. * au 1er janvier 2020 a 03h00
  63. tmeteo = LIRE 'CSV' (CHAI rep 'donnees_meteo.csv') ;
  64. lon = tmeteo . 'Longitude' ;
  65. lat = tmeteo . 'Latitude' ;
  66. lt = (tmeteo . 'Temp') - 273.15 ;
  67. pmes = POIN lon lat ;
  68. mes = MANU 'CHPO' pmes 3 'LONG' lon 'LATI' lat 'T' lt ;
  69. SI itrac ;
  70. * annotations pour chaque station
  71. ann = VIDE 'ANNOTATI' ;
  72. REPE bm (DIME lt) ;
  73. ann1 = ANNO 'ETIQ' ((EXTR lon &bm) (EXTR lat &bm)) 'NE' 0.05 FAUX (CHAI 'FORMAT' '(F4.1)' (EXTR lt &bm)) ;
  74. ann = ann ET ann1 ;
  75. FIN bm ;
  76. TRAC (EXCO 'T' mes) pmes (cregion COUL 'GRIS') ann 'TITR' 'Releves de temperature au 1er jan 2020 03h00' ;
  77. FINSI ;
  78.  
  79.  
  80. ** Variogramme experimental des mesures (selon un modele gaussien)
  81. a = 2.6E2 ;
  82. b = 26.87 ;
  83. ldis = PROG 0. 'PAS' 1. 1500. ;
  84. lgth = b * (1. - (EXP (-0.5 * ((ldis / a) ** 2)))) ;
  85. gamth = EVOL 'VERT' 'MANU' 'LEGE' 'Modele gaussien' 'Dist. (km)' ldis 'Semivariance' lgth ;
  86. lcth = b * (EXP (-0.5 * ((ldis / a) ** 2))) ;
  87. SI itrac ;
  88. DESS gamth 'TITR' 'Variogramme' ;
  89. FINSI ;
  90.  
  91.  
  92. ** Champ des longitude/latitude des points cibles
  93. x y = COOR sfrance ;
  94. cib = (NOMC 'LONG' x) ET (NOMC 'LATI' y) ;
  95.  
  96.  
  97. ** Krigeage au points cibles
  98. t = TABL ;
  99. t . 'MESURES' = mes ;
  100. t . 'COMPOSANTE' = MOT 'T' ;
  101. t . 'CIBLES' = cib ;
  102. t . 'VARIOGRAMME' = gamth ;
  103. t . 'DISTANCE' = MOT 'SPHERIQUE' ;
  104. t . 'RAYON' = 6371. ;
  105. est var = KRIG t ;
  106. tps2 = TEMP 'HORL' ;
  107. MESS 'Krigeage sur' ' ' (NBNO sfrance) ' points realise en' ' ' tps2 ' ms' ;
  108.  
  109.  
  110. ** Trace des champs interpole
  111. SI itrac ;
  112. MESS 'Temperatures min/max :' (MINI est) ' ' (MAXI est) ;
  113. TRAC est sfrance (cregion ET pmes) (PROG -3. 'PAS' 1. 14.) ann 'TITR' 'Interpolation de la temperature par Krigeage' ;
  114. FINSI ;
  115.  
  116.  
  117. ** Petite verification : quel temps fait'il a Concarneau ?
  118. lonsac = -3.9167 ;
  119. latsac = 47.8666 ;
  120. ptest = lonsac latsac ;
  121. mtest = MANU 'POI1' ptest ;
  122. estm = CHAN 'CHAM' est sfrance ;
  123. ttest = PROI mtest estm ;
  124. ttest = EXTR ttest 'T' ptest ;
  125. MESS 'Temperature a Concarneau :' ;
  126. MESS ttest ;
  127. tref = 8.317 ;
  128. err = ABS ((ttest - tref) / tref) ;
  129. SI (err > 1.E-4) ;
  130. MESS 'Erreur dans le krigeage des temperatures' ;
  131. ERRE 5 ;
  132. FINSI ;
  133.  
  134. FIN ;
  135.  
  136.  
  137.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales