---
name: marinecadastre-ais-transit-ingestion
description: "How to get MarineCadastre AIS Vessel Transit Data data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Index MarineCadastre AIS transit rasters in Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/marinecadastre-ais-transit
Provider: https://hub.marinecadastre.gov/pages/vesseltraffic
Checked against the provider's documentation: 2026-11-01

## Access
- No account or key. The annual GeoTIFF directory and files are public downloads.

## Request
```bash
curl 'https://ocmgeodatastor1.blob.core.windows.net/marinecadastre/ais/aistransit/index-aistransit.html'
```

## Format
HTML file index listing annual AIS transit-count GeoTIFF names, modification dates and sizes.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""MarineCadastre annual AIS transit-count file inventory -> pandas -> Parquet."""
import re
import requests
import pandas as pd

URL = "https://ocmgeodatastor1.blob.core.windows.net/marinecadastre/ais/aistransit/index-aistransit.html"
r = requests.get(URL, headers={"User-Agent": "SignalLabCheck/1.0"}, timeout=60)
r.raise_for_status()
rows = re.findall(
    r'href="([^"]+\.tif)"[^<]*</a></td>\s*<td[^>]*>([^<]+)</td>\s*<td[^>]*>([^<]+)</td>',
    r.text,
)
df = pd.DataFrame(rows, columns=["name", "last_modified", "size"])
df["year"] = df["name"].str.extract(r"(\d{4})").astype("int64")
df["url"] = URL.rsplit("/", 1)[0] + "/" + df["name"]
df.to_parquet("marinecadastre_ais_transit_inventory.parquet", index=False)
print(len(df), "annual rasters", int(df["year"].min()), "to", int(df["year"].max()),
      "latest", df.loc[df["year"].idxmax(), "size"])
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 11 annual rasters 2015 to 2025 latest 534.46 MB

## Limits
- Rate limit: Not stated.
- The checked annual files range from 284.48 MB to 534.46 MB each.
- The inventory skill writes file metadata to Parquet; it does not download the rasters.

## Quirks
- Transit products are derived annual rasters, not raw AIS messages or vessel tracks.
- Use a raster reader for pixel values and coordinate reference metadata after selecting a year from the inventory.
- The current point-data year is partial, while the transit directory ends at the latest completed annual product.

## Terms and attribution
- Government-server information is public domain unless specifically annotated otherwise.
- The provider says that public-domain information may be used freely.
- Terms page: https://hub.marinecadastre.gov/pages/disclaimer

## Sources
- https://noaa.maps.arcgis.com/sharing/rest/content/items/22fb5273ccb54f6aa423f6667a856761/data?f=json: "Track and Transit Count data were derived from the annual broadcast points and are available for download in the table to the right."
- https://noaa.maps.arcgis.com/sharing/rest/content/items/22fb5273ccb54f6aa423f6667a856761/data?f=json: "The data available in the table contains broadcast point data for U.S. coastal waters for calendar years 2009 through 2026."
- https://noaa.maps.arcgis.com/sharing/rest/content/items/a25a72b4f3034f04b3130321b7577037/data?f=json: "The information on government servers is in the public domain, unless specifically annotated otherwise, and may be used freely by the user"

## 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-jet.vercel.app/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.
