19

I do not seem to be able to find a free shapefile of the European countries. This is the kind of map I am looking to populate with my own data using ESRI ArcGIS: EuropeMapSample

The Eurostat website only seems to have a shapefile of the region with country boundaries that also includes the NUTS divisions. Natural Earth shapefiles only seem to be available for the entire world, not for regions like Europe.

2
  • 12
    Take natural earth, select the european countries, either manually or by filtering them, save as a new shapefile. Done. Could not be easier.
    – HeikkiVesanto
    Commented Jan 21, 2016 at 16:11
  • Would be nice to have the ISO 3166-1 alpha-3 country codes beforehand (in addition to the alpha-2). Commented Jul 27, 2017 at 15:27

8 Answers 8

20

You can download the "official" EU administrative/statistical units from Eurostat's GISCO service. The vector layers are available as ESRI Shapefiles and Personal GDBs, at different resolutions from here.

Note, in order to extract the country level polygons as below, you will need to extract all features based on the following query STAT_LEVL_ = 1 from the Shapefile NUTS_RS_01M_2013.shp.

enter image description here

16

Natural Earth is a great source for free data, including country and state borders, at a variety of scales. You would just need to select European countries using the attribute table.

7

A GRASS-GIS way:

get the NUTS 2013 ESRI Shapefile

wget http://ec.europa.eu/eurostat/cache/GISCO/geodatafiles/NUTS_2013_01M_SH.zip

unzip

unzip NUTS_2013_01M_SH.zip

and, if not existing, create a Location based on EPSG 3035

grass72 -c NUTS_RG_01M_2013.shp /geo/grassdb/europe/etrs_1989_laea

Else skip the next command and enter in a Location based on the wanted spatial reference system.

Then, navigate to

cd NUTS_2013_01M_SH/data/

and import the vector map

v.in.ogr NUTS_RG_01M_2013.shp out=NUTS_RG_01M_2013

extract all STAT_LEVL_=0 to a new map

v.extract NUTS_RG_01M_2013 out=NUTS_RG_01M_2013_STAT_LEVL_0 where="STAT_LEVL_='0'"

and finally, dissolve to get country boundaries

v.dissolve NUTS_RG_01M_2013_STAT_LEVL_0 out=NUTS_RG_01M_2013_Countries column=NUTS_ID

Voila,

enter image description here

This map contains the NUTS_ID

v.db.select NUTS_RG_01M_2013_Countries

cat|NUTS_ID
1|AT
2|BE
3|BG
4|CH
5|CY
6|CZ
7|DE
8|DK
9|EE
10|EL
11|ES
12|FI
13|FR
14|HR
15|HU
16|IE
17|IS
18|IT
19|LI
20|LT
21|LU
22|LV
23|ME
24|MK
25|MT
26|NL
27|NO
28|PL
29|PT
30|RO
31|SE
32|SI
33|SK
34|TR
35|UK

So, the following CSV might be useful for the ones who need to join-in the ISO3166-1-alpha3 country codes

NUTS_ID,iso31661a2,iso31661a3
AT,AT,AUT
BE,BE,BEL
BG,BG,BGR
CH,CH,CHE
CY,CY,CYP
CZ,CZ,CZE
DE,DE,DEU
DK,DK,DNK
EE,EE,EST
EL,GR,GRC
ES,ES,ESP
FI,FI,FIN
FR,FR,FRA
HR,HR,HRV
HU,HU,HUN
IE,IE,IRL
IS,IS,ISL
IT,IT,ITA
LI,LI,LIE
LT,LT,LTU
LU,LU,LUX
LV,LV,LVA
ME,ME,MNE
MK,MK,MKD
MT,MT,MLT
NL,NL,NLD
NO,NO,NOR
PL,PL,POL
PT,PT,PRT
RO,RO,ROU
SE,SE,SWE
SI,SI,SVN
SK,SK,SVK
TR,TR,TUR
UK,GB,GBR
4
  • interesting. but how can I get rid of the island on the bottom left and the few tiny islands here and there? just keeping the main countries Commented Jun 14, 2018 at 17:47
  • One way: identify the to-reject country codes (or NUTS_IDs) and perform a reverse v.selection. Commented Jun 17, 2018 at 17:02
  • Another way, faster: use a more elaborated SQL statement in the v.extract step, so as to reject the countries in question. Commented Jun 17, 2018 at 17:07
  • 1
    The latter could also mean to use an "area" column and skip from the extraction process boundaries smaller than a given size. Commented Jun 17, 2018 at 17:09
2

Your shapefile is not easy to reproduce.

Eurostat's GISCO service has a weird concept of Europe, it excludes Ukraine but includes Turkey.

The best option that I found is clipping the natural earth country shapefiles to the boundaries of Europe and exclude Russia if you do not want that bit. Note that Crimea is no longer in Ukraine in the country shapefiles. Optionally you can also remove Svalbard and Azores Islands by clipping to a rectangular extent.

Download natural earth from: https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip

Download continent.zip with continent boundaries from: https://baruch.cuny.edu/confluence/display/geoportal/ESRI+International+Data

select Europe boundary with gdal:

ogr2ogr -sql "select * from continent where CONTINENT = 'Europe'" europeboundary.shp continent.shp

Use europeboundary.shp to clip that region from natural Earth countries:

ogr2ogr -clipdst europeboundary.shp ne_10m_admin_0_countries.shp   europecountries.shp

If you want to exclude Russia, remove that country:

ogr2ogr -sql "select * from europecountries.shp NAME != 'Russia'" EuropeminusRussia.shp europecountries.shp

In R with rgdal and raster (for raster::crop) the procedure is similar, e.g.:

library(rgdal)
library(raster) 
continents = readOGR('path_to../continent.shp')
countries = readOGR('path_to../ne_10m_admin_0_countries.shp')
europeboundary = continents[continents$CONTINENT == "Europe",]
eurcountries = crop(countries, europeboundary)
eurcountriesminusRussia = eurcountries[eurcountries$NAME != 'Russia',]

The post is old but still a valid and useful question, I hope it helps.

enter image description here

1
0

This (http://www.diva-gis.org/gdata) site is great for getting administrative data from all over the world including Europe. You can get data at different administrative levels as well (e.g., Country, State, County).

0
0

Shape files for European countries are available from Eurostat. Here is a link to an example of how to create a map with it.

0

Probably a bit late but there's this resource which is free and supports arcGIS - shows all the countries in the world - http://www.orrbodies.com/resource/world-250k-coastlinepolitical-map/

0

I found usable free shp files at https://tapiquen-sig.jimdofree.com/english-version/free-downloads/europe/.

Not the answer you're looking for? Browse other questions tagged or ask your own question.