source: ether_iasi_L1C/trunk/sub_land_sea_alti.f @ 27

Last change on this file since 27 was 27, checked in by cbipsl, 17 years ago

validation creation appli extraction L1C

File size: 2.4 KB
Line 
1      subroutine sub_land_sea_alti(alat,alon,init,flagtermer,iunittm
2     &                         ,indtermer,nomfichtermer)
3C*****************************************************************
4C
5C PROCEDURE DE LECTURE ET DE DECODAGE DE L'INDICE TERRE/MER
6C (RESOLUTION = 1/6 DEGRE DE 90N A 90S DE LATITUDE ET DE
7C 0 a 360 DEGRES DE LONGITUDE).
8C ON A UN ENREGISTREMENT PAR LATITUDE (1080 ENREGISTREMENTS).
9C POUR CHAQUE LATITUDE, ON A 2160 LONGITUDES DIFFERENTES QUI SONT CODEES
10C SUR 72 INTEGER*4 (SOIT LES 30 PREMIERS BITS UTILISES DE CHAQUE ENTIER).
11C LE BIT EST MIS A 1 LORSQUE L'ON EST SUR MER.
12C
13C*****************************************************************
14C Declaration A rajouter dans le programme principal
15      real alat,alon
16      integer*4 indtermer(2160,1080),flagtermer,init,iunittm
17      character*200 nomfichtermer
18C Fin **********************************************
19      integer*2 nb_lon,indi_relief(2160),alti_relief(2160)
20
21C *** INIT=0 : LECTURE DES 72*1080 INTEGER*4 DANS LE FICHIER 
22C *** nomfichtermer D'UNITE LOGIQUE iunittm
23      if(init.eq.0) then
24        open(iunittm,file=nomfichtermer,form='unformatted')
25         do ilat=1,1080
26            do ilon=1,2160
27               indtermer(ilon,ilat)=-1
28            enddo
29            read(1)nb_lon,(indi_relief(ilon)
30     &                    ,alti_relief(ilon),ilon=1,nb_lon)
31            do ilon=1,nb_lon
32               indtermer(indi_relief(ilon),ilat)=alti_relief(ilon)
33      if(alti_relief(ilon).eq.-30) write(*,*) ilon,ilat
34            enddo
35         enddo
36         close(iunittm)
37       else
38
39C *** UNIT = 1 : RECHERCHE ET DECODAGE DE L'INTEGER*4 QUI CONTIENT
40C *** L'INDICE TERRE/MER POUR LA LATITUDE alat ET LA LONGITUDE alon
41C *** ILAT = NUMERO DU RECORD A LIRE DANS LE FICHIER EN ACCES DIRECT
42C *** ILON = INDICE DE 1 A 2160 POUR LA LONGITUDE
43C *** INDMOT = NUMERO DE L'INTEGER*4 DANS LE TABLEAU indtermer
44C *** NUMBIT = NUMERO DU BIT A RETENIR POUR AVOIR L'INDICE TERRE/MER
45C ***          CORRESPONDANT A alat ET alon
46         ilat=int((90.+1./12.-alat)*6.+0.5)
47         if(ilat.le.0) ilat=1
48         if(ilat.gt.1080) ilat=1080
49         ilon=int(alon*6.+0.5)
50         if(alon.lt.0) ilon=int((alon+360.)*6.+0.5)
51         if(ilon.le.0) ilon=1
52         flagtermer=indtermer(ilon,ilat)
53         if(ilat.le.0.or.ilat.gt.1080)
54     &   write(*,*) alat,ilat,alon,ilon,indmot,numbit,
55     &               indtermer(ilon,ilat)
56       endif
57       return
58       end
Note: See TracBrowser for help on using the repository browser.