Podręcznik API katalogu EOData na NSIS Cloud
OData (Open Data Protocol) to protokół sieciowy służący do tworzenia i korzystania z interfejsów API RESTful. Chociaż EODATA ma podobną nazwę, są to archiwa danych obserwacji Ziemi, do których można uzyskać dostęp za pośrednictwem linków zgodnych ze standardami OData.
W tym artykule dowiesz się, jak przeszukiwać katalog EODATA przy użyciu OData.
Co zostanie omówione?
Wymagania wstępne
Nr 1 Wysyłanie żądań HTTP przez przeglądarkę
Najprostszym sposobem wysłania żądania HTTP jest otwarcie adresu internetowego w przeglądarce. Większość przeglądarek rozpozna dane wyjściowe ze strony i przedstawi je w użytecznej formie. Zobacz Jak wysyłać żądania do katalogu API NSIS Cloud EODATA za pomocą Firefox
Nr 2 Wysyłanie żądań HTTP za pomocą curl lub wget
Z wiersza poleceń możesz używać samodzielnych programów curl i wget do wysyłania żądań HTTP. Więcej informacji znajdziesz w Użycie curl i wget do pobierania produktów EODATA z NSIS Cloud
Nr 3 Wysyłanie żądań HTTP za pomocą kodu Python
Możesz użyć języka programowania, takiego jak Python, aby napisać kod wysyłający żądania HTTP do serwera. Zobacz Używanie Pythona do wysyłania żądań do katalogu EODATA na NSIS Cloud. Inne języki programowania również powinny umożliwiać wysyłanie żądań HTTP.
OData API
Struktura zapytania
Ogólnie rzecz biorąc, zapytanie OData składa się z elementów, które w tej dokumentacji nazywane są „opcjami”. Interfejs obsługuje następujące opcje wyszukiwania:
filter
orderby
top
skip
count
expand
Opcje wyszukiwania powinny być zawsze poprzedzone znakiem $, a kolejne opcje powinny być oddzielone znakiem &.
Kolejne filtry w opcji filter powinny być oddzielone operatorami and lub or. Można również użyć operatora Not, na przykład:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=not contains(Name,'S2') and ContentDate/Start gt 2025-12-03T00:00:00.000Z and ContentDate/Start lt 2025-12-31T00:10:00.000Z&$orderby=ContentDate/Start&$top=100
Aby przyspieszyć działanie zapytania, zaleca się ograniczenie go według dat pozyskania, na przykład:
ContentDate/Start gt 2025-12-03T00:00:00.000Z and ContentDate/Start lt 2025-12-31T00:00:00.000Z
Jeśli żądanie zakończy się niepowodzeniem, zobacz Obsługa błędów API, aby poznać najczęstsze typy błędów i sposób ich interpretacji.
Opcja filtrowania
Zapytanie według nazwy
Aby wyszukać określony produkt według jego dokładnej nazwy:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Name eq 'S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE'
Aby wyszukać produkty zawierające w nazwie S1A:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,'S1A') and ContentDate/Start gt 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-21T00:00:00.000Z
Alternatywnie do contains można użyć endswith i startswith, aby wyszukać produkty kończące się lub zaczynające od podanego ciągu znaków.
Zapytanie według listy
W przypadku, gdy użytkownik chce wyszukać wiele produktów według nazwy w jednym zapytaniu, można użyć metody POST:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products/OData.CSC.FilterList
Ten endpoint jest przeznaczony dla żądań POST z treścią żądania w formacie JSON. Jeśli zostanie otwarty bezpośrednio jako proste żądanie GET, nie zwróci zwykłego wyniku wyszukiwania.
Treść żądania:
{
"FilterProducts":
[
{"Name": "S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE"},
{"Name": "S3B_SL_1_RBT____20190116T050535_20190116T050835_20190117T125958_0179_021_048_0000_LN2_O_NT_003.SEN3"},
{"Name": "xxxxxxxx.06.tar"}
]
}
Zwracane są dwa wyniki, ponieważ nie istnieje produkt o nazwie xxxxxxxx.06.tar.
Zapytanie według kolekcji
Aby wyszukać produkty w określonej kolekcji:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Collection/Name eq 'SENTINEL-2' and ContentDate/Start gt 2025-12-03T00:00:00.000Z and ContentDate/Start lt 2025-12-31T00:11:00.000Z
Obecnie dostępne są następujące kolekcje:
SENTINEL-1
SENTINEL-2
SENTINEL-3
SENTINEL-5P
SENTINEL-6
LANDSAT-8
SUOMI-NPP
TERRA
LANDSAT-9
Zapytanie według daty publikacji
Aby wyszukać produkty opublikowane między dwiema datami:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=PublicationDate gt 2025-12-15T00:00:00.000Z and PublicationDate lt 2025-12-16T00:00:00.000Z
Do zdefiniowania przedziału domkniętego można użyć parametrów ge i le:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=PublicationDate ge 2025-12-15T00:00:00.000Z and PublicationDate le 2025-12-16T00:00:00.000Z
Zapytanie według daty pozyskania
Aby wyszukać produkty pozyskane między dwiema datami:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=ContentDate/Start gt 2025-12-15T00:00:00.000Z and ContentDate/Start lt 2025-12-16T00:00:00.000Z
Zazwyczaj istnieją dwa parametry opisujące ContentDate (daty pozyskania) dla produktu — Start i End. W zależności od tego, czego szuka użytkownik, parametry te można łączyć, na przykład:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=ContentDate/Start gt 2025-12-15T00:00:00.000Z and ContentDate/End lt 2025-12-16T00:05:00.000Z
Zapytanie według kryteriów geograficznych
Aby wyszukać produkty przecinające określony wielokąt:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=OData.CSC.Intersects(area=geography'SRID=4326;POLYGON((12.655118166047592 47.44667197521409,21.39065656328509 48.347694733853245,28.334291357162826 41.877123516783655,17.47086198383573 40.35854475076158,12.655118166047592 47.44667197521409))') and ContentDate/Start gt 2022-05-20T00:00:00.000Z and ContentDate/Start lt 2022-05-21T00:00:00.000Z
Aby wyszukać produkty przecinające określony punkt:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=OData.CSC.Intersects(area=geography%27SRID=4326;POINT(-0.5319577002158441%2028.65487836189358)%27)
Uwagi:
MULTIPOLYGON nie jest obecnie obsługiwany.
Wielokąt musi zaczynać się i kończyć w tym samym punkcie.
Współrzędne muszą być podane w EPSG 4326
Zapytanie według atrybutów
Aby wyszukać produkty według atrybutów, należy zbudować filtr o następującej strukturze:
Attributes/OData.CSC.ValueTypeAttribute/any(att:att/Name eq '[Attribute.Name]' and att/OData.CSC.ValueTypeAttribute/Value eq '[Attribute.Value]')
gdzie
ValueTypeAttribute może przyjmować następujące wartości:
StringAttribute
DoubleAttribute
IntegerAttribute
DateTimeOffsetAttribute
[Attribute.Name] to nazwa atrybutu, która może przyjmować wiele wartości, w zależności od kolekcji
eq przed [Attribute.Value] może być zastąpione przez le, lt, ge, gt w przypadku atrybutów Integer, Double lub DateTimeOffset
[Attribute.Value] to konkretna wartość, której szuka użytkownik
Aby uzyskać produkty z cloudCover < 40% między dwiema datami:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le 40.00) and ContentDate/Start gt 2022-01-01T00:00:00.000Z and ContentDate/Start lt 2022-01-03T00:00:00.000Z&$top=10
Aby uzyskać produkty z cloudCover< 10% oraz productType=S2MSI2A i ASCENDING orbitDirection pomiędzy dwiema datami:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value lt 10.00) and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'S2MSI2A') and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq 'ASCENDING') and ContentDate/Start gt 2025-05-03T00:00:00.000Z and ContentDate/Start lt 2026-03-03T04:00:00.000Z&$top=10
Informacja
Łączenie wielu klauzul filtra może znacząco zmniejszyć liczbę pasujących wyników. W niektórych przypadkach żądanie może zwrócić pustą odpowiedź, mimo że każdy pojedynczy warunek jest poprawny.
Opcja orderby
Opcja Orderby może być używana do sortowania produktów rosnąco (asc) lub malejąco (desc). Jeśli parametry asc lub desc nie zostaną określone, zasoby zostaną posortowane rosnąco.
Aby sortować produkty według ContentDate/Start malejąco:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,'S1A_IW_') and ContentDate/Start gt 2025-05-03T00:00:00.000Z and ContentDate/Start lt 2026-03-03T03:00:00.000Z&$orderby=ContentDate/Start desc
Domyślnie, jeśli opcja orderby nie jest używana, wyniki nie są sortowane. Jeśli używana jest opcja orderby, używana jest również dodatkowa opcja orderby by id, dzięki czemu wyniki są w pełni uporządkowane i żadne produkty nie zostaną utracone podczas stronicowania wyników.
Dopuszczalne argumenty dla tej opcji: ContentDate/Start, ContentDate/End, PublicationDate, ModificationDate, w kierunkach: asc, desc
Opcja top
Opcja top określa maksymalną liczbę elementów zwracanych przez zapytanie.
Aby ograniczyć liczbę wyników:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,%27S1A_IW_%27)%20and%20ContentDate/Start%20gt%202022-05-03T00:00:00.000Z%20and%20ContentDate/Start%20lt%202022-05-03T12:00:00.000Z&$top=100
Domyślną wartością jest 20.
Dopuszczalne argumenty dla tej opcji: Integer <0,1000>
Opcja skip
Opcja skip może być używana, aby pominąć określoną liczbę wyników. Przykładowym zastosowaniem tej opcji byłoby stronicowanie wyników, jednak ze względów wydajnościowych zalecamy ograniczanie zapytań małymi przedziałami czasowymi jako substytutu stosowania skip w bardziej ogólnym zapytaniu.
Aby pominąć określoną liczbę wyników:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,%27S1A_IW_%27)%20and%20ContentDate/Start%20gt%202022-05-03T00:00:00.000Z%20and%20ContentDate/Start%20lt%202022-05-03T12:00:00.000Z&$skip=23
Domyślną wartością jest 0.
Gdy zapytanie zwraca więcej niż 20 produktów (domyślna wartość top), API udostępnia nextLink na dole strony:
"@odata.nextLink": "https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,'S1A_IW_')+and+ContentDate/Start+gt+2022-05-03T00:00:00.000Z+and+ContentDate/Start+lt+2022-05-03T12:00:00.000Z&$skip=20"
Dopuszczalne argumenty dla tej opcji: Integer <0,10000>
Opcja count
Opcja count umożliwia użytkownikom uzyskanie dokładnej liczby produktów pasujących do zapytania. Opcja ta jest domyślnie wyłączona, aby przyspieszyć działanie zapytania.
Aby uzyskać dokładną liczbę produktów dla danego zapytania:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,%27S1A_IW%27)%20and%20ContentDate/Start%20gt%202022-05-03T00:00:00.000Z%20and%20ContentDate/Start%20lt%202022-05-03T12:00:00.000Z&$count=True
Dopuszczalne argumenty dla tej opcji: True, true, 1, False, false, 0
Opcja expand
Opcja expand umożliwia użytkownikom wybór rodzaju informacji, które chcą zobaczyć szczegółowo.
Dopuszczalne argumenty dla tej opcji: Attributes, Assets, Locations
Opcja expand - Attributes
Aby zobaczyć pełne metadane wyników, przypisz wartość Attributes do opcji Expand:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=contains(Name,%27S1A_EW_GRD%27)%20and%20ContentDate/Start%20gt%202022-05-03T00:00:00.000Z%20and%20ContentDate/Start%20lt%202022-05-03T12:00:00.000Z&$expand=Attributes
Dla każdego produktu lista tych atrybutów jest dostępna jako wartość klucza Attributes. W powyższym zapytaniu, w chwili pisania tego artykułu, dla pierwszego produktu na liście początek tej listy wygląda następująco:
Opcja expand - Assets
Aby wyświetlić listę dodatkowych zasobów dla produktów, w tym quicklooków, użyj wartości Assets:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-3%27%20and%20contains(Name,%20%27SL_2_FRP___%27)&$expand=Assets
Lista zasobów jest dostępna jako wartość klucza Assets. Dla pierwszego produktu znalezionego za pomocą powyższego zapytania (w chwili pisania tego artykułu) lista ta wygląda następująco:
"Assets": [
{
"Type": "QUICKLOOK",
"Id": "2de372f8-2276-401c-8ef2-57af5afca9c8",
"DownloadLink": "https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Assets(2de372f8-2276-401c-8ef2-57af5afca9c8)/$value",
"S3Path": "/eodata/Sentinel-3/SLSTR/SL_2_FRP___/2020/11/16/S3A_SL_2_FRP____20201116T100705_20201116T101005_20201117T143959_0179_065_122_1800_LN2_O_NT_004.SEN3"
}
]
W tym przykładzie lista ta zawiera tylko jeden element, dla którego Type ma wartość QUICKLOOK. Link do pobrania tego elementu jest dostępny jako wartość klucza DownloadLink:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Assets(2de372f8-2276-401c-8ef2-57af5afca9c8)/$value",
Przykład obrazu quicklook
Pamiętaj, że możesz pobierać te zasoby za pomocą tych linków bez konieczności potwierdzania swojej tożsamości. W zależności od przepływu usługi rzeczywisty transfer pliku może zostać obsłużony przez usługę pobierania po wykonaniu linku.
Opcja expand - Locations
Produkty mogą być dostępne do pobrania w formie rozpakowanej (nieskompresowanej) i/lub skompresowanej, w zależności od produktu.
Jeśli chcesz zobaczyć, jakie metody pobierania są dostępne dla wyszukiwanych produktów, przypisz wartość Locations do opcji expand:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-1%27%20and%20contains(Name,%27RAW%27)&$orderby=ContentDate/Start%20desc&$top=10&$expand=Locations
Powinieneś teraz otrzymać listę locations jako wartość klucza Locations. Każda z tych locations reprezentuje jeden z dostępnych sposobów pobrania produktu i zawiera informacje takie jak rozmiar, suma kontrolna oraz link do pobrania.
Na przykład, w chwili pisania tego artykułu, dla pierwszego produktu zwróconego przez powyższe zapytanie, lista ta wygląda następująco:
"Locations": [
{
"FormatType": "Extracted",
"DownloadLink": "https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(5797f7eb-a8b3-4ca4-b15f-be506058dd09)/$value",
"ContentLength": 1823124343,
"Checksum": [
{
"Value": "f30ee698b22c0316e791942254336a70",
"Algorithm": "MD5",
"ChecksumDate": "2026-03-18T05:59:28.977186Z"
},
{
"Value": "5af3c61bec051ef5ab2e06a75beb904697d37ed01423b3069a6c9f3c6e176072",
"Algorithm": "BLAKE3",
"ChecksumDate": "2026-03-18T05:59:30.852481Z"
}
],
"S3Path": "/eodata/Sentinel-1/SAR/IW_RAW__0S/2026/03/18/S1C_IW_RAW__0SDV_20260318T052629_20260318T052701_006814_00DC6A_4434.SAFE"
},
{
"FormatType": "Compressed",
"DownloadLink": "https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(5797f7eb-a8b3-4ca4-b15f-be506058dd09)/$zip",
"ContentLength": 1823124343,
"Checksum": [
{
"Value": "f30ee698b22c0316e791942254336a70",
"Algorithm": "MD5",
"ChecksumDate": "2026-03-18T05:57:49.877972Z"
}
],
"EvictionDate": "2026-04-17T05:58:51.278213Z"
}
]
Jeśli chcesz pobrać skompresowaną formę tego produktu, możesz skorzystać z poniższego linku:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(5797f7eb-a8b3-4ca4-b15f-be506058dd09)/$zip
Aby pobrać ten produkt, musisz potwierdzić swoją tożsamość, w przeciwieństwie do sytuacji, gdy pobierasz zasoby, jak wyjaśniono w sekcji powyżej.
Opcja select
Opcja Select pozwala użytkownikom ograniczyć żądane właściwości do określonego podzbioru dla każdego produktu, na przykład aby wybrać właściwości Name i Id produktu:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$select=Name,Id
Lista nazw właściwości musi być oddzielona przecinkiem — może również zawierać dodatkową spację. Kolejność atrybutów w odpowiedzi jest przypisywana domyślnie i nie zależy od kolejności atrybutów określonych w zapytaniu użytkownika.
Parametr Id jest domyślnie dostarczany w odpowiedzi, nawet jeśli nie został zdefiniowany w opcji select.
Obecnie dostępne są następujące atrybuty:
Id |
Name |
ContentType |
ContentLength |
OriginDate |
PublicationDate |
ModificationDate |
Online |
EvictionDate |
S3Path |
Checksum |
ContentDate |
Footprint |
Geofootprint |
Aby wybrać wszystkie dostępne atrybuty, można użyć symbolu * zamiast wymieniania każdej nazwy właściwości osobno:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$select=*
Listing węzłów produktu
Dokładne wartości w odpowiedzi zależą od wybranego produktu. Poniższe przykłady pokazują strukturę odpowiedzi oraz typ ścieżek, których można się spodziewać.
Możesz przeglądać pliki i katalogi znajdujące się w produkcie bez pobierania go, nawet jeśli nie masz autoryzacji.
Aby rozpocząć, wejdź pod poniższy adres URL:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes
gdzie <PRODUCT_UUID> to ID produktu uzyskane za pomocą zapytania wyszukiwania. Jedną z metod uzyskania tego ID jest wejście pod adres URL znajdujący się w sekcji Zapytanie według nazwy powyżej. ID można następnie znaleźć jako wartość klucza Id.
Po znalezieniu ID produktu i wejściu pod adres URL kończący się frazą Nodes wspomnianą powyżej, powinieneś zobaczyć (jako wartość klucza uri) link, który pozwala wyświetlić zawartość katalogu głównego produktu.
Linki do plików i katalogów można znaleźć jako wartości kluczy uri. Można ich użyć, aby przejść dalej w strukturze katalogów.
Zasadniczo można przeglądać produkty przy użyciu następujących wzorców adresów URL:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<NODE_NAME>)/Nodes
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<NODE_NAME>)/Nodes(<NODE_NAME>)/Nodes
gdzie
- <PRODUCT_UUID>
to ID produktu uzyskane za pomocą zapytania wyszukiwania, a
- <NODE_NAME>
jest nazwą elementu (zwykłego pliku lub katalogu) wewnątrz produktu zwróconego w poprzedniej odpowiedzi listingowej.
Każdy z węzłów reprezentuje plik lub katalog znajdujący się w produkcie.
Tylko węzły będące katalogami mogą mieć listowaną zawartość. Jeśli spróbujesz wyświetlić zawartość węzła będącego plikiem, odpowiedź będzie pusta. Pusty katalog również zwróci pustą listę:
{"result":[]}
Przykład:
Załóżmy, że chcemy przejrzeć produkt S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE. Najpierw musimy znaleźć jego ID. Jednym ze sposobów osiągnięcia tego celu jest użycie metody z sekcji Zapytanie według nazwy powyżej. W tym przypadku link użyty do uzyskania ID naszego produktu to:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products?$filter=Name eq 'S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE'
Dane wyjściowe powinny zawierać obiekt produktu z wartością Id. Użyj zwróconego Id, aby przeglądać produkt według następującego wzorca:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes
Zastąp <PRODUCT_UUID> rzeczywistym ID zwróconym przez zapytanie dokładnej nazwy.
Odpowiedź:
{
"result":[
{
"Id":"<PRODUCT_NAME>",
"Name":"<PRODUCT_NAME>",
"ContentLength":0,
"ChildrenNumber":<NUMBER_OF_CHILDREN>,
"Nodes":{
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes"
}
}
]
}
Każdy wyświetlony Node ma pole uri, które zawiera listę jego elementów podrzędnych.
Wejdź pod jedyny adres uri widoczny w powyższych danych wyjściowych, którym jest:
https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes
Powinieneś teraz zobaczyć listę elementów z katalogu głównego produktu. Oto kilka przykładów elementów, które mogą zostać zwrócone:
{
"result": [
{
"Id": "annotation",
"Name": "annotation",
"ContentLength": 0,
"ChildrenNumber": 3,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(annotation)/Nodes"
}
},
{
"Id": "manifest.safe",
"Name": "manifest.safe",
"ContentLength": 21468,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(manifest.safe)/Nodes"
}
},
{
"Id": "preview",
"Name": "preview",
"ContentLength": 0,
"ChildrenNumber": 4,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(preview)/Nodes"
}
}
]
}
Załóżmy, że chcesz przejrzeć zawartość katalogu annotation tego produktu. Aby to zrobić, przejdź do następującego linku widocznego w powyższych danych wyjściowych:
https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(annotation)/Nodes
Ten katalog zawiera dwa pliki oraz jeden podkatalog:
{
"result": [
{
"Id": "<SUBDIRECTORY_NAME>",
"Name": "<SUBDIRECTORY_NAME>",
"ContentLength": 0,
"ChildrenNumber": 4,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes"
}
}
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 1420134,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<FILE_NAME>)/Nodes"
}
}
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 1420117,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<FILE_NAME>)/Nodes"
}
}
]
}
Dostęp do podkatalogu pokazuje, że zawiera on cztery pliki:
{
"result": [
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 333198,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(<FILE_NAME>)/Nodes"
}
},
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 333198,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(<FILE_NAME>)/Nodes"
}
},
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 1024229,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(<FILE_NAME>)/Nodes"
}
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 1024229,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.nsiscloud.polsa.gov.pl/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(<FILE_NAME>)/Nodes"
}
}
]
}
DeletedProducts OData API
Punkt końcowy DeletedProducts OData umożliwia użytkownikom dostęp do informacji o produktach usuniętych z katalogu. Ten punkt końcowy zapewnia wygodny sposób pobierania szczegółowych informacji o produktach, które zostały usunięte z katalogu. Korzystając z obsługiwanych operacji i opcji filtrowania, użytkownicy mogą skutecznie uzyskać dostęp do wymaganych szczegółów dotyczących usuniętych produktów. W przypadku punktu końcowego DeletedProducts OData żądania powinny być budowane w taki sam sposób, jak w sekcji OData API powyżej, ze zmianą adresu URL z Products na DeletedProducts.
Adres URL punktu końcowego
Dostęp do punktu końcowego Deleted OData można uzyskać za pomocą następującego adresu URL:
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts
Struktura zapytania
Punkt końcowy OData DeletedProducts obsługuje te same opcje wyszukiwania, co standardowy punkt końcowy OData Products. Aby uzyskać więcej informacji, zobacz Struktura zapytania.
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=not contains(Name,'S1') and DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2026-03-01T23:59:59.999Z&$orderby=DeletionDate&$top=20
UWAGA DOTYCZĄCA WYDAJNOŚCI
Aby przyspieszyć działanie zapytania, zdecydowanie zaleca się ograniczenie go do określonych dat, na przykład:
DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2026-03-01T00:00:00.000Z
Opcja filtrowania
Aby wyszukać usunięte produkty według właściwości, należy zbudować filtr, jak wyjaśniono w sekcji Opcja filtrowania powyżej.
Dopuszczalne właściwości produktów dla punktu końcowego OData DeletedProducts są następujące:
Name |
wyszukiwanie określonego produktu według jego dokładnej nazwy |
Id |
wyszukiwanie określonego produktu według jego identyfikatora |
DeletionDate |
wyszukiwanie według daty usunięcia |
DeletionCause |
wyszukiwanie według przyczyny usunięcia |
Collection/Name |
wyszukiwanie w określonej kolekcji |
OriginDate |
wyszukiwanie według daty pochodzenia |
ContentDate/Start |
wyszukiwanie według daty rozpoczęcia pozyskania |
ContentDate/End |
wyszukiwanie według daty zakończenia pozyskania |
Footprint |
wyszukiwanie według kryteriów geograficznych |
Attributes |
wyszukiwanie według atrybutów produktu |
Zapytanie według nazwy
Aby wyszukać usunięty produkt według jego dokładnej nazwy:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=Name eq 'S3B_OL_1_ERR____20251105T101532_20251105T105949_20251105T122936_2657_113_065______ESA_O_NR_004.SEN3'
Zapytanie według ID
Aby wyszukać usunięty produkt według jego identyfikatora:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts(959d3c25-2b75-4182-9b7d-a9237775530b)
Zapytanie według daty usunięcia
Aby wyszukać produkty usunięte między dwiema datami włącznie:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=DeletionDate ge 2026-01-26T00:00:00.000Z and DeletionDate le 2026-01-27T23:59:59.999Z
Zapytanie według przyczyny usunięcia
Aby wyszukać produkty usunięte z określonego powodu:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=DeletionCause eq 'Duplicated product' or DeletionCause eq 'Corrupted product'
Dozwolone wartości parametru DeletionCause to:
Wartość |
Znaczenie |
|---|---|
Duplicated product |
Produkt został usunięty, ponieważ w katalogu istnieje inna kopia tego samego produktu. |
Missing checksum |
Produkt został usunięty, ponieważ brakowało informacji o sumie kontrolnej. |
Corrupted product |
Produkt został usunięty, ponieważ przechowywane dane były uszkodzone. |
Obsolete product/Other |
Produkt został usunięty z innych powodów konserwacyjnych lub związanych z cyklem życia. |
Zapytanie według kolekcji
Aby wyszukać usunięte produkty w określonej kolekcji:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=Collection/Name eq 'SENTINEL-2' and DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2023-03-03T23:59:59.999Z
Listę dostępnych kolekcji znajdziesz w tabeli w sekcji Zapytanie według kolekcji powyżej. Należy również pamiętać, że możliwe jest, iż żaden z produktów nie został usunięty z dostępnych kolekcji.
Zapytanie według daty pozyskania
Aby wyszukać usunięte produkty pozyskane między dwiema datami:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=ContentDate/Start gt 2026-01-01T00:00:00.000Z and ContentDate/End lt 2026-03-01T00:05:00.000Z
Zapytanie według kryteriów geograficznych
Aby wyszukać usunięte produkty przecinające określony wielokąt:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=OData.CSC.Intersects(area=geography'SRID=4326;POLYGON ((-75.000244 -42.4521508418609, -75.000244 -43.4409190460844, -73.643585 -43.432873907284, -73.66513 -42.4443775132447, -75.000244 -42.4521508418609))') and ContentDate/Start gt 2021-01-01T00:00:00.000Z and ContentDate/End lt 2021-04-01T23:59:59.999Z
Zapytanie według atrybutów
Aby wyszukać produkty według atrybutów, należy zbudować filtr w taki sam sposób, jak opisano w sekcji Zapytanie według atrybutów powyżej.
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.IntegerAttribute/Value eq 10844) and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq 'ASCENDING')
Dodatkowe opcje
Oto dodatkowe opcje dla zapytania o usunięte produkty:
Opcja orderby
Opcja orderby działa w taki sam sposób, jak wyjaśniono powyżej w sekcji Opcja orderby.
W przypadku punktu końcowego OData DeletedProducts dopuszczalne argumenty dla tej opcji to:
ContentDate/Start, ContentDate/End
DeletionDate
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_IW') and DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2026-03-01T23:59:59.999Z&$orderby=DeletionDate desc
Opcja expand
Opcja expand umożliwia użytkownikom wyświetlenie pełnych metadanych każdego zwróconego wyniku.
Dopuszczalne argumenty dla tej opcji:
Attributes
Aby wyświetlić metadane wyników:
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=contains(Name,'S2A') and DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2026-03-01T23:59:59.999Z&$expand=Attributes
Opcja skip
Opcja skip może być używana zgodnie z definicją w sekcji Opcja skip powyżej.
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=contains(Name,'S1A') and ContentDate/Start ge 2026-01-01T00:00:00.000Z and ContentDate/Start le 2026-03-01T23:59:59.999Z&$skip=30
Opcja top
Opcja top może być używana zgodnie z definicją w sekcji Opcja top powyżej.
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_IW') and ContentDate/Start ge 2026-01-01T00:00:00.000Z and ContentDate/Start le 2026-03-01T23:59:59.999Z&$top=40
Opcja count
Opcja count może być używana zgodnie z definicją w sekcji Opcja count powyżej.
Żądanie HTTP
https://catalogue.nsiscloud.polsa.gov.pl/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_IW') and DeletionDate gt 2026-01-01T00:00:00.000Z and DeletionDate lt 2026-03-30T23:59:59.999Z&$orderby=DeletionDate desc&$count=True
Obsługa błędów API
Po wykonaniu żądania serwer może je odrzucić i zwrócić kod błędu wraz z odpowiednimi informacjami. Do najczęstszych kodów statusu spowodowanych problemami po stronie użytkownika należą:
Status kodu |
Znaczenie |
Typowa przyczyna |
|---|---|---|
400 Bad Request |
Serwer nie mógł zrozumieć żądania. |
Nieprawidłowa składnia, nieprawidłowa nazwa pola lub błędna struktura zapytania. |
401 Unauthorized |
Uwierzytelnienie nie powiodło się. |
Nieprawidłowe dane uwierzytelniające użytkownika podczas generowania tokenu. |
403 Forbidden |
Dostęp do żądanego zasobu jest niedozwolony. |
Brakujący, nieprawidłowy lub wygasły token. |
422 Unprocessable Entity |
Składnia żądania jest poprawna, ale walidacja semantyczna nie powiodła się. |
Nieprawidłowa wartość skip, top lub count, albo nieprawidłowe Id produktu. |
Kod statusu: 400 Bad Request
Przykładowa odpowiedź
400 Bad Request
{
"detail": {
"message": "Invalid field: Nmae",
"request_id": "8e8f7bae-0487-412b-b70a-f486d0d6fd04"
}
}
Błąd wskazuje, że serwer nie mógł zrozumieć żądania z powodu nieprawidłowej składni lub formatowania. Komunikat zawiera informacje pozwalające szybciej zidentyfikować, gdzie potrzebna jest poprawka i czego ona dotyczy, na przykład:
„message”: „Invalid field: Nmae”
„message”: „Error during parsing at index 4”
Przed ponownym wysłaniem żądania użytkownik powinien zapoznać się z dokumentacją OData dotyczącą struktury zapytania i poprawić składnię.
Kod statusu: 403 Forbidden
Błąd nie zwraca komunikatu. Jego wystąpienie jest związane z brakiem dostępu do danych w sytuacji, gdy podano nieprawidłowy lub wygasły token.
Przed ponownym wysłaniem zapytania użytkownik powinien upewnić się, że ma dostęp do żądanych danych i używa prawidłowego Bearer Token.
Kod statusu: 422 Unprocessable Entity
Przykładowa odpowiedź
422 Unprocessable Entity
{
"detail": [
{
"type": "less_than_equal",
"loc": [
"query",
"$skip"
],
"msg": "Input should be less than or equal to 10000",
"input": "10001",
"ctx": {
"error": {}
}
}
]
}
Błąd wskazuje na niepowodzenie walidacji semantycznej z powodu ustawienia parametru skip, top lub count na wartość spoza dozwolonego zakresu albo dlatego, że Id produktu jest nieprawidłowe. Składnia zapytania jest poprawna. Zwrócony komunikat zawiera szczegóły dotyczące wykrytego problemu.
Przed ponownym wysłaniem żądania użytkownik powinien zapoznać się z dokumentacją i zastosować się do instrukcji podanych w komunikacie.
Co można zrobić dalej?
Aby zapewnić wydajne i stałe wyszukiwanie w katalogu EOData na NSIS Cloud, zdecydowanie zaleca się korzystanie z subskrypcji EOData:
Subskrypcje te zapewniają najskuteczniejszy sposób informowania o nowo dodanych, zmodyfikowanych lub usuniętych produktach w katalogu.
Podstawowym celem usług subskrypcji jest umożliwienie użytkownikom otrzymywania w czasie rzeczywistym powiadomień o istotnych zdarzeniach zachodzących w katalogu EOData na NSIS Cloud. Użytkownicy mogą dostosować swoje powiadomienia, określając parametry filtrowania w żądaniu subskrypcji.