Skip to main content

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:

  1. MULTIPOLYGON nie jest obecnie obsługiwany.

  2. Wielokąt musi zaczynać się i kończyć w tym samym punkcie.

  3. 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:

../_images/eodata_catalogue_api_manual_01_creodias1.png

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",
../_images/quicklook_image1.png

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'
../_images/example_finding_id_for_S1A1.png

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: 401 Unauthorized

Przykładowa odpowiedź

401 Unauthorized
{
   "error": "invalid_grant",
   "error_description": "Invalid user credentials"
}

Błąd wskazuje, że podczas generowania tokenu podano nieprawidłowe dane uwierzytelniające.

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.