# EMODnet (European marine data)

The European network for marine data in seven themes: bathymetry, geology, physics, chemistry, biology, seabed habitats and human activities. For the Dutch North Sea you'll find wind farms, cables, pipelines, vessel density, wrecks and depth, as map layers (WMS) and data (WFS).

- Publisher: European Marine Observation and Data Network
- Area: Europe · Finest detail: feature (wind farm, cable) or grid cell (~125 metres)
- Period: verschilt per laag, bv. windparken sinds 2014 bijgehouden · Refreshed: yearly
- Access: Open · Licence: CC BY 4.0 (tenzij anders vermeld; check de oorspronkelijke bron)
- Join keys: coördinaten (WGS84), land (country)
- Status: ok (2026-07-13) · metadata windparken (Human Activities)
- URL: https://emodnet.ec.europa.eu

## What can you do with it?
- **Wind farms in the Dutch North Sea.** According to EMODnet, 12 offshore wind farms are operating in the Netherlands with a combined 4,758.5 MW and 671 turbines. Five farms (3,556 MW) are under construction and twenty are planned (wind farm layer, metadata dated July 2026).
- **How deep is it here?.** One call gives the depth at a point. At 4.0° east, 52.6° north (off the coast of North Holland) the average is 26.5 metres.
- **Shipping traffic next to the wind farms.** Overlay the vessel density layer on the wind farms and cables. Where do shipping routes cross planned farms?
- **Distance to the coast.** Every wind farm has a dist_coast field in metres. Compare the Dutch farms with those of Germany, Denmark and the United Kingdom.

## How to process it
1. **Pick the right theme portal.** Each theme has its own server, e.g. ows.emodnet-humanactivities.eu (wind farms, cables, shipping) and ows.emodnet-bathymetry.eu (depth). The documentation lists all WMS, WFS and WCS addresses.
   `https://emodnet.ec.europa.eu/en/emodnet-web-service-documentation`
2. **View the layers.** Human Activities' WFS lists 161 layers (the WMS 208, 16 Oct 2026), from wind farms (emodnet:windfarmspoly) to Rijkswaterstaat cables (emodnet:pcablesrijks).
   `https://ows.emodnet-humanactivities.eu/wfs?service=WFS&request=GetCapabilities&version=2.0.0`
3. **Filter on the Netherlands.** GeoServer supports CQL_FILTER: country='Netherlands'. Use propertyName to pick fields; outputFormat=csv or application/json.
   `https://ows.emodnet-humanactivities.eu/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=emodnet:windfarmspoly&outputFormat=csv&CQL_FILTER=country='Netherlands'&propertyName=name,status,power_mw,n_turbines,year`
4. **Depth at a point.** The Bathymetry REST service returns minimum, maximum and average depth (in metres, negative = below sea level) and the source of the measurement.
   `https://rest.emodnet-bathymetry.eu/depth_sample?geom=POINT(4.0%2052.6)`

## Interesting combinations
- How much wind blows near the farms? → [knmi-daggegevens](https://www.opendataindex.nl/en/bron/knmi-daggegevens.md) via datum en locatie. Take a KNMI coastal station, e.g. De Kooy (235) or Hoek van Holland (330), and compare wind speed with the farms' capacities.

## Similar sources
- [Noordzeeloket (Rijksoverheid)](https://www.noordzeeloket.nl): The Dutch government's portal for the North Sea, with the North Sea Programme and offshore wind energy. Plans and decisions, but no European data layers.
- [copernicus-sentinel2](https://www.opendataindex.nl/en/bron/copernicus-sentinel2.md): Satellite images of sea and coast; no depth, cables or permits.

## What to watch out for
- **Status lags behind reality.** The wind farm layer is updated once a year (field updateyear). A farm that just opened may still say 'Construction'. Check recent farms with Noordzeeloket or the operator.
- **EMODnet aggregates, it does not create.** The data come from national institutes. The licence is CC BY 4.0 unless stated otherwise, but read the metadata of the original source and credit it.
- **A different server per theme.** Bathymetry, Human Activities, Geology and the other themes each have their own address, layers and naming. Start at the documentation page.
- **Depth is an average per cell.** The depth grid has cells of about 125 metres. For navigation or construction use the official nautical charts.

## API (OGC WFS 2.0.0)

- Base: https://ows.emodnet-humanactivities.eu/wfs
- Access: No key. Fees: NONE; access constraints: NONE. (from the description)
- Formats: application/gml+xml; version=3.2, GML2, SHAPE-ZIP, application/json, csv, gml3, gml32, json, text/csv, text/xml; subtype=gml/2.1.2, text/xml; subtype=gml/3.1.1, text/xml; subtype=gml/3.2
- Size: 600 features in emodnet:windfarmspoly (tested)
- Filtering: OGC Filter Encoding (FES 2.0); PropertyIsLessThan, PropertyIsGreaterThan, PropertyIsLessThanOrEqualTo, PropertyIsGreaterThanOrEqualTo, PropertyIsEqualTo, PropertyIsNotEqualTo, PropertyIsLike, PropertyIsBetween, PropertyIsNull, PropertyIsNil, Disjoint, Equals, DWithin, Beyond, Intersects, Touches, Crosses, Within, Contains, Overlaps, BBOX, After, Before, Begins, BegunBy, TContains, During, TEquals, TOverlaps, Meets, OverlappedBy, MetBy, EndedBy

### Endpoints
- `GET ?request=GetCapabilities`: service description
- `GET ?request=DescribeFeatureType`: fields of a layer (XSD)
- `GET ?request=GetFeature`: the features themselves, with geometry
- `GET ?request=GetPropertyValue`: only the values of one field
- `GET ?request=ListStoredQueries`: stored queries
- `GET ?request=DescribeStoredQueries`: stored query details
- `GET ?request=CreateStoredQuery`: CreateStoredQuery
- `GET ?request=DropStoredQuery`: DropStoredQuery
- `GET ?request=LockFeature`: LockFeature
- `GET ?request=GetFeatureWithLock`: GetFeatureWithLock
- `GET ?request=Transaction`: Transaction

### Parameters
- `typeNames`: which layer: emodnet:activelicenses, emodnet:advisorycouncils, emodnet:pelagicstocks, emodnet:aquaculture, emodnet:baltic, emodnet:blacksea, emodnet:longdistancefleet, emodnet:market, emodnet:mediterranean, emodnet:northsea, emodnet:northwesternwaters, emodnet:outermostregions, emodnet:southwesternwaters, emodnet:aggregateareas, emodnet:aggregates, emodnet:fishingbeamtrawls, emodnet:fishingbottomottertrawls, emodnet:fishingbottomseines, emodnet:fishingdredges, emodnet:fishingpelagic, emodnet:fishingstaticgears, emodnet:fishingsubsurface, emodnet:fishingsurface, emodnet:barcelona, emodnet:hydrocarbons, emodnet:bucharest, emodnet:desalination, emodnet:dischargepoints, emodnet:dredgespoil, emodnet:dredgespoilpoly, emodnet:dredging, emodnet:munitions, emodnet:munitionspoly, emodnet:emodnetmarinas, emodnet:emeraldnetwork, emodnet:faoareas_old, emodnet:fao_areas, emodnet:finfish, emodnet:fishsales, emodnet:fishsalesbyspecies, emodnet:divisioncatches, emodnet:majorcatches, emodnet:subareacatches, emodnet:subdivisioncatches, emodnet:subunitcatches, emodnet:divisioncatchesbygroup, emodnet:majorcatchesbygroup, emodnet:subareacatchesbygroup, emodnet:subdivisioncatchesbygroup, emodnet:subunitcatchesbygroup, emodnet:divisioncatchesbycountry, emodnet:majorcatchesbycountry, emodnet:subareacatchesbycountry, emodnet:subdivisioncatchesbycountry, emodnet:subunitcatchesbycountry, emodnet:divisioneffort, emodnet:gfcmsubareaeffort, emodnet:majoreffort, emodnet:subareaeffort, emodnet:subdivisioneffort, emodnet:subuniteffort, emodnet:divisioneffortbycountryv1, emodnet:divisioneffortbycountry, emodnet:gfcmsubareaeffortbycountry, emodnet:gfcmsubareaeffortbycountryv1, emodnet:majoreffortbycountryv1, emodnet:majoreffortbycountry, emodnet:subareaeffortbycountryv1, emodnet:subareaeffortbycountry, emodnet:subdivisioneffortbycountryv1, emodnet:subdivisioneffortbycountry, emodnet:subuniteffortbycountryv1, emodnet:subuniteffortbycountry, emodnet:divisioneffortbyvesseltypev1, emodnet:divisioneffortbyvesseltype, emodnet:gfcmsubareaeffortbyvesseltype, emodnet:gfcmsubareaeffortbyvesseltypev1, emodnet:majoreffortbyvesseltypev1, emodnet:majoreffortbyvesseltype, emodnet:subareaeffortbyvesseltypev1, emodnet:subareaeffortbyvesseltype, emodnet:subdivisioneffortbyvesseltypev1, emodnet:subdivisioneffortbyvesseltype, emodnet:subuniteffortbyvesseltypev1, emodnet:subuniteffortbyvesseltype, emodnet:divisioneffortv1, emodnet:gfcmsubareaeffortv1, emodnet:majoreffortv1, emodnet:subareaeffortv1, emodnet:subdivisioneffortv1, emodnet:subuniteffortv1, emodnet:fishquotas, emodnet:fishquotas240408, emodnet:fishquotas240408bylevel, emodnet:fishquotasbylevel, emodnet:fishquotas240408byspecies, emodnet:fishquotasbyspecies, emodnet:freshwater, emodnet:helcom, emodnet:heritageshipwrecks, emodnet:icesareas, emodnet:intconventions, emodnet:lighthouses, emodnet:reportingunits, emodnet:mspspatialplan, emodnet:mspzoningpolybyusefunction, emodnet:mspzoningpoly, emodnet:mspzoninglinebyusefunction, emodnet:mspzoningline, emodnet:mspzoninglocsbyusefunction, emodnet:mspzoninglocs, emodnet:macroalgae, emodnet:portgoods, emodnet:portlocations, emodnet:portpassengers, emodnet:portvessels, emodnet:portvesselsbytonnage, emodnet:portvesselsbytype, emodnet:microalgae, emodnet:militaryareas, emodnet:militaryareaspoly, emodnet:cddaareas, emodnet:cddalocations, emodnet:nationallydesignatedlocs, emodnet:nationallydesignatedareas, emodnet:natura2000areas, emodnet:nuclear, emodnet:tourismlau, emodnet:ospar, emodnet:oenergy, emodnet:oenergytests, emodnet:platforms, emodnet:osmmarinaspoly, emodnet:osmmarinas, emodnet:pipelines, emodnet:pcablesbshcontis, emodnet:pcablesshom, emodnet:pcablesrijks, emodnet:pcablesnve, emodnet:marineprotectedareas, emodnet:shellfishlics, emodnet:shellfish, emodnet:shellfishwfdareas, emodnet:spirulina, emodnet:bathingwaters, emodnet:bshcontiscables, emodnet:cicacables, emodnet:shomcables, emodnet:sigcables, emodnet:maltacables, emodnet:rijkscables, emodnet:ukfibrecables, emodnet:tourismnuts3, emodnet:treatmentplants, emodnet:unescowhl, emodnet:wasteatports, emodnet:windfarms, emodnet:windfarmspoly, emodnet:wdpaareas, emodnet:wdpalocations, emodnet:wwshipwrecks (from the description)
- `outputFormat`: e.g. application/json for GeoJSON (from the description)
- `srsName`: projection, e.g. EPSG:4326 for web maps (default EPSG:4326) (from the description)
- `count / startIndex`: paging (from the description)
- `filter`: FES XML filter on fields or geometry (from the description)
- `bbox`: box in the chosen projection (platform)

### Fields (13)
`country` string, `n_turbines` int, `power_mw` decimal, `status` string, `type_inst` string, `updateyear` string, `year` string, `dist_coast` decimal, `area_sqkm` decimal, `notes` string, `shape_leng` decimal, `shape_area` decimal, `the_geom` geometrie

### Limits and pitfalls
- At most 1,000,000 features per request (CountDefault). (from the description)
- Paging supported: count and startIndex (ImplementsResultPaging). (from the description)
- The whole wind farm layer (600 features in Europe) comes in one request; no paging needed for this layer. (tested)
- Filtering is easiest with the GeoServer parameter CQL_FILTER, e.g. country='Netherlands' AND status='Production' (12 farms, 15 Oct 2026). (tested)
- With propertyName without the_geom you get geometry: null: useful when you only want the table. (tested)
- outputFormat=csv also works and returns an FID column plus the chosen fields. (tested)
- dist_coast is in metres, power_mw in megawatts. Statuses: Production, Construction, Approved, Planned (and in other countries also Dismantled and Test site). (from the description)

### Example
```
https://ows.emodnet-humanactivities.eu/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=emodnet:windfarmspoly&outputFormat=application/json&count=2&CQL_FILTER=country='Netherlands'%20AND%20status='Production'&propertyName=name,status,power_mw,n_turbines,year
```

## How to fetch it

### curl
```bash
curl "https://ows.emodnet-humanactivities.eu/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=emodnet:windfarmspoly&outputFormat=csv&CQL_FILTER=country='Netherlands'&propertyName=name,status,power_mw,n_turbines,year"
```

### python
```python
import requests

r = requests.get("https://ows.emodnet-humanactivities.eu/wfs", params={
    "service": "WFS", "version": "2.0.0", "request": "GetFeature",
    "typeNames": "emodnet:windfarmspoly", "outputFormat": "application/json",
    "CQL_FILTER": "country='Netherlands' AND status='Production'",
    "propertyName": "name,power_mw,n_turbines"}).json()
print(r["numberMatched"], "parken,", sum(f["properties"]["power_mw"] for f in r["features"]), "MW")
```


## What is in it: 1,891 map layers

All layers from EMODnet's map and feature services, by theme, fetched every night. Geology and physics are missing: their servers disallow scripts in robots.txt.

- Kinds: kaartlaag 1,891
- Last changed: 2020-01-31
- With an API call on the dataset page: 1,891
- Search: https://www.opendataindex.nl/api/catalogus/emodnet?q=… or the MCP function zoek_datasets with herkomst=emodnet
- Every row has its own page: https://www.opendataindex.nl/en/dataset/emodnet/<key>

### Folders
- Biologie (Biology) (122): Data products (50), New data products (27), Occurrence data (45)
- Chemie (Chemistry) (1,106): Contaminants (94), Eutrophication (1012)
- Diepte (Bathymetry) (16)
- Menselijk gebruik (Human Activities) (209)
- Zeebodemleefgebieden (Seabed Habitats) (438): General datasets and products (280), Individual habitat map and model datasets (158)

## Examples with real figures (2)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **Wind farm areas in the Dutch North Sea by status: planned is the largest part, 51% in October 2026** (oktober 2026). Table emodnet:windfarmspoly. [Example](https://www.opendataindex.nl/en/voorbeeld/emodnet-windparken-status)
  - `https://ows.emodnet-humanactivities.eu/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=emodnet:windfarmspoly&outputFormat=application/json&CQL_FILTER=country%3D'Netherlands'&propertyName=name,status,power_mw,n_turbines,year,updateyear`
- **Offshore wind farms in production (Dutch North Sea) by capacity: most Hollandse Kust (Zuid) (1,540 megawatts), then Hollandse Kust (Noord) and Borssele Kavel IV** (oktober 2026). Table emodnet:windfarmspoly. [Example](https://www.opendataindex.nl/en/voorbeeld/emodnet-windparken-vermogen)
  - `https://ows.emodnet-humanactivities.eu/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=emodnet:windfarmspoly&outputFormat=application/json&CQL_FILTER=country%3D'Netherlands'&propertyName=name,status,power_mw,n_turbines,year,updateyear`
