---
name: ccg-navigational-warnings-ingestion
description: "How to get Canadian Coast Guard Navigational Warnings (NAVWARN) data into a pandas DataFrame in memory (the provider's terms limit storage or leave it unclear): access, the request, the format, limits, quirks and terms."
---

# Fetch sample CCG NAVWARN WFS GeoJSON in memory

Source entry: https://signal-lab.qdt.ai/datasets/ccg-navigational-warnings
Provider: https://e-navigation.canada.ca/gn/description/eng/81398d73-f082-4036-ad26-4ab5d9be3f46
Checked against the provider's documentation: 2026-11-06

## Access
- No key. WFS GetFeature on e-nav.ccg-gcc.gc.ca.

## Request
```bash
curl -sS -G 'https://e-nav.ccg-gcc.gc.ca/geoserver/nis/nw_en/ows' --data-urlencode 'service=WFS' --data-urlencode 'version=2.0.0' --data-urlencode 'request=GetFeature' --data-urlencode 'typeName=nw_en' --data-urlencode 'outputFormat=application/json' --data-urlencode 'count=5'
```

## Format
GeoJSON FeatureCollection of active NAVWARN features (nis_id, subject, areas, charts, validity, …).

## Load into pandas (in memory)
Needs Python 3 with requests and pandas. The provider's terms limit storage or leave it unclear, so this snippet does not write a file.
```python
"""Sample CCG NAVWARN WFS GeoJSON in memory. No key. Open Information Licence — attribute CCG/DFO (writes no file)."""
import requests
import pandas as pd

URL = "https://e-nav.ccg-gcc.gc.ca/geoserver/nis/nw_en/ows"
params = {
    "service": "WFS",
    "version": "2.0.0",
    "request": "GetFeature",
    "typeName": "nw_en",
    "outputFormat": "application/json",
    "count": 5,
}
r = requests.get(URL, params=params, timeout=60)
r.raise_for_status()
body = r.json()
rows = []
for f in body.get("features", []):
    p = f.get("properties") or {}
    rows.append({"nis_id": p.get("nis_id"), "subject": p.get("subject"), "areas": p.get("areas"), "validity": p.get("validity")})
df = pd.DataFrame(rows)
print("matched", body.get("totalFeatures") or body.get("numberMatched"))
print(df.to_string(index=False))

```
Run by us on 2026-11-06 (python 3 | requests). Result: WFS returned HTTP 200 on 2026-11-06; a count=5 sample parsed as FeatureCollection and the service reported 2711 matched features.

## Limits
- Not stated numeric rate limit on the checked e-Nav dataset page.

## Quirks
- NAVWARNs replace Notices to Shipping and are distinct from NOTMAR editions.
- Use CCG Open Information Licence attribution when you republish.
- This snippet writes no file; it keeps only a small in-memory sample.

## Terms and attribution
- Canada.ca: NAVWARNs "replace Notices to Shipping (NOTSHIPs) and shall be construed as Notices to Shipping."
- CCG Open Information Licence covers Notices to Shipping and allows copy/adapt/commercial use with attribution; this sample does not persist the full feed.
- Terms page: https://www.canada.ca/en/canadian-coast-guard/corporate/publications/open-information-licence.html

## Sources
- https://e-navigation.canada.ca/gn/description/eng/81398d73-f082-4036-ad26-4ab5d9be3f46: "WFS - GeoJSON"
- https://www.canada.ca/en/canadian-coast-guard/corporate/publications/open-information-licence.html: "Notices to Shipping"

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab.qdt.ai/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
