Commit 93031e24a7bd57151dd9cc8898cac99f881190b3

Authored by Jordi Inglada
1 parent 8979c208
Exists in master

Début analyse données TERLAB avec Geopandas

Showing 1 changed file with 146 additions and 0 deletions   Show diff stats
notebook/exploration.org 0 → 100644
... ... @@ -0,0 +1,146 @@
  1 +#+TITLE: Exploration des données TERLAB
  2 +#+AUTHOR: Jordi Inglada
  3 +#+LANGUAGE: fr
  4 +# #+PROPERTY: header-args :eval never-export
  5 +
  6 +
  7 +* Accès à un fichier TERLAB
  8 +** Trouver le fichier d'un département
  9 +Le nom des fichiers zippés est ~RPG_TERLAB_DEP65-66_2017.7z~ ou ~RPG_TERLAB_DEP10_2017.7z~
  10 +#+begin_src python :results output :session :exports code
  11 +
  12 +terlabdir = '/home/inglada/stok/DATA/OSO/MAA_SSP/'
  13 +import glob
  14 +def find_terlab_file(dpt):
  15 + tld = terlabdir
  16 + tlfiles = glob.glob('{}/*.7z'.format(tld))
  17 + filefound = None
  18 + for f in tlfiles:
  19 + tok = f.split('/')[-1].split('_')[2]
  20 + if tok == 'Corse' and (dpt=='2A' or dpt=='2B'):
  21 + return f
  22 + else:
  23 + tok = tok[3:]
  24 + if len(tok) == 2 and tok == str(dpt):
  25 + return f
  26 + else:
  27 + toks = tok.split('-')
  28 + if str(dpt) in toks:
  29 + return f
  30 + return None
  31 +
  32 +#+end_src
  33 +
  34 +#+RESULTS:
  35 +: Python 3.7.0 (default, Oct 9 2018, 10:31:47)
  36 +: [GCC 7.3.0] :: Anaconda, Inc. on linux
  37 +: Type "help", "copyright", "credits" or "license" for more information.
  38 +: python.el: native completion setup loaded
  39 +
  40 +
  41 +#+begin_src python :results output :session :exports both
  42 +assert '/home/inglada/stok/DATA/OSO/MAA_SSP/RPG_TERLAB_DEP90-91-93-94-95_2017.7z'==find_terlab_file('94')
  43 +assert '/home/inglada/stok/DATA/OSO/MAA_SSP/RPG_TERLAB_DEP90-91-93-94-95_2017.7z'==find_terlab_file('95')
  44 +assert '/home/inglada/stok/DATA/OSO/MAA_SSP/RPG_TERLAB_DEP31_2017.7z'==find_terlab_file('31')
  45 +assert '/home/inglada/stok/DATA/OSO/MAA_SSP/RPG_TERLAB_Corse_2017.7z'==find_terlab_file('2A')
  46 +#+end_src
  47 +
  48 +#+RESULTS:
  49 +
  50 +
  51 +
  52 +** Mettre le fichier dans un data frame geopandas
  53 +#+begin_src python :results output :session :exports both
  54 +import subprocess
  55 +import os
  56 +import geopandas as gp
  57 +def shape2df(departement):
  58 + zipfile = find_terlab_file(str(departement))
  59 + devnull = open(os.devnull, 'w')
  60 + subprocess.call(["7z", "x", zipfile, "-aoa"], stdout=devnull)
  61 + shapefile = '{}/SURFACES-2017-PARCELLES-GRAPHIQUES-CONSTATEES_0{}_20180210.shp'.format(terlabdir, str(departement))
  62 + return gp.read_file(shapefile)
  63 +#+end_src
  64 +
  65 +#+RESULTS:
  66 +
  67 +
  68 +
  69 +* Quelles sont les variables intéressantes dans les données TERLAB
  70 +On vérifie que le fichier est bien lu
  71 +#+begin_src python :results output :session :exports both
  72 +df31 = shape2df(31)
  73 +print(df31.head())
  74 +#+end_src
  75 +
  76 +#+RESULTS:
  77 +: CODE_CULTU SURF_ADM PRECISION SEMENCE ... SURUTISOL RENDNORME MMEAU geometry
  78 +: 0 ORH 1.42 None 0 ... NaN NaN NaN POLYGON ((506016.382600002 6234988.195600003, ...
  79 +: 1 PPH 0.00 None 0 ... NaN NaN NaN POLYGON ((506032.0680000037 6235002.251000002,...
  80 +: 2 PPH 0.00 None 0 ... NaN NaN NaN POLYGON ((506108.3540000021 6234766.824000001,...
  81 +: 3 ORH 1.87 None 0 ... NaN NaN NaN POLYGON ((506107.6996000037 6234765.226100001,...
  82 +: 4 PPH 0.00 None 0 ... NaN NaN NaN POLYGON ((506874.6119000018 6234495.103300001,...
  83 +:
  84 +: [5 rows x 18 columns]
  85 +
  86 +On liste les colonnes
  87 +#+begin_src python :results output :session :exports both
  88 +print(df31.columns)
  89 +#+end_src
  90 +
  91 +#+RESULTS:
  92 +: Index(['CODE_CULTU', 'SURF_ADM', 'PRECISION', 'SEMENCE', 'DEST_ICHN',
  93 +: 'CULTURE_D1', 'CULTURE_D2', 'BIO', 'ENGAGEMENT', 'MARAICHAGE',
  94 +: 'AGROFOREST', 'TLENQ', 'CODUTISOL', 'LIBCULTURE', 'SURUTISOL',
  95 +: 'RENDNORME', 'MMEAU', 'geometry'],
  96 +: dtype='object')
  97 +
  98 +Une ligne
  99 +#+begin_src python :results output :session :exports both
  100 +print(df31.iloc[0])
  101 +#+end_src
  102 +
  103 +#+RESULTS:
  104 +#+begin_example
  105 +CODE_CULTU ORH
  106 +SURF_ADM 1.42
  107 +PRECISION None
  108 +SEMENCE 0
  109 +DEST_ICHN None
  110 +CULTURE_D1 None
  111 +CULTURE_D2 None
  112 +BIO 0
  113 +ENGAGEMENT None
  114 +MARAICHAGE 0
  115 +AGROFOREST None
  116 +TLENQ 1
  117 +CODUTISOL 03
  118 +LIBCULTURE 03_ORGE_HIVER
  119 +SURUTISOL NaN
  120 +RENDNORME NaN
  121 +MMEAU NaN
  122 +geometry POLYGON ((506016.382600002 6234988.195600003, ...
  123 +Name: 0, dtype: object
  124 +#+end_example
  125 +
  126 +Quels sont les codes des cultures?
  127 +
  128 +#+begin_src python :results output :session :exports both
  129 +print(set(df31.CODE_CULTU))
  130 +#+end_src
  131 +
  132 +#+RESULTS:
  133 +: {'LOT', 'MPC', 'AVH', 'GES', 'PCH', 'TTP', 'DTY', 'LH6', 'PAG', 'FNU', 'PPO', 'SGH', 'MC5', 'TRN', 'MLG', 'CZH', 'PPP', 'SGE', 'LAV', 'ORP', 'BRO', 'OLI', 'ME7', 'POR', 'CML', 'SOJ', 'FEV', 'FLA', 'CHS', 'LH7', 'SNE', 'LU5', 'MIS', 'SPL', 'NOX', 'FVL', 'BVF', 'LUD', 'CID', 'MIE', 'SAI', 'RGA', 'PTR', 'PEP', 'BDH', 'LU6', 'ORH', 'CPL', 'ML6', 'CTG', 'SPH', 'LEC', 'TOP', 'PFP', 'MC7', 'FRA', 'SRS', 'CRD', 'VRT', 'VRG', 'BTP', 'ORT', 'BOR', 'BTA', 'RVI', 'TR6', 'PPR', 'MOT', 'LUZ', 'CAG', 'OIG', 'CHU', 'CIT', 'TAB', 'MC6', 'RDI', 'MLO', 'CCT', 'LU7', 'FF7', 'MID', 'HBL', 'PH6', 'MLT', 'TR5', 'SBO', 'ME6', 'EPE', 'PHI', 'CEL', 'SOG', 'SA5', 'ANE', 'BTH', 'PSL', 'VE7', 'LDH', 'ML5', 'SA6', 'PCL', 'CAR', 'POT', 'PRL', 'PAS', 'MCT', 'NVT', 'OAG', 'CPH', 'MOH', 'BFS', 'J6S', 'TCR', 'CCN', 'AUB', 'J5M', 'AIL', 'FAG', 'TTH', 'MCR', 'TRE', 'LBF', 'TOM', 'PAN', 'CZP', 'LIH', 'J6P', 'AGR', 'MH7', 'GFP', 'TRU', 'LO7', 'CGO', 'PVP', 'AVP', 'FNO', 'SA7', 'PFR', 'PPH', 'ML7', 'PFH', 'FET', 'BDP', 'BOP', 'NOS', 'MH5', 'PTC', 'MPA', 'TR7', 'PH7', 'CES', 'FLP', 'CHT', 'LP7', 'HAR', 'VE6', 'CMB', 'BTN', 'MH6', 'FSG', 'BFP', 'PPA', 'VES', 'ROQ', 'PP7', 'LIP', 'VRC', 'ART'}
  134 +
  135 +Mais il est plus lisible de regarder ~LIBCULTURE~
  136 +#+begin_src python :results output :session :exports both
  137 +print(set(df31.LIBCULTURE))
  138 +#+end_src
  139 +
  140 +#+RESULTS:
  141 +: {'07_TRITICALE', '00_XXXXXXXXXX', '21_BETTERAVE_INDUSTRIELLE', '20_MAIS_FOURRAGE', '31_POMME_DE_TERRE_CONSO', '17_MAIS_GRAIN', '11_POIS_PROTEAGINEUX', '15_SORGHO', '02_BLE_DUR', '13_TOURNESOL', '05_AVOINE', '09_COLZA', '06_SEIGLE', '01_BLE_TENDRE', '61_MELANGE_CEREALES', '62_MELANGE_PROTEAGINEUX', '12_FEVE_FEVEROLE', '03_ORGE_HIVER', '14_SOJA', '04_ORGE_PRINTEMPS'}
  142 +
  143 +Mais il y a beaucoup plus de ~CODE_CULTU~ que de ~LIBCULTURE~. Peut-être que le 2è n'existe que pour les parcelles avec rendement?
  144 +* Quels sont les départements contenant des informations de rendement?
  145 +* Quelles sont les cultures pour lesquelles les informations de rendement sont les plus nombreuses?
  146 +* Quelles sont les tuiles S2 nécessaires pour couvrir chaque département?
... ...