CORINE Land Cover

From GRASS-Wiki
Revision as of 16:07, 13 February 2014 by Mlennert (talk | contribs) (added input files for r.reclass and r.colors for CLC)
Jump to navigation Jump to search

The European Environmental Agency (EEA) provides the CORINE ( COoRdinate INformation on the Environment ) land data base, a pan-European land cover/ land use map for non-commercial use. The Minimum Mapping Unit (MMU) is set to 25 hectares. Various documentation and reports (methodology, nomenclature, etc.) are available at EEA's CORINE Land Cover Publications webpage.

The CORINE2000 land cover map


EEA grants free access to all its data/applications provided that the user agrees:

· to acknowledge the source as follows: Copyright EEA, Copenhagen, 2007

· to display a link to the EEA web site

· not to use the data/applications for commercial purposes unless the Agency has expressly granted the right to do so



CORINE2000 (or CLC2000) is the year 2000 update of the first CORINE database that was finalised in the early 90s. Normally a registration is required to obtain tiles of the seamless vector database in the form of ESRI shapefiles from EEA’s download web-service. The raster equivalent version of the CORINE2000 map derived from the seamless vector database is of 100m pixel resolution [see Raster data section below]. Nevertheless, there is the possibility to get specific tiles using the wget tool under linux.

Instructions need to be (cross-)checked...

Choose names for directories, grass database, location(s), mapset(s) and maps according to your needs

Get CORINE tiles from EEA's download web-service
 # get tiles of interest from [ EEA’s download web-service] and move all zipped files in one directory
 mv /from/your/download/directory/100km*.zip /home/user-id/grassdb/clc2000/tiles
 # decompress
 cd /home/user-id/grassdb/clc2000/tiles
 unzip "*.zip"
 # create new location for example from within a grass session (called for example laea) based on ETRS89/LAEA (=Lambert Azimuthal Equal Area) 
 g.proj -c georef=/home/user-id/grassdb/clc2000/tiles/100KME53N16.shp location=laea
 # connect to database/ check database connection
 db.connect driver=sqlite database=/home/user-id/grassdb/clc2000/laea/PERMANENT/sqlite.db
 # import CORINE tiles
 for i in *.shp ; do -r dsn=$i out=x`echo $i | sed 's+\.+_+g'` ; done
 # patch tiles in one map
 v.patch -e input=‘g.mlist vect sep=, pattern=x100*‘ out=corine
 # add some metadata (optional) map=corine map_name="CORINE land cover 2000" comment="command g.mlist vect sep=, pattern=x100* used for v.patch input, map needs cleaning and dissolving"
 # clean topology -- Watch Out: a large threshold for snap can severely damage area topology. Test before use!
 v.clean input=corine output=corine_clean type=point,line,boundary,centroid,area tool=snap,break,rmdupl thresh=.01
 # dissolve
 v.dissolve input=corine_clean output=corine_dissolved col=CODE_00
 # overlay a studyarea vector map (optional)
 v.overlay ainput=studyarea atype=area binput=corine_dissolved btype=area output=corine_studyarea operator=and olayer=1,0,0
 # check attribute table of new vector map
 db.describe -c corine_studyarea
 # columns of interest are '''cat''', '''a_b_nam''', '''b_cat'''
 # remove the rest using ''v.db.dropcol'' and check structure again
 # apply official CORINE colors
 '''TO ADD'''
Get CORINE tiles for a country based on EEA's reference grids

After getting shapefile with tiles for a country of interest (e.g. Greece) from EEA's reference grids, decompress and launch grass in location laea (one method of location creation demonstrated above).

 # check database connection
 db.connect driver=sqlite database=/geo/grassdb/ellas/laea/PERMANENT/sqlite.db
 # import shapefile dsn=/geo/geodata/ellas/vector/eea/eea_reference_grid_el/GR_100K.shp out=eea_gr_100k
 # print first lines of attribute table to identify column of interest (names of tiles of interest) eea_gr_100k | head
 # create a file with names of the tiles of interest (one line per tile-name) eea_gr_100k -c | cut -d"|" -f2 > corine_tiles_ellas
 # create a "pool" directory where tiles are to be downloaded
 mkdir pool
 cd pool
 # get tiles of interest
 for x in `cat corine_tiles_ellas` ; do wget$ ; done
 # decompress downloaded tiles
 unzip "∗.zip"
 # import tiles in grass' database / location laea
 for x in *.shp ; do dsn=$x out=tile_`basename $x .shp` ; done
 # patch tiles in one map
 for x in `g.mlist vect pat=tile_* sep=,` ; do v.patch -e --o in=$x out=corine_ellas_tiles_patched ; done
 # clean topology
 v.clean corine_ellas_tiles_patched out=corine_ellas_patched_clean tool=snap,break,rmdupl thresh=.01
 # check attribute table structure -c corine_ellas_patched_clean
 # convert to integer type the column "CODE_00" using some sqlite database manager frontend (e.g. sqlitebrowser)
 # alternatively use v.db.addcol column=’somename integer’ and v.db.update to fill in the cat values (which actually are the corine class codes)
 '''ADD COMMAND(s)'''

 # dissolve
 v.dissolve corine_ellas_patched_clean out=corine_ellas_clean_dissolved column=CODE_00
 # add table to attribute tables database
 v.db.addtable corine_ellas_clean_dissolved
 # check attribute table structure
 db.describe corine_ellas_clean_dissolved -c
 # column ''cat'' contains the CORINE class codes
 # import labels and CORINE colors (the latter as ''grassrgb'' column) in the attribute tables database dsn=/geo/geodata/europe/corine_levels_lables_grassrgb/corine_levels_labels_grassrgb.csv out=corine_levels_labels_grassrgb
 '''ADD where to get TABLE, how to use'''

 # join newly imported table with corine's attribute table
 v.db.join corine_ellas_clean_dissolved column=cat otable=corine_levels_labels_grassrgb ocolumn=level3
 # check attribute table after join operation
 db.describe -c corine_ellas_clean_dissolved
 ''or'' corine_ellas_clean_dissolved | head
 # draw map
 # get dataset '''' (NUTSV9, 1.27 MB) which contains national borders available at [ EEA's Administrative land accounting units webpage]
 # unzip file
 # import NUTSV9 dsn=NUTSV9_LEAC.shp output=nutsv9 min_area=0.0001 snap=-1
 # extract national borders
 v.extract input=nutsv9 output=nutsv9_ellas type=boundary,centroid,area layer=1 new=-1 where=’N0CD="GR"# match region to extent of national borders
 g.region vect=nutsv9 res=250 -pa
 # rasterize input=nutsv9_ellas output=nutsv9_ellas use=cat type=area layer=1 value=1 rows=4096
 # create a country raster mask using r.mapcalc
 r.mapcalc ellas=’if(nutsv9_ellas != 0, 1, null())# smooth vectorization -s input=ellas output=ellas feature=area
 # overlay national boundaries
 v.overlay ainput=corine_ellas_clean_dissolved atype=area binput=ellas btype=area output=corine_ellas_v2 operator=and olayer=1,0,0
 # after overlay rename/remove columns if/as desired

Instructions above were extracted from a tutorial written in the Greek Language: Οδηγός για την "Αναπαραγωγή του χάρτη CORINE µε το GRASS-GIS" available at GREGIS: Greek GIS methods and data and, additionally, at ELOGeo's Open Courses Repository (both a PDF file as well as the LyX source file).

The CORINE land cover (GRASS-GIS raster) map over Greece viewed from within QGIS16





  • Input file to r.reclass with CLC class values and labels

1=111 Continuous urban fabric

2=112 Discontinuous urban fabric

3=121 Industrial or commercial units

4=122 Road and rail networks and associated land

5=123 Port areas

6=124 Airports

7=131 Mineral extraction sites

8=132 Dump sites

9=133 Construction sites

10=141 Green urban areas

11=142 Sport and leisure facilities

12=211 Non-irrigated arable land

13=212 Permanently irrigated land

14=213 Rice fields

15=221 Vineyards

16=222 Fruit trees and berry plantations

17=223 Olive groves

18=231 Pastures

19=241 Annual crops associated with permanent crops

20=242 Complex cultivation patterns

21=243 Land principally occupied by agriculture, with significant areas of natural vegetation

22=244 Agro-forestry areas

23=311 Broad-leaved forest

24=312 Coniferous forest

25=313 Mixed forest

26=321 Natural grasslands

27=322 Moors and heathland

28=323 Sclerophyllous vegetation

29=324 Transitional woodland-shrub

30=331 Beaches, dunes, sands

31=332 Bare rocks

32=333 Sparsely vegetated areas

33=334 Burnt areas

34=335 Glaciers and perpetual snow

35=411 Inland marshes

36=412 Peat bogs

37=421 Salt marshes

38=422 Salines

39=423 Intertidal flats

40=511 Water courses

41=512 Water bodies

42=521 Coastal lagoons

43=522 Estuaries

44=523 Sea and ocean

48=999 NODATA




  • Input to r.colors for CLC color scheme

111 230:000:077

112 255:000:000

121 204:077:242

122 204:000:000

123 230:204:204

124 230:204:230

131 166:000:204

132 166:077:000

133 255:077:255

141 255:166:255

142 255:230:255

211 255:255:168

212 255:255:000

213 230:230:000

221 230:128:000

222 242:166:077

223 230:166:000

231 230:230:077

241 255:230:166

242 255:230:077

243 230:204:077

244 242:204:166

311 128:255:000

312 000:166:000

313 077:255:000

321 204:242:077

322 166:255:128

323 166:230:077

324 166:242:000

331 230:230:230

332 204:204:204

333 204:255:204

334 000:000:000

335 166:230:204

411 166:166:255

412 077:077:255

421 204:204:255

422 230:230:255

423 166:166:230

511 000:204:242

512 128:242:230

521 000:255:166

522 166:255:230

523 230:242:255


Personal communication with EEA (e-mails) and discussion about licensing issues with respect to the CORINE land data base can be found at: