Anleitung zur EODATA-Katalog-API auf CODE-DE-Lab
OData steht für Open Data Protocol und dient zum Erstellen und Nutzen von RESTful-APIs. Trotz des ähnlichen Namens bezeichnet EODATA Archive mit Erdbeobachtungsdaten, auf die über Links gemäß den OData-Standards zugegriffen werden kann.
In diesem Artikel erfahren Sie, wie Sie den EODATA-Katalog mit OData durchsuchen.
Inhalt dieser Anleitung
Voraussetzungen
Nr. 1 HTTP-Anfragen über einen Browser senden
Die einfachste Möglichkeit, eine HTTP-Anfrage zu senden, ist das Aufrufen einer Internetadresse im Browser. Die meisten Browser können die Ausgabe einer Website verarbeiten und lesbar darstellen. Siehe Mit Firefox Anfragen an die EODATA-Katalog-API von CODE-DE-Lab senden
Nr. 2 HTTP-Anfragen mit curl oder wget senden
Mit den eigenständigen Programmen curl und wget können Sie HTTP-Anfragen über die Befehlszeile senden. Weitere Informationen finden Sie unter Verwenden von curl und wget zum Herunterladen von EO-Daten-Produkten von CODE-DE-Lab
Nr. 3 HTTP-Anfragen mit Python-Code senden
Mit einer Programmiersprache wie Python können Sie Code schreiben, der HTTP-Anfragen an den Server sendet. Siehe Mit Python Anfragen an den EODATA-Katalog auf CODE-DE-Lab senden. Auch andere Programmiersprachen sollten HTTP-Anfragen senden können.
OData-API
Aufbau einer Abfrage
Eine OData-Abfrage besteht aus Elementen, die in dieser Dokumentation als „Optionen“ bezeichnet werden. Die Schnittstelle unterstützt die folgenden Suchoptionen:
filter
orderby
top
skip
count
expand
Suchoptionen müssen immer mit $ beginnen. Aufeinanderfolgende Optionen müssen durch & getrennt werden.
Aufeinanderfolgende Filter innerhalb der Option filter müssen durch and oder or getrennt werden. Auch der Operator Not kann verwendet werden, zum Beispiel:
https://catalogue.code-de.org/odata/v1/Products?$filter=not contains(Name,'S2') and ContentDate/Start gt 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-03T00:10:00.000Z&$orderby=ContentDate/Start&$top=100
Um Abfragen zu beschleunigen, wird empfohlen, sie nach Aufnahmedatum einzuschränken, zum Beispiel:
ContentDate/Start gt 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-21T00:00:00.000Z
Falls eine Anfrage fehlschlägt, finden Sie unter Fehlerbehandlung bei API-Anfragen die häufigsten Fehlertypen und deren Bedeutung.
Option Filter
Nach Namen suchen
So suchen Sie nach einem bestimmten Produkt anhand seines exakten Namens:
https://catalogue.code-de.org/odata/v1/Products?$filter=Name eq 'S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE'
So suchen Sie nach Produkten, deren Namen S1A enthalten:
https://catalogue.code-de.org/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
Anstelle von contains können Sie endswith und startswith verwenden, um nach Produkten zu suchen, deren Namen mit der angegebenen Zeichenfolge enden oder beginnen.
Nach einer Liste suchen
Um in einer Abfrage nach mehreren Produkten anhand ihrer Namen zu suchen, können Sie die Methode POST verwenden:
https://catalogue.code-de.org/odata/v1/Products/OData.CSC.FilterList
Dieser Endpunkt ist für POST-Anfragen mit einem JSON-Anfragetext vorgesehen. Wird er direkt mit einer einfachen GET-Anfrage aufgerufen, liefert er kein normales Suchergebnis.
Anfragetext:
{
"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"}
]
}
Es werden zwei Ergebnisse zurückgegeben, da kein Produkt mit dem Namen xxxxxxxx.06.tar existiert.
Nach Sammlung suchen
So suchen Sie nach Produkten innerhalb einer bestimmten Sammlung:
https://catalogue.code-de.org/odata/v1/Products?$filter=Collection/Name eq 'SENTINEL-2' and ContentDate/Start gt 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-03T00:11:00.000Z
Derzeit sind folgende Sammlungen verfügbar:
SENTINEL-1
SENTINEL-2
SENTINEL-3
SENTINEL-5P
SENTINEL-6
SENTINEL-1-RTC
LANDSAT-5
LANDSAT-7
LANDSAT-8
SMOS
TERRAAQUA
COP-DEM
ENVISAT
S2GLC
Nach Veröffentlichungsdatum suchen
So suchen Sie nach Produkten, die zwischen zwei Datumsangaben veröffentlicht wurden:
https://catalogue.code-de.org/odata/v1/Products?$filter=PublicationDate gt 2019-05-15T00:00:00.000Z and PublicationDate lt 2019-05-16T00:00:00.000Z
Mit den Parametern ge und le können Sie ein Intervall einschließlich seiner Grenzen festlegen:
https://catalogue.code-de.org/odata/v1/Products?$filter=PublicationDate ge 2019-05-15T00:00:00.000Z and PublicationDate le 2019-05-16T00:00:00.000Z
Nach Aufnahmedatum suchen
So suchen Sie nach Produkten, die zwischen zwei Datumsangaben aufgenommen wurden:
https://catalogue.code-de.org/odata/v1/Products?$filter=ContentDate/Start gt 2019-05-15T00:00:00.000Z and ContentDate/Start lt 2019-05-16T00:00:00.000Z
In der Regel beschreiben zwei Parameter das ContentDate (Aufnahmedatum) eines Produkts: Start und End. Je nach Suchziel können Sie diese Parameter kombinieren, zum Beispiel:
https://catalogue.code-de.org/odata/v1/Products?$filter=ContentDate/Start gt 2019-05-15T00:00:00.000Z and ContentDate/End lt 2019-05-15T00:05:00.000Z
Nach geografischen Kriterien suchen
So suchen Sie nach Produkten, die das angegebene Polygon schneiden:
https://catalogue.code-de.org/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
So suchen Sie nach Produkten, die den angegebenen Punkt schneiden:
https://catalogue.code-de.org/odata/v1/Products?$filter=OData.CSC.Intersects(area=geography%27SRID=4326;POINT(-0.5319577002158441%2028.65487836189358)%27)
Einschränkungen:
MULTIPOLYGON wird derzeit nicht unterstützt.
Ein Polygon muss mit demselben Punkt beginnen und enden.
Koordinaten müssen in EPSG 4326 angegeben werden.
Nach Attributen suchen
Um nach Produkten anhand ihrer Attribute zu suchen, erstellen Sie einen Filter mit folgendem Aufbau:
Attributes/OData.CSC.ValueTypeAttribute/any(att:att/Name eq '[Attribute.Name]' and att/OData.CSC.ValueTypeAttribute/Value eq '[Attribute.Value]')
Dabei gilt:
ValueTypeAttribute kann folgende Werte annehmen:
StringAttribute
DoubleAttribute
IntegerAttribute
DateTimeOffsetAttribute
[Attribute.Name] ist der Attributname, der je nach Sammlung unterschiedliche Werte annehmen kann.
eq vor [Attribute.Value] kann bei Integer-, Double- oder DateTimeOffset-Attributen durch le, lt, ge oder gt ersetzt werden.
[Attribute.Value] ist der konkrete Wert, nach dem gesucht wird.
So rufen Sie Produkte mit cloudCover < 40% zwischen zwei Datumsangaben ab:
https://catalogue.code-de.org/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
So rufen Sie Produkte mit cloudCover< 10%, productType=S2MSI2A und orbitDirection ASCENDING zwischen zwei Datumsangaben ab:
https://catalogue.code-de.org/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 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-03T04:00:00.000Z&$top=10
Bemerkung
Die Kombination vieler Filterbedingungen kann die Anzahl passender Ergebnisse deutlich verringern. In manchen Fällen liefert die Anfrage eine leere Antwort, obwohl jede einzelne Bedingung gültig ist.
Option Orderby
Mit der Option Orderby können Produkte aufsteigend (asc) oder absteigend (desc) sortiert werden. Wenn weder asc noch desc angegeben wird, werden die Ressourcen aufsteigend sortiert.
So sortieren Sie Produkte nach ContentDate/Start in absteigender Reihenfolge:
https://catalogue.code-de.org/odata/v1/Products?$filter=contains(Name,'S1A_EW_GRD') and ContentDate/Start gt 2022-05-03T00:00:00.000Z and ContentDate/Start lt 2022-05-03T03:00:00.000Z&$orderby=ContentDate/Start desc
Ohne die Option orderby werden die Ergebnisse standardmäßig nicht sortiert. Wird orderby verwendet, erfolgt zusätzlich eine Sortierung nach ID. Dadurch sind die Ergebnisse vollständig sortiert, und beim seitenweisen Durchlaufen der Ergebnisse werden keine Produkte übersprungen.
Zulässige Argumente für diese Option: ContentDate/Start, ContentDate/End, PublicationDate, ModificationDate, jeweils mit der Sortierrichtung asc oder desc.
Option Top
Die Option Top legt die maximale Anzahl der Elemente fest, die eine Abfrage zurückgibt.
So begrenzen Sie die Anzahl der Ergebnisse:
https://catalogue.code-de.org/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&$top=100
Der Standardwert ist 20.
Zulässige Argumente für diese Option: Integer <0,1000>
Option Skip
Mit der Option Skip können Sie eine bestimmte Anzahl von Ergebnissen überspringen, etwa um Ergebnisse seitenweise zu durchlaufen. Aus Leistungsgründen empfehlen wir jedoch, Abfragen auf kurze Zeitintervalle zu begrenzen, anstatt Skip in einer allgemeineren Abfrage zu verwenden.
So überspringen Sie eine bestimmte Anzahl von Ergebnissen:
https://catalogue.code-de.org/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&$skip=23
Der Standardwert ist 0.
Wenn eine Abfrage mehr als 20 Produkte ergibt (Standardwert von Top), stellt die API am Ende der Seite einen nextLink bereit:
"@odata.nextLink": "https://catalogue.code-de.org/odata/v1/Products?$filter=contains(Name,'S1A_EW_GRD')+and+ContentDate/Start+gt+2022-05-03T00:00:00.000Z+and+ContentDate/Start+lt+2022-05-03T12:00:00.000Z&$skip=20"
Zulässige Argumente für diese Option: Integer <0,10000>
Option Count
Mit der Option Count lässt sich die genaue Anzahl der Produkte ermitteln, die der Abfrage entsprechen. Diese Option ist standardmäßig deaktiviert, um Abfragen zu beschleunigen.
So ermitteln Sie die genaue Anzahl der Produkte für eine bestimmte Abfrage:
https://catalogue.code-de.org/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&$count=True
Zulässige Argumente für diese Option: True, true, 1, False, false, 0
Option Expand
Mit der Option Expand können Sie auswählen, welche Informationen im Detail angezeigt werden.
Zulässige Argumente für diese Option: Attributes, Assets, Locations
Option Expand – Attributes
Um die vollständigen Metadaten der Ergebnisse anzuzeigen, weisen Sie der Option Expand den Wert Attributes zu:
https://catalogue.code-de.org/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
Für jedes Produkt ist die Liste dieser Attribute als Wert des Schlüssels Attributes verfügbar. Zum Zeitpunkt der Erstellung dieses Artikels beginnt diese Liste für das erste Produkt der obigen Abfrage wie folgt:
Option Expand – Assets
Um eine Liste zusätzlicher Assets der Produkte einschließlich Vorschaubildern anzuzeigen, verwenden Sie den Wert Assets:
https://catalogue.code-de.org/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-3%27%20and%20contains(Name,%20%27SL_2_FRP___%27)&$expand=Assets
Die Liste der Assets ist als Wert des Schlüssels Assets verfügbar. Für das erste Produkt der obigen Abfrage sieht diese Liste zum Zeitpunkt der Erstellung dieses Artikels wie folgt aus:
"Assets": [
{
"Type": "QUICKLOOK",
"Id": "312dbf31-85c6-4613-aefa-ed8f04e5c6eb",
"DownloadLink": "https://catalogue.code-de.org/odata/v1/Assets(312dbf31-85c6-4613-aefa-ed8f04e5c6eb)/$value",
"S3Path": "/eodata/Sentinel-3/SLSTR/SL_2_FRP___/2020/11/27/S3A_SL_2_FRP____20201127T201256_20201127T201556_20201129T020232_0180_065_285_0900_LN2_O_NT_004.SEN3"
}
]
In diesem Beispiel enthält die Liste nur ein Element mit dem Type QUICKLOOK. Der Download-Link für dieses Element ist als Wert des Schlüssels DownloadLink verfügbar:
https://catalogue.code-de.org/odata/v1/Assets(312dbf31-85c6-4613-aefa-ed8f04e5c6eb)/$value
Beispiel eines Vorschaubilds
Sie können diese Assets über die angegebenen Links herunterladen, ohne Ihre Identität nachweisen zu müssen. Je nach Ablauf des Dienstes kann die eigentliche Dateiübertragung nach dem Aufrufen des Links von einem Download-Dienst übernommen werden.
Option Expand – Locations
Je nach Produkt können Daten in entpackter (unkomprimierter) und/oder komprimierter Form zum Download verfügbar sein.
Um die verfügbaren Download-Methoden für die gesuchten Produkte anzuzeigen, weisen Sie der Option expand den Wert Locations zu:
https://catalogue.code-de.org/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-1%27%20and%20contains(Name,%27RAW%27)&$orderby=ContentDate/Start%20desc&$top=10&$expand=Locations
Als Wert des Schlüssels Locations sollte nun eine Liste von Locations erscheinen. Jede dieser Locations beschreibt eine verfügbare Möglichkeit zum Herunterladen eines Produkts und enthält Informationen wie Größe, Prüfsumme und Download-Link.
Zum Beispiel sieht diese Liste für das erste Produkt der obigen Abfrage zum Zeitpunkt der Erstellung dieses Artikels wie folgt aus:
"Locations": [
{
"FormatType": "Compressed",
"DownloadLink": "https://catalogue.code-de.org/odata/v1/Products(d695b74e-5f82-4b4c-95be-f08a631fac53)/$zip",
"ContentLength": 1575276240,
"Checksum": [
{
"Value": "46336ae3fd72617177b6d6bd6ee755b3",
"Algorithm": "MD5",
"ChecksumDate": "2024-05-28T10:54:29.721000Z"
}
],
"EvictionDate": "2024-06-27T11:00:26.387Z"
},
{
"FormatType": "Extracted",
"DownloadLink": "https://catalogue.code-de.org/odata/v1/Products(d695b74e-5f82-4b4c-95be-f08a631fac53)/$value",
"ContentLength": 1575275488,
"Checksum": [
{
"Value": "054c188b645c4b8ce7ab7b65abc1a9f0",
"Algorithm": "MD5",
"ChecksumDate": "2024-05-28T11:01:34.881769Z"
},
{
"Value": "2c1f95bfc5f88a455061a41f689222512e620fbda8ea2cdea5f5206c32472644",
"Algorithm": "BLAKE3",
"ChecksumDate": "2024-05-28T11:01:37.330063Z"
}
],
"S3Path": "/eodata/Sentinel-1/SAR/IW_RAW__0S/2024/05/28/S1A_IW_RAW__0SDV_20240528T102453_20240528T102523_054070_06930F_897A.SAFE"
}
]
Um dieses Produkt in komprimierter Form herunterzuladen, können Sie folgenden Link verwenden:
https://catalogue.code-de.org/odata/v1/Products(d695b74e-5f82-4b4c-95be-f08a631fac53)/$zip
Für diesen Download müssen Sie Ihre Identität nachweisen. Beim Herunterladen von Assets, wie im vorherigen Abschnitt beschrieben, ist dies nicht erforderlich.
Option Select
Mit der Option Select können Sie die angeforderten Eigenschaften für jedes Produkt auf eine bestimmte Teilmenge begrenzen, zum Beispiel auf Name und Id:
https://catalogue.code-de.org/odata/v1/Products?$select=Name,Id
Die Eigenschaftsnamen müssen durch Kommas getrennt werden. Ein zusätzliches Leerzeichen ist ebenfalls zulässig. Die Reihenfolge der Attribute in der Antwort wird standardmäßig festgelegt und hängt nicht von ihrer Reihenfolge in der Abfrage ab.
Der Parameter Id wird standardmäßig in der Antwort bereitgestellt, auch wenn er nicht in der Option Select angegeben ist.
Derzeit sind folgende Attribute verfügbar:
Id |
Name |
ContentType |
ContentLength |
OriginDate |
PublicationDate |
ModificationDate |
Online |
EvictionDate |
S3Path |
Checksum |
ContentDate |
Footprint |
Geofootprint |
Um alle verfügbaren Attribute auszuwählen, können Sie das Symbol * verwenden, anstatt jeden Eigenschaftsnamen einzeln aufzulisten:
https://catalogue.code-de.org/odata/v1/Products?$select=*
Produktknoten auflisten
Die genauen Werte in der Antwort hängen vom ausgewählten Produkt ab. Die folgenden Beispiele zeigen den Aufbau der Antwort und die Art der zu erwartenden Pfade.
Sie können Dateien und Verzeichnisse eines Produkts durchsuchen, ohne es herunterzuladen, auch wenn Sie nicht autorisiert sind.
Rufen Sie zunächst folgende URL auf:
https://catalogue.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes
<PRODUCT_UUID> ist dabei die ID eines Produkts, die Sie mit einer Suchabfrage ermittelt haben. Eine Möglichkeit, diese ID zu erhalten, ist das Aufrufen der URL aus dem obigen Abschnitt Nach Namen suchen. Die ID ist dann als Wert des Schlüssels Id verfügbar.
Nachdem Sie die Produkt-ID ermittelt und die oben angegebene URL mit der Endung Nodes aufgerufen haben, sollte als Wert des Schlüssels uri ein Link erscheinen, über den Sie den Inhalt des Stammverzeichnisses des Produkts anzeigen können.
Links zu Dateien und Verzeichnissen sind als Werte der Schlüssel uri verfügbar. Mit diesen Links können Sie die Verzeichnisstruktur weiter durchlaufen.
Produkte lassen sich mit folgenden URL-Mustern durchsuchen:
https://catalogue.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes
https://catalogue.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<NODE_NAME>)/Nodes
https://catalogue.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<NODE_NAME>)/Nodes(<NODE_NAME>)/Nodes
Dabei gilt:
- <PRODUCT_UUID>
ist die Produkt-ID, die durch eine Suchabfrage ermittelt wurde, und
- <NODE_NAME>
ist der Name eines Elements (einer regulären Datei oder eines Verzeichnisses) im Produkt, das in der vorherigen Auflistung zurückgegeben wurde.
Jeder Knoten steht für eine Datei oder ein Verzeichnis innerhalb des Produkts.
Nur bei Knoten, die Verzeichnisse darstellen, kann der Inhalt aufgelistet werden. Wenn Sie versuchen, den Inhalt eines Dateiknotens aufzulisten, ist die Antwort leer. Ein leeres Verzeichnis liefert ebenfalls eine leere Liste:
{"result":[]}
Beispiel:
Angenommen, Sie möchten das Produkt S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE durchsuchen. Zunächst müssen Sie seine ID ermitteln. Verwenden Sie dazu beispielsweise die Methode aus dem obigen Abschnitt Nach Namen suchen. In diesem Fall lautet der Link zum Ermitteln der Produkt-ID:
https://catalogue.code-de.org/odata/v1/Products?$filter=Name eq 'S1A_IW_GRDH_1SDV_20141031T161924_20141031T161949_003076_003856_634E.SAFE'
Die Ausgabe sollte ein Produktobjekt mit einem Id-Wert enthalten. Verwenden Sie die zurückgegebene Id, um das Produkt mit folgendem Muster zu durchsuchen:
https://catalogue.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes
Ersetzen Sie <PRODUCT_UUID> durch die tatsächliche ID, die von der Abfrage nach dem exakten Namen zurückgegeben wurde.
Antwort:
{
"result":[
{
"Id":"<PRODUCT_NAME>",
"Name":"<PRODUCT_NAME>",
"ContentLength":0,
"ChildrenNumber":<NUMBER_OF_CHILDREN>,
"Nodes":{
"uri":"https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes"
}
}
]
}
Jeder aufgelistete Knoten hat ein Feld uri, über das seine untergeordneten Elemente aufgelistet werden.
Rufen Sie die einzige uri-Adresse in der obigen Ausgabe auf:
https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes
Nun sollte die Liste der Elemente aus dem Stammverzeichnis des Produkts erscheinen. Folgende Elemente können beispielsweise zurückgegeben werden:
{
"result": [
{
"Id": "AUX_DATA",
"Name": "AUX_DATA",
"ContentLength": 0,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(AUX_DATA)/Nodes"
}
},
{
"Id": "DATASTRIP",
"Name": "DATASTRIP",
"ContentLength": 0,
"ChildrenNumber": 1,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes"
}
},
{
"Id": "GRANULE",
"Name": "GRANULE",
"ContentLength": 0,
"ChildrenNumber": 1,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(GRANULE)/Nodes"
}
}
]
}
Angenommen, Sie möchten den Inhalt des Verzeichnisses DATASTRIP dieses Produkts durchsuchen. Rufen Sie dazu folgenden Link aus der obigen Ausgabe auf:
https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes
Dieses Verzeichnis enthält nur ein Unterverzeichnis:
{
"result": [
{
"Id": "<SUBDIRECTORY_NAME>",
"Name": "<SUBDIRECTORY_NAME>",
"ContentLength": 0,
"ChildrenNumber": 2,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes"
}
}
]
}
Beim Aufrufen dieses Unterverzeichnisses zeigt sich, dass es eine Datei und ein Verzeichnis enthält:
{
"result": [
{
"Id": "<FILE_NAME>",
"Name": "<FILE_NAME>",
"ContentLength": 3116641,
"ChildrenNumber": 0,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(<FILE_NAME>)/Nodes"
}
},
{
"Id": "QI_DATA",
"Name": "QI_DATA",
"ContentLength": 0,
"ChildrenNumber": 5,
"Nodes": {
"uri": "https://download.code-de.org/odata/v1/Products(<PRODUCT_UUID>)/Nodes(<PRODUCT_NAME>)/Nodes(DATASTRIP)/Nodes(<SUBDIRECTORY_NAME>)/Nodes(QI_DATA)/Nodes"
}
}
]
}
OData-API für DeletedProducts
Über den OData-Endpunkt DeletedProducts können Sie Informationen über gelöschte Produkte im Katalog abrufen. Dieser Endpunkt bietet eine einfache Möglichkeit, Details zu Produkten abzurufen, die aus dem Katalog gelöscht wurden. Mit den unterstützten Operationen und Filteroptionen können Sie die benötigten Details zu gelöschten Produkten effizient abrufen. Erstellen Sie Anfragen an den OData-Endpunkt DeletedProducts wie im obigen Abschnitt OData-API beschrieben und ersetzen Sie in der URL Products durch DeletedProducts.
URL des Endpunkts
Der OData-Endpunkt für gelöschte Produkte ist über folgende URL erreichbar:
https://catalogue.code-de.org/odata/v1/DeletedProducts
Aufbau einer Abfrage
Der OData-Endpunkt DeletedProducts unterstützt dieselben Suchoptionen wie der Standardendpunkt OData Products. Weitere Informationen finden Sie unter Aufbau einer Abfrage.
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=not contains(Name,'S1') and DeletionDate gt 2023-04-01T00:00:00.000Z and DeletionDate lt 2023-05-30T23:59:59.999Z&$orderby=DeletionDate&$top=20
HINWEIS ZUR LEISTUNG
Um Abfragen zu beschleunigen, wird dringend empfohlen, sie auf bestimmte Datumsangaben zu begrenzen, zum Beispiel:
DeletionDate gt 2022-05-03T00:00:00.000Z and DeletionDate lt 2023-05-03T00:00:00.000Z
Option Filter
Um nach gelöschten Produkten anhand ihrer Eigenschaften zu suchen, erstellen Sie den Filter wie im obigen Abschnitt Option Filter beschrieben.
Für den OData-Endpunkt DeletedProducts sind folgende Produkteigenschaften zulässig:
Name |
Nach einem bestimmten Produkt anhand seines exakten Namens suchen |
Id |
Nach einem bestimmten Produkt anhand seiner ID suchen |
DeletionDate |
Nach Löschdatum suchen |
DeletionCause |
Nach Löschgrund suchen |
Collection/Name |
Innerhalb einer bestimmten Sammlung suchen |
OriginDate |
Nach Ursprungsdatum suchen |
ContentDate/Start |
Nach Beginn der Aufnahme suchen |
ContentDate/End |
Nach Ende der Aufnahme suchen |
Footprint |
Nach geografischen Kriterien suchen |
Attributes |
Nach Produktattributen suchen |
Nach Namen suchen
So suchen Sie nach einem gelöschten Produkt anhand seines exakten Namens:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=Name eq 'S2A_MSIL1C_20210404T112111_N0500_R037_T31VEG_20230209T101305.SAFE'
Nach ID suchen
So suchen Sie nach einem gelöschten Produkt anhand seiner Id:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts(29008eb1-1a51-48a8-9aec-288b00f7debe)
Nach Löschdatum suchen
So suchen Sie nach Produkten, die zwischen zwei Datumsangaben einschließlich der Intervallgrenzen gelöscht wurden:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=DeletionDate ge 2023-04-26T00:00:00.000Z and DeletionDate le 2023-04-27T23:59:59.999Z
Nach Löschgrund suchen
So suchen Sie nach Produkten, die aus einem bestimmten Grund gelöscht wurden:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=DeletionCause eq 'Duplicated product' or DeletionCause eq 'Corrupted product'
Zulässige Werte des Parameters DeletionCause sind:
Wert |
Bedeutung |
|---|---|
Duplicated product |
Das Produkt wurde entfernt, weil eine weitere Kopie desselben Produkts im Katalog vorhanden ist. |
Missing checksum |
Das Produkt wurde entfernt, weil Angaben zur Prüfsumme fehlten. |
Corrupted product |
Das Produkt wurde entfernt, weil die gespeicherten Daten beschädigt waren. |
Obsolete product/Other |
Das Produkt wurde aus anderen Gründen der Wartung oder des Lebenszyklus entfernt. |
Nach Sammlung suchen
So suchen Sie nach gelöschten Produkten innerhalb einer bestimmten Sammlung:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=Collection/Name eq 'SENTINEL-2' and DeletionDate gt 2023-04-01T00:00:00.000Z and DeletionDate lt 2023-09-30T23:59:59.999Z
Die Liste der verfügbaren Sammlungen finden Sie in der Tabelle im obigen Abschnitt Nach Sammlung suchen. Beachten Sie außerdem, dass möglicherweise keine Produkte aus den verfügbaren Sammlungen gelöscht wurden.
Nach Aufnahmedatum suchen
So suchen Sie nach gelöschten Produkten, die zwischen zwei Datumsangaben aufgenommen wurden:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=ContentDate/Start gt 2021-09-01T00:00:00.000Z and ContentDate/End lt 2021-09-01T00:05:00.000Z
Nach geografischen Kriterien suchen
So suchen Sie nach gelöschten Produkten, die das angegebene Polygon schneiden:
HTTP-Anfrage
https://catalogue.code-de.org/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
Nach Attributen suchen
Um nach Produkten anhand ihrer Attribute zu suchen, erstellen Sie den Filter wie im obigen Abschnitt Nach Attributen suchen beschrieben.
HTTP-Anfrage
https://catalogue.code-de.org/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')
Zusätzliche Optionen
Für die Abfrage gelöschter Produkte stehen folgende zusätzliche Optionen zur Verfügung:
Option Orderby
Die Option Orderby funktioniert wie im obigen Abschnitt Option Orderby beschrieben.
Für den OData-Endpunkt DeletedProducts sind folgende Argumente für diese Option zulässig:
ContentDate/Start, ContentDate/End
DeletionDate
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_EW_GRD') and DeletionDate gt 2023-04-01T00:00:00.000Z and DeletionDate lt 2023-05-30T23:59:59.999Z&$orderby=DeletionDate desc
Option Expand
Mit der Option Expand können Sie die vollständigen Metadaten jedes zurückgegebenen Ergebnisses anzeigen.
Zulässige Argumente für diese Option:
Attributes
So zeigen Sie die Metadaten der Ergebnisse an:
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=contains(Name,'S2A') and DeletionDate gt 2023-04-01T00:00:00.000Z and DeletionDate lt 2023-05-30T23:59:59.999Z&$expand=Attributes
Option Skip
Die Option Skip kann wie im obigen Abschnitt Option Skip beschrieben verwendet werden.
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=contains(Name,'S2A') and ContentDate/Start ge 2021-04-01T00:00:00.000Z and ContentDate/Start le 2021-04-30T23:59:59.999Z&$skip=30
Option Top
Die Option Top kann wie im obigen Abschnitt Option Top beschrieben verwendet werden.
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_EW_GRD') and ContentDate/Start ge 2021-09-01T00:00:00.000Z and ContentDate/Start le 2021-09-30T23:59:59.999Z&$top=40
Option Count
Die Option Count kann wie im obigen Abschnitt Option Count beschrieben verwendet werden.
HTTP-Anfrage
https://catalogue.code-de.org/odata/v1/DeletedProducts?$filter=contains(Name,'S1A_EW_GRD') and DeletionDate gt 2023-04-01T00:00:00.000Z and DeletionDate lt 2023-05-30T23:59:59.999Z&$orderby=DeletionDate desc&$count=True
Fehlerbehandlung bei API-Anfragen
Nach dem Senden einer Anfrage kann der Server diese ablehnen und einen Fehlercode mit weiteren Informationen zurückgeben. Zu den häufigsten Statuscodes bei Problemen auf Benutzerseite gehören:
Statuscode |
Bedeutung |
Typische Ursache |
|---|---|---|
400 Bad Request |
Der Server konnte die Anfrage nicht verstehen. |
Ungültige Syntax, ungültiger Feldname oder fehlerhafter Aufbau der Abfrage. |
401 Unauthorized |
Die Authentifizierung ist fehlgeschlagen. |
Ungültige Anmeldedaten beim Erstellen des Tokens. |
403 Forbidden |
Der Zugriff auf die angeforderte Ressource ist nicht erlaubt. |
Fehlendes, ungültiges oder abgelaufenes Token. |
422 Unprocessable Entity |
Die Syntax der Anfrage ist gültig, die semantische Validierung ist jedoch fehlgeschlagen. |
Ungültiger Wert für skip, top oder count oder ungültige Produkt-Id. |
Statuscode: 400 Bad Request
Beispielantwort
400 Bad Request
{
"detail": {
"message": "Invalid field: Nmae",
"request_id": "8e8f7bae-0487-412b-b70a-f486d0d6fd04"
}
}
Der Fehler zeigt an, dass der Server die Anfrage aufgrund einer falschen Syntax oder Formatierung nicht verstehen konnte. Die Meldung hilft dabei, die erforderliche Korrektur und die betroffene Stelle schneller zu erkennen, zum Beispiel:
„message“: „Invalid field: Nmae“
„message“: „Error during parsing at index 4“
Prüfen Sie vor dem erneuten Senden der Anfrage die OData-Dokumentation zum Aufbau von Abfragen und korrigieren Sie die Syntax.
Statuscode: 403 Forbidden
Dieser Fehler liefert keine Meldung. Er tritt auf, wenn aufgrund eines ungültigen oder abgelaufenen Tokens kein Zugriff auf die Daten besteht.
Stellen Sie vor dem erneuten Senden der Abfrage sicher, dass Sie Zugriff auf die angeforderten Daten haben und das richtige Bearer-Token verwenden.
Statuscode: 422 Unprocessable Entity
Beispielantwort
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": {}
}
}
]
}
Der Fehler zeigt an, dass die semantische Validierung fehlgeschlagen ist, weil der Parameter skip, top oder count außerhalb des zulässigen Wertebereichs liegt oder eine Produkt-Id ungültig ist. Die Syntax der Abfrage ist korrekt. Die zurückgegebene Meldung enthält Einzelheiten zum erkannten Problem.
Prüfen Sie vor dem erneuten Senden der Anfrage die Dokumentation und befolgen Sie die Anweisungen in der Meldung.
Nächste Schritte
Für effiziente und dauerhafte Abfragen des EODATA-Katalogs auf CODE-DE-Lab wird die Verwendung der EODATA-Abonnements von CODE-DE-Lab dringend empfohlen:
Diese Abonnements bieten die effektivste Möglichkeit, über neu hinzugefügte, geänderte oder gelöschte Produkte im Katalog informiert zu bleiben.
Das Hauptziel der Abonnementdienste besteht darin, Benutzer in Echtzeit über relevante Ereignisse im EODATA-Katalog auf CODE-DE-Lab zu benachrichtigen. Benutzer können ihre Benachrichtigungen anpassen, indem sie Filterparameter in der Abonnementanfrage angeben.