CORINE Land Cover
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.
![](/w/images/Corine_land_cover_2000.png)
License
EEA standard re-use policy: unless otherwise indicated, re-use of content on the EEA website for commercial or non-commercial purposes is permitted free of charge, provided that the source is acknowledged (http://www.eea.europa.eu/legal/copyright). Copyright holder: European Environment Agency (EEA).
Vector
CORINE2000
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.
Update 2017: CORINE is now available from here: http://land.copernicus.eu/pan-european/corine-land-cover
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 [http://www.eea.europa.eu/themes/landuse/clc-download 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
# or download from http://land.copernicus.eu/pan-european/corine-land-cover
# 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 v.in.ogr -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)
v.support 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
v.in.ogr 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)
db.select eea_gr_100k | head
cat|CellCode|EofOrigin|NofOrigin
1|100kmE51N18|5100000|1800000
2|100kmE51N19|5100000|1900000
3|100kmE52N16|5200000|1600000
4|100kmE52N17|5200000|1700000
5|100kmE52N18|5200000|1800000
6|100kmE52N19|5200000|1900000
7|100kmE52N20|5200000|2000000
8|100kmE53N15|5300000|1500000
9|100kmE53N16|5300000|1600000
10|100kmE53N17|5300000|1700000
# create a file with names of the tiles of interest (one line per tile-name)
db.select 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 http://dataservice.eea.europa.eu/staticfiles/landcover_tiles_v2/$x.zip ; done
# decompress downloaded tiles
unzip "∗.zip"
# import tiles in grass' database / location laea
for x in *.shp ; do v.in.ogr 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
v.info -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
db.in.ogr 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''
db.select corine_ellas_clean_dissolved | head
# draw map
# get dataset ''nutsv9_leac.zip'' (NUTSV9, 1.27 MB) which contains national borders available at [http://dataservice.eea.europa.eu/dataservice/metadetails.asp?id=1004 EEA's Administrative land accounting units webpage]
# unzip file
unzip NUTSV9_LEACEEA17888I.zip
# import NUTSV9
v.in.ogr 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
v.to.rast input=nutsv9_ellas output=nutsv9_ellas use=cat type=area layer=1 value=1
# create a country raster mask using r.mapcalc
r.mapcalc ellas=’if(nutsv9_ellas != 0, 1, null())’
# smooth vectorization
r.to.vect -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).
![](/w/images/Corine_v2_greece_viewed_in_qgis16_h800px.png)
CORINE1990
TO ADD
Raster
Legend
- r.colors proposes a predefined color scheme called corine which corresponds to the official color scheme published by the EEA
- 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
49=990 UNCLASSIFIED LAND SURFACE
50=995 UNCLASSIFIED WATER BODIES
255=990 UNCLASSIFIED
References
Personal communication with EEA (e-mails) and discussion about licensing issues with respect to the CORINE land data base can be found at:
- http://lists.osgeo.org/pipermail/geodata/2009-January/000801.html
- http://lists.osgeo.org/pipermail/geodata/2009-January/000807.html
- http://lists.osgeo.org/pipermail/geodata/2009-February/000811.html
- http://lists.osgeo.org/pipermail/geodata/2009-February/000812.html
- http://lists.osgeo.org/pipermail/geodata/2009-February/000813.html