Vessels API¶
This guide provides detailed instructions on how to use the gfw-api-python-client to access information about vessels. The Vessels API allows you to search for vessels, retrieve lists of vessels by their IDs, and get detailed information for a specific vessel, drawing from various datasets like identity, authorizations, and ownership. Here is a Jupyter Notebook version of this guide with more usage examples.
Prerequisites¶
You have installed the
gfw-api-python-client
. Refer to the Getting Started guide for installation instructions.
Getting Started¶
To interact with the Vessels endpoints, you first need to instantiate the gfw.Client
and then access the vessels
resource:
import os
import gfwapiclient as gfw
access_token = os.environ.get(
"GFW_API_ACCESS_TOKEN",
"<OR_PASTE_YOUR_GFW_API_ACCESS_TOKEN_HERE>",
)
gfw_client = gfw.Client(
access_token=access_token,
)
The gfw_client.vessels
object provides methods to search for and retrieve vessel information. Each of these methods returns a result
object, which offers convenient ways to access the data as Pydantic models using .data()
or as pandas DataFrames using .df()
.
Searching for Vessels (search_vessels
)¶
The search_vessels()
method allows you to find vessels based on a query and various filters within specified datasets.
vessel_search_result = await gfw_client.vessels.search_vessels(
where="ssvid='775998121' AND shipname='DON TITO'",
datasets=["public-global-vessel-identity:latest"],
includes=["MATCH_CRITERIA", "OWNERSHIP"],
)
Access the list of vessel as Pydantic models¶
vessel_search_data = vessel_search_result.data()
vessel = vessel_search_data[-1]
print((vessel.dataset, vessel.self_reported_info[-1].id))
print(vessel.model_dump())
Output:
('public-global-vessel-identity:v3.0', 'bae8f325c-cf0a-01fe-6d1a-9a275588d4ff')
Access the vessels as a DataFrame¶
vessel_search_df = vessel_search_result.df()
print(vessel_search_df.info())
print(vessel_search_df.head())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 dataset 2 non-null object
1 registry_info_total_records 2 non-null int64
2 registry_info 2 non-null object
3 registry_owners 2 non-null object
4 registry_public_authorizations 0 non-null object
5 combined_sources_info 2 non-null object
6 self_reported_info 2 non-null object
7 matchCriteria 2 non-null object
dtypes: int64(1), object(7)
memory usage: 260.0+ bytes
Getting a List of Vessels by IDs (get_vessels_by_ids
)¶
The get_vessels_by_ids()
method retrieves information for a list of vessels given their GFW Vessel IDs.
vessels_result = await gfw_client.vessels.get_vessels_by_ids(
ids=[
"8c7304226-6c71-edbe-0b63-c246734b3c01",
"6583c51e3-3626-5638-866a-f47c3bc7ef7c",
"71e7da672-2451-17da-b239-857831602eca",
],
datasets=["public-global-vessel-identity:latest"],
)
Access the list of vessel as Pydantic models¶
vessels_data = vessels_result.data()
vessel = vessels_data[-1]
print((vessel.dataset, vessel.self_reported_info[-1].id))
print(vessel.model_dump())
Output:
('public-global-vessel-identity:v3.0', '0cb77880e-ee49-2ce4-a849-c0b413b6ec89')
Access the vessels as a DataFrame¶
vessel_search_df = vessels_result.df()
print(vessel_search_df.info())
print(vessel_search_df.head())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 dataset 3 non-null object
1 registry_info_total_records 3 non-null int64
2 registry_info 3 non-null object
3 registry_owners 3 non-null object
4 registry_public_authorizations 3 non-null object
5 combined_sources_info 3 non-null object
6 self_reported_info 3 non-null object
dtypes: int64(1), object(6)
memory usage: 300.0+ bytes
Getting a Vessel by ID (get_vessel_by_id
)¶
The get_vessel_by_id()
method retrieves detailed information for a specific vessel using its GFW Vessel ID.
vessel_result = await gfw_client.vessels.get_vessel_by_id(
id="c54923e64-46f3-9338-9dcb-ff09724077a3",
dataset="public-global-vessel-identity:latest",
)
Access the vessel as Pydantic model¶
vessel = vessel_result.data()
print((vessel.dataset, vessel.self_reported_info[-1].id))
print(vessel.model_dump())
Output:
('public-global-vessel-identity:v3.0', 'c54923e64-46f3-9338-9dcb-ff09724077a3')
Access the vessel as a DataFrame¶
vessel_df = vessel_result.df()
print(vessel_df.info())
print(vessel_df.head())
Output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 dataset 1 non-null object
1 registry_info_total_records 1 non-null int64
2 registry_info 1 non-null object
3 registry_owners 1 non-null object
4 registry_public_authorizations 1 non-null object
5 combined_sources_info 1 non-null object
6 self_reported_info 1 non-null object
dtypes: int64(1), object(6)
memory usage: 188.0+ bytes
Next Steps¶
Explore the Usage Guides for other API resources to understand how you can combine vessel data with information about events, and more. Check out the following resources: