Obtaining vessel speed through gfw-api #61
Replies: 3 comments 3 replies
-
|
Hi Matthew,
Thank you for this detailed question and for using our data and package! I
completely understand your request, and I appreciate you providing a clear
example of your use case. You're correct that the underlying data contains
speed information; the fact that speed is available as a filter parameter
indicates that speed data is present in the system. However, the 4Wings API
currently does not support speed as an output variable.
The *group_by* parameter in the 4Wings endpoint supports: VESSEL_ID, FLAG,
GEARTYPE, FLAGANDGEARTYPE, and MMSI, and the returned fields are: date,
flag, geartype, hours, lat, lon, and vesselIDs. Speed filtering is
implemented at the data query level but is not exposed as an output metric
in the response.
While not a direct replacement, the Events API does provide speed-related
metrics that might be useful for your use case:
1. Fishing Events - includes average_speed_knots during fishing activities
2. Encounter Events - includes median_speed_knots when vessels are in close
proximity
3. Loitering Events - includes average_speed_knots during loitering behavior
4. Gap Events - includes implied_speed_knots during AIS signal gaps
These provide per-vessel speed data for specific activity types, though
they're event-based rather than continuous. Here's an example:
```python
events_result = await gfw_client.events.get_all_events(
datasets=["public-global-fishing-events:latest"],
vessels=["your-vessel-id"],
start_date="2024-01-01",
end_date="2024-12-31",
)
events_data = events_result.data()
for event in events_data:
if event.fishing and event.fishing.average_speed_knots:
print(f"Vessel {event.vessel.id}:
{event.fishing.average_speed_knots} knots")
```
If continuous per-vessel speed data is critical for your use case, we'd
love to have you add this as a feature request to our improvement board:
Submit Feature Request on Canny <https://global-fishing-watch.canny.io/>.
Our product team actively monitors this board and considers user feedback
when prioritizing development work.
To better advocate for features like this and to help us demonstrate the
value of keeping Global Fishing Watch tools open and free, we'd like to
hear more about your project and use case:
- What organization are you working with? (NGO, academic institution,
government, private sector, etc.)
- What is your project focused on? (e.g., IUU detection, supply chain
monitoring, fisheries management, research, etc.)
- How would per-vessel speed data help your work? Would event-based speeds
(fishing, loitering, encounters) partially address your needs in the near
term? Your story helps us demonstrate to donors and stakeholders the
real-world impact of this work, which is crucial for keeping these tools
accessible to researchers, policymakers, and organizations working on
marine conservation and related ocean sustainability work. Thank you again
for reaching out, and we look forward to learning more about how you're
using our tools!
Global Fishing Watch
…On Wed, Jun 3, 2026 at 8:11 AM 'mattcarr03' via GFW API Support < ***@***.***> wrote:
Hi there,
Thank you for providing these tools they are incredibly useful. I am
unsure if this is the correct forum for this question, so please let me
know if there is a better contact point or if I should direct this to a
specific email address.
I would like to enquire whether vessel speed can be obtained as a variable
through the Python API (or any other method). I noticed that the fourwings
presence endpoint supports speed as a filter, for example:
For example a code snippet would be:
### Using the 4wings (fourwings) function ais presence
ais_report_result = await gfw_client.fourwings.create_report(
spatial_resolution=spatial_resolution,
temporal_resolution=temporal_resolution,
group_by="VESSEL_ID",
datasets=["public-global-presence:latest"],
start_date=yr_start,
end_date=yr_end,
filters=["speed in ('2-4', '4-6', '6-10', '10-15', '15-25', '>25')"],
geojson=geojson if REGION == "TEST" else None,
region=region if REGION == "EEZ" else None,
)
The existence of this filter implies that speed information is present in
the underlying data. However, I cannot find any way to return speed as an
output variable alongside presence.
My specific use case would benfient greatly from obtaining vessel speed
per vessel rather than the speed band filter alone.
If this functionality does not currently exist, would it be possible
through a different access tier, dataset, or account type? I would be happy
to explore any available options.
Thank you again for your time and for the work you have put into these
tools.
Matthew Carr
—
Reply to this email directly, view it on GitHub
<#61?email_source=notifications&email_token=BRRNKWTWPLGJ3WWKD4ZNRML46AIY3A5CNFSNUABBM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63RPGEYDCOJQGU4DLJTSMVQXG33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BRRNKWQMDM6CQUWBXPTURIL46AIY3AVCNFSM6AAAAACZYUURDSVHI2DSMVQWIX3LMV43GRDJONRXK43TNFXW4OZRGAYTSMBVHA2Q>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BRRNKWRU7QAR2QPYM375GZT46AIY3A5CNFSNUABBM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63RPGEYDCOJQGU4DLJTSMVQXG33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/BRRNKWVJIFN3T4TVONBPTBT46AIY3A5CNFSNUABBM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63RPGEYDCOJQGU4DLJTSMVQXG33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***
com>
--
You received this message because you are subscribed to the Google Groups
"GFW API Support" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ***@***.***
To view this discussion, visit
https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61%40github.com
<https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61%40github.com?utm_medium=email&utm_source=footer>
.
|
Beta Was this translation helpful? Give feedback.
2 replies
Answer selected by
yaaNuamahGFW
-
|
Hi Matthew and Jock,
Thank you both for the context, the SANBI cumulative pressure mapping work
and the Glonoise collaboration make this a genuinely compelling use case,
and filling the underwater noise gap in the National Biodiversity
Assessment is the kind of application we want our data to support.
In the meantime, the speed-band filter approach could serve as a
categorical proxy, allowing you to isolate vessel presence by speed regime
(e.g. slow transit vs. high-speed) as an approximation, though we recognise
this is not a substitute for the continuous speed data your URN toolkit
requires. Additionally, we'd like to feature SANBI's work as a use case in
Global Fishing Watch's communications; it's a strong example of our data
supporting national biodiversity assessment and marine spatial planning in
Africa. Would you and Jock be open to that? We'd come back to you for
review before anything is published.
Best regards,
Yaa
…On Wed, Jun 10, 2026 09:04 AM, 'Jock' via GFW API Support < ***@***.***> wrote:
Thanks Matthew and hi GFW team!
To add to further context to what Matt shared: We're collaborating with
colleagues in the Glonoise project <https://glonoise.imo.org/about> to
estimate maps of underwater noise pressure and exposure from vessel
activity. The idea is to use GFW AIS data, with the URN toolkit
<https://glonoise.blueoasis.pt/> and relevant bathymetry and sediment
layers to model vessel engine noise propagation and calculate the resultant
noise pressure and noise exposure maps.
Our interest at SANBI in doing so is related to updating and improving our cumulative
pressure mapping
<https://nba.sanbi.org.za/content/marine/marine_pressures.html> and ecological
condition estimates
<https://nba.sanbi.org.za/content/marine/marine_condition.html> for ecosystem
assessments <https://nba.sanbi.org.za/content/marine/marine_ets.html>.
Underwater noise has been an obvious gap in that work.
Much appreciation also from me for the valuable datasets and platform you
provide. We are hoping to make use of your data across multiple
activity/pressure layers in our ecosystem assessment and spatial
prioritisation work.
Kind regards,
Jock
—
Reply to this email directly, view it on GitHub
<#61?email_source=notifications&email_token=BRRNKWUXIFMKOO273STTHQD47FMERA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZSGUYTCNJYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSWGM33PORSXEX3DNRUWG2Y#discussioncomment-17251158>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BRRNKWUZ3GJXW6KG3ILTLVD47FMERAVCNFSNUABIKJSXA33TNF2G64TZHM4TANBXGQYDONRZHNCGS43DOVZXG2LPNY5TCMBRHEYDKOBVUF3AE>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BRRNKWRMIN4YKQ527CFBT6347FMERA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZSGUYTCNJYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSVGM33PORSXEX3JN5ZQ>
and Android
<https://github.com/notifications/mobile/android/BRRNKWUAJVMXVXJXENBJGKL47FMERA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZSGUYTCNJYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSXGM33PORSXEX3BNZSHE33JMQ>.
Download it today!
You are receiving this because you commented.Message ID:
<GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17251158
@github.com>
--
You received this message because you are subscribed to the Google Groups
"GFW API Support" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ***@***.***
To view this discussion, visit
https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17251158%40github.com
<https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17251158%40github.com?utm_medium=email&utm_source=footer>
.
|
Beta Was this translation helpful? Give feedback.
1 reply
-
|
Hi Jock,
Sounds great. Let’s plan to reconnect in late August or early September
once you’ve had a chance to make further progress.
We'd be delighted to catch up to hear more about the results.
Best,
Yaa
…On Mon, Jun 22, 2026 at 8:27 AM 'Jock' via GFW API Support < ***@***.***> wrote:
Thanks for the feedback Yaa, and your interest in featuring SANBI's use of
GFW data. We are interested in supporting on that, but would like to make
some further progress and have results to share before doing so. Could we
touch base on that plan in late August or early September?
Kind regards,
Jock
—
Reply to this email directly, view it on GitHub
<#61?email_source=notifications&email_token=BRRNKWUETQON6CI7LPWQ2YT5BEQ2ZA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZTHEZDINRYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSWGM33PORSXEX3DNRUWG2Y#discussioncomment-17392468>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BRRNKWXGC5L5SYQ6OFYS6V35BEQ2ZAVCNFSNUABIKJSXA33TNF2G64TZHM4TANBXGQYDONRZHNCGS43DOVZXG2LPNY5TCMBRHEYDKOBVUF3AE>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BRRNKWVWRFYTDDGNKTEYGJT5BEQ2ZA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZTHEZDINRYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSVGM33PORSXEX3JN5ZQ>
and Android
<https://github.com/notifications/mobile/android/BRRNKWXUMDE6PBAE7UGYZCL5BEQ2ZA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZTHEZDINRYUZZGKYLTN5XKOY3PNVWWK3TUUVSXMZLOOSXGM33PORSXEX3BNZSHE33JMQ>.
Download it today!
You are receiving this because you commented.Message ID:
<GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17392468
@github.com>
--
You received this message because you are subscribed to the Google Groups
"GFW API Support" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ***@***.***
To view this discussion, visit
https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17392468%40github.com
<https://groups.google.com/a/globalfishingwatch.org/d/msgid/apis/GlobalFishingWatch/gfw-api-python-client/repo-discussions/61/comments/17392468%40github.com?utm_medium=email&utm_source=footer>
.
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi there,
Thank you for providing these tools they are incredibly useful. I am unsure if this is the correct forum for this question, so please let me know if there is a better contact point or if I should direct this to a specific email address.
I would like to enquire whether vessel speed can be obtained as a variable through the Python API (or any other method). I noticed that the fourwings presence endpoint supports speed as a filter, for example:
For example a code snippet would be:
### Using the 4wings (fourwings) function ais presence
ais_report_result = await gfw_client.fourwings.create_report(
spatial_resolution=spatial_resolution,
temporal_resolution=temporal_resolution,
group_by="VESSEL_ID",
datasets=["public-global-presence:latest"],
start_date=yr_start,
end_date=yr_end,
filters=["speed in ('2-4', '4-6', '6-10', '10-15', '15-25', '>25')"],
The existence of this filter implies that speed information is present in the underlying data. However, I cannot find any way to return speed as an output variable alongside presence.
My specific use case would benfient greatly from obtaining vessel speed per vessel rather than the speed band filter alone.
If this functionality does not currently exist, would it be possible through a different access tier, dataset, or account type? I would be happy to explore any available options.
Thank you again for your time and for the work you have put into these tools.
Matthew Carr
Beta Was this translation helpful? Give feedback.
All reactions