Funktionsweise der NetCDF-DSG-Werkzeuge (Discrete Sampling Geometry)

ArcGIS Pro unterstützt verschiedene DSG-Feature-Typen (Discrete Sampling Geometry): Profil, Zeitserie und Flugbahn. Die Elemente in einem DSG-Feature müssen mit Raum- und Zeitkoordinaten verknüpft werden. Die Beobachtungsvariablen werden mit einem Koordinatenattribut in räumliche Koordinaten geolokalisiert.

Die DSG-Eingabedaten müssen der Konvention "Climate and Forecast (CF)" folgen, damit sie direkt verwendet werden können. NetCDF-Dateien, die mit früheren Versionen der Konvention erstellt wurden oder denen erforderliche Attribute fehlen, können nutzbar gemacht werden, indem mit einer XML-Datei die Metadaten ergänzt werden.

Die folgenden DSG-Werkzeuge im NetCDF-Toolset erstellen Feature-Class-Ausgaben aus verschiedenen Typen von NetCDF-Dateien:

Die primären Ausgaben der DSG-Werkzeuge sind eine Feature-Class und eine Tabelle. Verschiedene Ausgabeschemas sind verfügbar, sie hängen vom DSG-Feature-Typ ab.

In den folgenden Abschnitten wird aufgezeigt, wie der Feature-Typ "Discrete Sampling Geometry" mit der CF-Konvention in einer NetCDF-Datei dargestellt wird. Es werden spezifische Anforderungen für die Typen von DSG-Features, die ArcGIS Pro unterstützt, sowie jeweils ein Beispiel beschrieben. Sie erfahren, wie die Elemente in einem DSG-Feature mit Raum- und Zeitkoordinaten verknüpft werden, wie sie mit den Beobachtungsvariablen geolokalisiert werden und wie zusätzliche Attribute verwendet werden, um Beobachtungsvariablen räumlichen Koordinaten zuzuordnen. Für NetCDF-Dateien, die mit der erforderlichen Version der CF-Konvention nicht kompatibel sind oder denen Informationen fehlen, können Sie einen Zusatz zum Mechanismus verwenden oder die Metadaten mithilfe einer externen .xml-Metadaten-Datei ändern. Details zum primären Ausgabetyp der DSG-Werkzeuge und die verfügbaren Schematypen werden vorgestellt. Zwei der Werkzeuge können Ausgaben in unterschiedlichen Schemas erzeugen. Diese werden im letzten Abschnitt beschrieben.

Discrete Sampling Geometry

DSG-Features (Discrete Sampling Geometry) sind multidimensionale Features, die im NetCDF-Format gespeichert werden. DSG-Datasets weisen im Vergleich mit der Raum-Zeit-Region, in der Stichproben erfasst werden, eine geringere Dimensionalität auf. Es sind in der Regel Pfade durch Raum und Zeit wie Zeitserien, vertikale Profile und Flugbahnen. Sehen Sie sich beispielsweise das folgende schematische Diagramm an, in dem vertikale Profile von Meeresdaten dargestellt werden. Die DSG-Datasets sind normalerweise Feature-Sammlungen, in denen das Wort Feature für ein einzelnes DSG-Beispiel steht (beispielsweise für eine einzelne Flugbahn).

Schematisches Diagramm der vertikalen Profile von Meeresdaten
Ein schematisches Diagramm zeigt, wie vertikale Meeresprofile über Sensoren mithilfe von Schiffen erfasst werden.

Eine netCDF-Datei enthält normalerweise Dimensionen, Variablen und Attribute. Eine DSG-Sammlung wird über Instanzvariablen (die eine DSG-Instanz eindeutig identifizieren können) und Beobachtungsvariablen (die die beobachteten Daten enthalten) identifiziert. Mit der Instanzdimension (i) wird ein bestimmtes Feature in einer Sammlung von Features identifiziert. Variablen, die nur über die Instanzdimension verfügen, werden als Instanzvariablen bezeichnet. Sie stellen die Metadaten bereit, mit denen das vollständige einzelne Feature beschrieben wird. Der Begriff Element (o) wird verwendet, um zwischen den Datenelementen zu unterscheiden, die ein einzelnes Feature bilden. Beispielsweise hat in einer Sammlung von Zeitserien-Features jede Zeitserieninstanz (i) zu jedem Zeitpunkt (o) einen Datenwert.

Weitere Informationen zu netCDF-Daten

Weitere Informationen zur Konvention "Climate and Forecast"

Weitere Informationen zur NetCDF-Terminologie

DSG-Feature-Typen

Es gibt neun Typen von DSG-Features. Eine CF-kompatible DSG-Datei enthält nur einen Feature-Typ. Die Beziehungen zwischen den spatiotemporalen Koordinaten des Datasets werden zum Definieren der DSG-Feature-Typen verwendet. Im Dataset wird die Koordinatenvariable oder die zusätzliche Koordinatenvariable, die das Attribut cf_role enthält, als Objekt-ID-Variable identifiziert. Diese Variable muss einen eindeutigen Identifikator für jede Feature-Instanz bereitstellen, und mit der Dimension dieser Variablen wird die Instanzdimension bestimmt.

In ArcGIS Pro können die Werkzeuge NetCDF-Profile in Feature-Class, NetCDF-Zeitserie in Feature-Class und NetCDF-Flugbahnen in Feature-Class drei Typen von DSG-Features lesen: Profile, Zeitserien bzw. Flugbahnen. Diese Werkzeuge sind im NetCDF-Toolset in der Toolbox "Multidimensional" verfügbar.

Profil

Ein Profil ist ein sortierter Satz von Datenpunkten entlang einer vertikalen Linie bei einer festen horizontalen Position und einem festen Zeitpunkt. Profildaten sind eine Reihe von verbundenen Beobachtungen entlang einer vertikalen Linie, z. B. Atmosphären- oder Meereserkundung. Die logische Struktur von Profildaten enthält zwei Teile:

  • Beobachtungsvariable mit Instanz- und Elementdimensionen: data(i,o)
  • Obligatorische Koordinatenvariablen: x(i), y(i), z(o) und t(i)

Eine DSG-Profildatendatei kann ein einzelnes oder mehrere Profil-Features enthalten. Die Anzahl der Profile wird durch die Instanzdimension angegeben. Profile können mehrere Instanzvariablen aufweisen. Es muss mindestens eine Instanzvariable (eines beliebigen Datentyps) vorhanden sein, bei der das Attribut cf_role auf profile_id festgelegt ist. Mit dem Wert in dieser Instanzvariablen wird ein Feld in der Ausgabe-Feature-Class erstellt. Verwenden Sie den Parameter Instanzvariablen im Werkzeug NetCDF-Profile in Feature-Class, um andere Instanzvariablen auszuwählen und zur Ausgabe-Feature-Class hinzuzufügen. Wenn eine DSG-Profildatendatei mehrere Beobachtungsvariablen aufweist, verwenden Sie den Parameter Beobachtungsvariablen, um sie auszuwählen und zur Ausgabetabelle hinzuzufügen.

Erkunden eines Profils in einer NetCDF-Datei

Sehen Sie sich ein Beispiel für ein Profil einer atmosphärischen Erkundung an. Verwenden Sie die Variablen "pressure(i,o)", "temperature(i,o)" und "humidity(i,o)" als Beobachtungsvariablen im Werkzeug. Sie sind über die Instanz- ("profile") oder die Elementdimension ("z") mit den obligatorischen Koordinatenwerten "time(i)", "lat(i)", "lon(i)" und "z(o)" verknüpft. Die Variable "profile" ist die Instanzvariable, bei der das Attribut cf_role auf profile_id festgelegt ist. Sowohl die Instanz- ("profile") als auch die Elementdimension ("z") können die unbegrenzte NetCDF-Dimension sein.

dimensions:
      z = 42 ;
      profile = 142 ;

   variables:
      int profile(profile) ;
          profile:cf_role = "profile_id";
      double time(profile);
          time:standard_name = "time";
          time:long_name = "time" ;
          time:units = "days since 1970-01-01 00:00:00" ;
      float lon(profile);
          lon:standard_name = "longitude";
          lon:long_name = "longitude" ;
          lon:units = "degrees_east" ;
      float lat(profile);
          lat:standard_name = "latitude";
          lat:long_name = "latitude" ;
          lat:units = "degrees_north" ;
      float z(z) ;
          z:standard_name = “altitude”;
          z:long_name = "height above mean sea level" ;
          z:units = "km" ;
          z:positive = "up" ;
          z:axis = "Z" ;  
      float pressure(profile, z) ;
          pressure:standard_name = "air_pressure" ;
          pressure:long_name = "pressure level" ;
          pressure:units = "hPa" ;
          pressure:coordinates = "time lon lat z" ;
      float temperature(profile, z) ;
          temperature:standard_name = "surface_temperature" ;
          temperature:long_name = "skin temperature" ;
          temperature:units = "Celsius" ;
          temperature:coordinates = "time lon lat z" ;
      float humidity(profile, z) ;
          humidity:standard_name = "relative_humidity" ;
          humidity:long_name = "relative humidity" ;
          humidity:units = "%" ;
          humidity:coordinates = "time lon lat z" ;

Zeitserien

Eine Zeitserie ist eine Serie von Datenpunkten an derselben räumlichen Position mit monoton zunehmenden Zeiten. Zeitseriendaten werden über Zeiträume bei verschiedenen diskontinuierlichen Punkten oder räumlichen Positionen erfasst. Die logische Struktur von Zeitseriendaten enthält zwei Teile:

  • Beobachtungsvariable mit Instanz- und Elementdimensionen: data(i,o)
  • Obligatorische Koordinatenvariablen: x(i), y(i), z(i, o) und t(i)

Ähnlich wie ein DSG-Profil kann auch eine DSG-Zeitseriendatendatei ein einzelnes oder mehrere Zeitserien-Features enthalten. Die Anzahl der Zeitserien wird ebenfalls durch die Instanzdimension angegeben. Zudem sind mehrere Instanzvariablen und Beobachtungsvariablen möglich. Es muss mindestens eine Instanzvariable (eines beliebigen Datentyps) vorhanden sein, bei der das Attribut cf_role auf timeseries_id festgelegt ist. Verwenden Sie den Parameter Instanzvariablen im Werkzeug NetCDF-Zeitserie in Feature-Class, um andere Instanzvariablen auszuwählen und zur Ausgabe-Feature-Class hinzuzufügen. Verwenden Sie den Parameter Beobachtungsvariablen, um zusätzliche Beobachtungsvariablen auszuwählen und zur Ausgabetabelle hinzuzufügen.

Erkunden einer Zeitserie in einer NetCDF-Datei

Sehen Sie sich das Beispiel der Zeitserie einer Wetterstation an. "humidity(i,o)" ist die Beobachtungsvariable, die als Parameterwert Beobachtungsvariablen im Werkzeug verwendet wird. Sie ist über die Instanz- ("station") oder die Elementdimension ("time") mit den obligatorischen Koordinatenwerten "time(o)", "lat(i)", "lon(i)" und "alt(i)" verknüpft. Die Variable "station_name" ist die Instanzvariable, bei der das Attribut cf_role auf timeseries_id festgelegt ist. Sowohl die Instanz- ("station") als auch die Elementdimension ("time") können die unbegrenzte NetCDF-Dimension sein.

dimensions:
       station = 10 ;  // measurement locations
       time = UNLIMITED ;

   variables:
     float humidity(station,time) ;
         humidity:standard_name = "specific humidity" ;
         humidity:coordinates = "lat lon alt station_name" ;
         humidity:_FillValue = -999.9f;
     double time(time) ;
         time:standard_name = "time";
         time:long_name = "time of measurement" ;
         time:units = "days since 1970-01-01 00:00:00" ;
     float lon(station) ;
         lon:standard_name = "longitude";
         lon:long_name = "station longitude";
         lon:units = "degrees_east";
     float lat(station) ;
         lat:standard_name = "latitude";
         lat:long_name = "station latitude" ;
         lat:units = "degrees_north" ;
     float alt(station) ;
         alt:long_name = "vertical distance above the surface" ;
         alt:standard_name = "height" ;
         alt:units = "m";
         alt:positive = "up";
         alt:axis = "Z";
     string station_name(station) ;
         station_name:long_name = "station name" ;
         station_name:cf_role = "timeseries_id";

Flugbahn

Eine Flugbahn ist eine Serie von Datenpunkten entlang eines Pfades durch den Raum mit monoton zunehmenden Zeiten. Flugbahndaten werden entlang diskontinuierlicher Pfade durch den Raum erfasst. Jeder Pfad bildet eine verbundene Reihe von Punkten, die als Flugbahn bezeichnet wird, z. B. entlang der Route eines Flugzeugs oder Schiffs. Die logische Struktur von Flugbahndateien enthält zwei Teile:

  • Beobachtungsvariablen: data(i,o)
  • Obligatorische Koordinatenvariablen: x(i,o), y(i,o), z(i,o) und t(i,o)

Ähnlich wie DSG-Profildaten oder DSG-Zeitseriendaten kann auch eine DSG-Flugbahndatendatei ein einzelnes oder mehrere Flugbahn-Features enthalten. Es muss mindestens eine Instanzvariable (eines beliebigen Datentyps) vorhanden sein, bei der das Attribut cf_role auf trajectory_id festgelegt ist.

Erkunden einer Flugbahn in einer NetCDF-Datei

Sehen Sie sich das Beispiel der Flugbahn eines Wetterballons an. "NO3(i,o)" und "O3(i,o)" sind Beobachtungsvariablen, die über die Instanz- ("trajectory") und die Elementdimension ("obs") mit den obligatorischen Koordinatenvariablen "time(i,o)", "lat(i,o)", "lon(i,o)" und "z(i,o)" verknüpft sind. Die Variable "trajectory" ist die Instanzvariable, bei der das Attribut cf_role auf trajectory_id festgelegt ist. Sowohl die Instanz- ("trajectory") als auch die Elementdimension ("obs") können die unbegrenzte NetCDF-Dimension sein.

dimensions:
      obs = 1000 ;
      trajectory = 77 ;

   variables:
      string trajectory(trajectory) ;
          trajectory:cf_role = "trajectory_id";
          trajectory:long_name = "trajectory name" ;
      double time(trajectory, obs) ;
          time:standard_name = "time";
          time:long_name = "time" ;
          time:units = "days since 1970-01-01 00:00:00" ;
      float lon(trajectory, obs) ;
          lon:standard_name = "longitude";
          lon:long_name = "longitude" ;
          lon:units = "degrees_east" ;
      float lat(trajectory, obs) ;
          lat:standard_name = "latitude";
          lat:long_name = "latitude" ;
          lat:units = "degrees_north" ;
      float z(trajectory, obs) ;
          z:standard_name = “altitude”;
          z:long_name = "height above mean sea level" ;
          z:units = "km" ;
          z:positive = "up" ;
          z:axis = "Z" ;
      float O3(trajectory, obs) ;
          O3:standard_name = “mass_fraction_of_ozone_in_air”;
          O3:long_name = "ozone concentration" ;
          O3:units = "1e-9" ;
          O3:coordinates = "time lon lat z" ;
      float NO3(trajectory, obs) ;
          NO3:standard_name = “mass_fraction_of_nitrate_radical_in_air”;
          NO3:long_name = "NO3 concentration" ;
          NO3:units = "1e-9" ;
          NO3:coordinates = "time lon lat z" ;

Koordinatenbezugssystem

Jedes Feature in einer DSG-Datei muss einer erweiterbaren Sammlung von Instanzvariablen zugeordnet werden, die das Feature eindeutig identifizieren und bei Bedarf andere Metadaten bereitstellen, um es zu beschreiben. Jedes Element von jedem Feature muss mit dessen Raum- und Zeitkoordinaten und mit dem Feature, das es enthält, verknüpft werden. Das Attribut coordinates muss jeder Beobachtungsvariablen angefügt werden, um die spatiotemporalen Koordinatenvariablen zu kennzeichnen, die zur Geolokalisierung der Daten erforderlich sind. Das an Beobachtungsvariablen angefügte Attribut grid_mapping wird in vielen Fällen auch verwendet, um räumliche Koordinatenwerte in DSG-Dateien anzugeben.

Um ein Koordinatenbezugssystem (CRS) explizit zu deklarieren, kann eine Grid-Mapping-Variable über ein einzelnes oder mehrere Attribute definiert werden. Mit dem Attribut epsg_code in der Grid-Mapping-Variablen kann ein CRS angegeben werden. Beispielsweise kann das World Geodetic System 1984 (WGS84), das häufig im GPS-Satellitennavigationssystem verwendet wird, wie folgt angegeben werden:

int crs ; 
    crs:epsg_code = "EPSG:4326" ;

Die Grid-Mapping-Variablenattribute "esri_pe_string", "crs_wkt" und "spatial_ref" können verwendet werden, um eine Zeichenfolge mit dem Typ "Well-Known Text 1" (WKT 1) oder "Well-Known Text 2" (WKT 2) zu definieren. ArcGIS-Produkte verwenden normalerweise WKT 1. Da die Werkzeuge beides unterstützen, kann jede Variante für den Wert dieses Attributs verwendet werden. Weitere Informationen zu den Formatunterschieden sind in einer PDF-Datei mit dem Protokoll des technischen Esri Workshops Coordinate System Standards: A Primer to Understanding the Standards and Their Implementation in the ArcGIS Platform verfügbar.

Wenn mehrere Attribute in der Grid-Mapping-Variablen vorhanden sind, wird mithilfe der folgenden Prioritätsreihenfolge für das Schema ein Raumbezug konstruiert:

  1. EPSG-Code
  2. Benanntes projiziertes Koordinatensystem (PCS)
  3. Benanntes geographisches Koordinatensystem (GCS) und Projektionsparameter
  4. Sphäroid oder Kugelradius und Projektionsparameter
  5. Horizontales Datum und Projektionsparameter
  6. Benanntes GCS und Projektionsparameter
  7. Sphäroid oder Kugelradius und Projektionsparameter
  8. Horizontales Datum und Projektionsparameter

Wenn das Koordinatensystem mit den Optionen 1 und 2 angegeben wird, werden alle anderen Grid-Mapping-Attribute ignoriert. Die Optionen 3, 4 und 5 werden zum Konstruieren eines GCS und die Optionen 6, 7 und 8 zum Konstruieren eines PCS verwendet.

Auch wenn Grid Mapping zum Angeben von PCS und GCS verwendet werden kann, unterscheiden sich die Details. Bei der Angabe eines GCS wird eine Grid-Mapping-Variable üblicherweise verwendet, um die Darstellung der Erde (Datum) zu definieren (WGS84, Ellipsoid, Kugel usw.). Bei der Angabe eines PCS (die horizontalen räumlichen Koordinaten sind Ostwert und Nordwert in einer Kartenprojektion) muss eine Grid-Mapping-Variable mehr Details einer bestimmten Kartenprojektion eindeutig deklarieren.

Die folgende Tabelle zeigt, wie ein grid_mapping_name einer Projektion zugeordnet wird, die häufig von ArcGIS-Produkten verwendet wird.

Grid-Mapping-NameEsri Projektionsname (und Esri WKID)

albers_conical_equal_area

43007 Albers

azimuthal_equidistant

43032 Azimuthal_Equidistant

lambert_azimuthal_equal_area

43033 Lambert_Azimuthal_Equal_Area

lambert_conformal_conic

43020 Lambert_Conformal_Conic

lambert_cylindrical_equal_area

43034 Cylindrical_Equal_Area

mercator

43069 Mercator_Variant_A (Maßstabsfaktor und Mittelmeridian) oder 43004 Mercator (Standardparallele und Mittelmeridian)

oblique_mercator

43037 Hotine_Oblique_Mercator_Azimuth_Center

Orthographic

43058 Lokal

polar_stereographic

43066 Polar_Stereographic_Variant_A (scale_factor_at_projection_origin) oder 43067 Polar_Stereographic_Variant_B (Standardparallele)

Sinusoidal

43008 Sinusoidal

transverse_mercator

43006 Transverse_Mercator

Alle in der obigen Tabelle aufgeführten Grid-Mapping-Namen weisen einen eindeutigen Satz von Attributen auf, mit denen Werte zu den Parametern der Zuordnung zugewiesen werden. Da viele Attribute von mehreren Zuordnungen verwendet werden, ist in der folgenden Tabelle angegeben, wie sie Esri Projektionsparametern zugeordnet sind.

Grid-Mapping-AttributnameName und Index der Projektionsparameter

false_easting

0 False_Easting

false_northing

1 False_Northing

longitude_of_central_meridian

2 Central_Meridian

latitude_of_projection_origin

6 Latitude_Of_Origin

longitude_of_projection_origin

2 Central_Meridian

scale_factor_at_projection_origin

5 Scale_Factor

azimuth_of_central_line

7 Azimuth

standard_parallel

3 Standard parallel 1, Latitude of 1st point

4 Standard parallel 2, Latitude of 2nd point

straight_vertical_longitude_from_pole

2 Central_Meridian

scale_factor_at_central_meridian

5 Scale_Factor

Zusätzlich zu einem horizontalen Koordinatensystem müssen Sie auch ein vertikales Koordinatensystem (VCS) angeben, da 2D- oder 3D-Feature-Classes ausgegeben werden können. Normalerweise ist ein VCS ein Kombination aus vertikalem Datum, einer linearen Maßeinheit und der Richtung (nach oben oder unten), in der vertikale Koordinaten zunehmen. ArcGIS-Produkte verwenden die Einheiten und die Achsenrichtung, um die Daten in einer Szenenansicht richtig darzustellen. Ein VCS ist erforderlich, wenn eine der Koordinatenvariablen, die konvertiert werden, vertikal ist und eine lineare Einheit (z. B. keine Einheit für Druck) angibt.

Ein VCS kann auf verschiedene Arten angegeben werden.

Sie können dazu einen Standardnamen verwenden, der eine standardmäßige Hydrografischnull angibt. In diesem Fall ist keine weitere Angabe eines vertikalen Datums erforderlich. Angaben für Hydrografischnull sind beschreibende Metadaten. Wenn das vertikale Datum eines Datasets Hydrografischnull ist, kann es nicht in ein anderes vertikales Datum transformiert werden. Mit den folgenden Standardnamen wird Hydrografischnull ausgewählt:

  • tidal_sea_surface_height_above_lowest_astronomical_tide
  • tidal_sea_surface_height_above_mean_higher_high_water
  • tidal_sea_surface_height_above_mean_lower_low_water
  • tidal_sea_surface_height_above_mean_low_water_springs
  • tidal_sea_surface_height_above_mean_sea_level

Eine weitere Möglichkeit ist die Verwendung der Attribute esri_pe_string, crs_wkt und spatial_ref mit einem zusammengesetzten WKT-Wert, um ein VCS anzugeben.

Eine dritte Möglichkeit ist die Verwendung des Attributs geoid_name oder geopotential_datum_name in der Variablen "grid_mapping". Die aktuelle Liste der unterstützten Namen für das vertikale Datum ist als PDF-Datei auf der ArcGIS Developer-Site verfügbar.

Hinweis:

Sie müssen bei einem ArcGIS Online-Konto angemeldet sein, um die PDF-Datei herunterzuladen.

"Instantaneous_Water_Level_Height" (WKID 5829) oder "Instantaneous_Water_Level_Depth" (WKID 5831) werden als standardmäßiges vertikales Datum verwendet, wenn keines angegeben wurde. Wie bei Hydrografischnull stellen sie beschreibende Metadaten dar und unterstützen direkt keine automatisierten Konvertierungen in ein anderes vertikales Datum. Sie sind nützlich, um die vertikale Einheit und die vertikale Richtung der ansteigenden Koordinaten zu erhalten.

Hinweis:

Das Attribut standard_name der vertikalen Koordinatenvariablen muss mit dem angegebenen Datum kompatibel sein. Beispiel: Wenn der Standardname height_above_reference_ellipsoid in Kombination mit einem geoid_name-Attribut mit dem Wert EGM2008_Geoid verwendet wird, tritt ein Validierungsfehler im Werkzeug auf, da sie sich widersprechen.

In einigen Fällen sind dimensionale vertikale Koordinaten eine Funktion der horizontalen Position sowie der Parameter, die von der vertikalen Position abhängen. Diese parametrischen vertikalen Koordinaten werden gegenwärtig von den DSG-Werkzeugen nicht unterstützt. Zusätzliche Informationen dazu finden Sie im Abschnitt 4.3.3 Parametric Vertical Coordinate auf der Site der CF-Konvention.

Ergänzende Metadaten für Klima und Prognose

Die CF-Konvention wird verwendet, um Metadaten zu definieren, die eine definitive Beschreibung der Daten in jeder Variable und ihrer räumlichen und zeitlichen Eigenschaften bereitzustellen. Mithilfe dieser Konventionen können Sie bestimmen, welche Mengen aus unterschiedlichen Datenquellen vergleichbar sind.

Weitere Informationen zu NetCDF-Konventionen

Der Name der Konvention wird in einer netCDF-Datei als globales Attribut dargestellt. Um von den DSG-Werkzeugen gelesen zu werden, müssen die DSG-Eingabedaten der CF-Konvention 1.6 oder höher folgen.

Viele NetCDF-Dateien enthalten DSG-Instanz- und -Beobachtungsvariablen, die auf einer früheren CF-Konvention basieren oder denen erforderliche Attribute fehlen. Um diese nicht mit CF kompatiblen NetCDF-Dateien als Eingabe für ArcGIS Pro-DSG-Werkzeuge zu verwenden, geben Sie mit dem Parameter Klima- und Prognose-Eingabemetadaten eine zusätzliche Metadaten-XML-Datei an. Die Metadaten-Datei muss mit NetCDF Markup Language (NcML) verfasst sein.

NetCDF Markup Language

NcML ist eine XML-Repräsentation von NetCDF-Metadaten, die es Ihnen ermöglicht, Metadaten zu definieren oder neu zu definieren, die in der Eingabe-NetCDF-Datei fehlen oder falsch sind. Mit einer NcML-Datei können Sie Variablen ändern, löschen und neu strukturieren.

Der Parameter Klima- und Prognose-Eingabemetadaten ermöglicht es Ihnen, nicht mit CE kompatible NetCDF-Dateien zu verwenden, ohne die Eingabe-NetCDF-Dateien mit CF kompatibel machen zu müssen. Sie müssen keine individuelle NcML für jede nicht kompatible Eingabe-NetCDF-Datei erstellen. Eine NcML wird auf alle Eingaben angewendet.

Weitere Informationen zu NcML

In den folgenden Abschnitten wird beschrieben, wie gängige Szenarien mit NcML gelöst werden.

Fehlende Koordinaten – Beispiel

Sehen Sie sich die folgende Beobachtungsvariable "Tmax" (tägliche Höchsttemperatur) in einer DSG-Datei der Zeitserie einer Wetterstation an. Ihr ist kein Koordinatenattribut angefügt.

float Tmax(stn_num, time) ;
    Tmax:units = "C" ;
    Tmax:long_name = "daily max temperature" ;
    Tmax:_FillValue = 1.e+20f ;

Damit die Daten von einem DSG-Werkzeug gelesen werden können, fügen Sie den folgenden Text zur Klima- und Prognose-Metadaten-XML-Datei hinzu:

<variable name="Tmax">    
   <attribute name="coordinates" type="String" value="time lon lat"/>  
</variable>

In den obigen NcML-Korrekturen ist die Variable elev nicht aufgeführt, daher wird eine 2D-Feature-Class generiert. Um eine 3D-Feature-Class abzurufen, fügen Sie die Variable elev hinzu.

<variable name="Tmax">    
   <attribute name="coordinates" type="String" value="time lon lat elev"/>  
</variable>

Fehlendes Grid Mapping – Beispiel

Die folgende DSG-Datei stellt Fischerei-Verlaufsdaten dar. Es gibt keine Grid-Mapping-Variable.

dimensions:
	node = 19483 ;
	time = UNLIMITED ; // (24 currently)
variables:
	float X(node) ;
		X:long_name = "East-West Coordinate" ;
		X:projection = "UTM Zone 10N" ;
		X:units = "meters" ;
	float Y(node) ;
		Y:long_name = "North-South Coordinate" ;
		Y:projection = "UTM Zone 10N" ;
		Y:units = "meters" ;
	float time(time) ;
		time:units = "seconds since 2017-01-01 00:00" ;
		time:long_name = "Time" ;
		time:calendar = "Local" ;
	float salinity(time, siglay, node) ;
		salinity:long_name = "Salinity" ;
		salinity:units = "parts per thousand" ;
		salinity:grid = "fvcom_grid" ;

Um das horizontale Koordinatensystem der Ausgabe als "UTM Zone 10N" (epsg_code:26910) zu definieren, fügen Sie die folgende Variable hinzu:

<variable name="crs" type="char">
   <attribute name="epsg_code" type="String" value="EPSG:26910"/>
</variable>

Ändern Sie dann die Beobachtungsvariable (Salzgehalt), um sie mit dieser Variablen zu verknüpfen:

<variable name="salinity">    
   <attribute name="grid_mapping" type="String" value="crs"/>  
</variable>

"cf-role" nicht richtig definiert – Beispiel

Eine DSG-Datei kann ein cf_role-Attribut aufweisen, das nicht richtig definiert wurde. Im folgenden DSG-Verlaufsbeispiel weist die Instanzkoordinate das Attribut cf_role auf, das falsch als profile_id gekennzeichnet ist (es sollte als trajectory_id gekennzeichnet sein).

int wod_unique_cast(casts) ;
   wod_unique_cast:cf_role = "profile_id" ;

Um eine vordefinierte DSG-Profildatei in eine DSG-Verlaufsdatei zu ändern, fügen Sie die folgende Variable hinzu:

<variable name="wod_unique_cast">
   <attribute name="cf_role" type="string" value="trajectory_id"/>
</variable>

Ausgaben von DSG-Werkzeugen

Alle DSG-Werkzeuge erstellen eine primäre Ausgabe-Feature-Class und eine oder zwei optionale Ausgaben. Wenn keine der Beobachtungsvariablen ausgewählt ist, wird nur eine Ausgabe-Feature-Class erstellt. Die Ausgabe-Feature-Class weist mindestens zwei zusätzliche Felder auf. Das eine Feld ist InstanceID. Dies ist ein eindeutiger Identifikator für DSG-Features, die von DSG-Werkzeugen erstellt werden. Ein weiteres wird aus der Instanzvariablen in der Eingabe-NetCDF-Datei erstellt, die das Attribut cf_role enthält. Der Feldaliasname ist mit dem Variablennamen identisch.

Um die Art des Ausgabe-Features von DSG-Werkzeugen zu veranschaulichen, werden im Folgenden Beispiele für die ersten Datensätze in der Attributtabelle der Ausgabe-Feature-Class dargestellt. In jedem Fall wird das Werkzeug angegeben, und die jeweils erwähnten Felder sind hervorgehoben. Diese Beispiele werden mit den Standardeinstellungen für die einzelnen Werkzeuge erstellt (das standardmäßige Ausgabeschema für das Werkzeug NetCDF-Profile in Feature-Class ist beispielsweise Beobachtung und Instanz).

Das erste Beispiel stammt aus der Attributtabelle einer Ausgabe-Feature-Class des Werkzeugs NetCDF-Zeitserie in Feature-Class, und es werden Daten einer Wetterstation verwendet. Die zusätzlichen Felder sind InstanceID und stnID, dabei ist das Feld stnID der Name der Instanzvariablen, bei der das Attribut cf_role auf timeseries_id festgelegt ist.

Die Felder "InstanceID" und "stnID" in der Attributtabelle der Ausgabe-Feature-Class des Werkzeugs "NetCDF-Zeitserie in Feature-Class"

Die Attributtabelle der Ausgabe-Feature-Class des Werkzeugs NetCDF-Profile in Feature-Class weisen das zusätzliche Feld Time (UTC) auf, das die Zeit der Erstellung der Daten in den einzelnen Profilinstanzen angibt.

Das Feld "Time(UTC)" in der Attributtabelle der Ausgabe-Feature-Class des Werkzeugs "NetCDF-Profile in Feature-Class"

Die Attributtabelle der Ausgabe-Feature-Class des Werkzeugs NetCDF-Flugbahnen in Feature-Class weist die beiden zusätzlichen Felder From Time (UTC) und To Time (UTC) auf, die die Start- und Endzeit der einzelnen Flugbahnen angeben. Diese Zeitfelder werden aus der Zeitkoordinatenvariablen der Eingabe-NetCDF-Dateien erstellt. Wie im Feldaliasnamen angegeben, haben diese Zeitfelder das UTC-Format (koordinierte Weltzeit).

Die Felder "FromTime(UTC)" und "ToTime(UTC)" in der Attributtabelle der Ausgabe-Feature-Class des Werkzeugs "NetCDF-Flugbahnen in Feature-Class"

Für jede im Werkzeug angegebene Instanzvariable wird ein zusätzliches Feld zur Attributtabelle der Ausgabe-Feature-Class hinzugefügt. Der Feldaliasname ist mit dem Standardnamen der Variablen identisch, sofern vorhanden. Andernfalls wird der Langname der Variablen oder der Variablenname als Feldaliasname verwendet. Die Attributtabelle der Ausgabe-Feature-Class des Werkzeugs NetCDF-Zeitserie in Feature-Class, das die Daten der Wetterstation verwendet, weist das zusätzliche Feld Station Name auf. Dies ist der Langname der ausgewählten Instanzvariablen stnName.

Ausgewählte Instanzvariable "stnName", die als Feld "StationName" in der Attributtabelle der Ausgabe-Feature-Class des Werkzeugs "NetCDF-Zeitserie in Feature-Class" hinzugefügt wurde

Zur Angabe einer Beobachtungsvariablen müssen Sie den Namen der Ausgabetabelle und optional den Namen eines Feature-Layers angeben. Die optionale Feature-Layer-Ausgabe ist für die Werkzeuge NetCDF-Profile in Feature-Class und NetCDF-Zeitserie in Feature-Class verfügbar.

Die Ausgabetabelle weist mindestens zwei zusätzliche Felder auf. Das erste Feld ist ObservationID, das vom DSG-Werkzeug erstellt wird, um für jeden Beobachtungsdatensatz eine eindeutige ID zuzuweisen. Das zweite Feld ist InstanceID. Es ist identisch mit der Feature-Class-Ausgabe und wird als Fremdschlüssel verwendet, um die Instance-Feature-Class mit der Beobachtungstabelle zu verbinden.

Abhängig vom Werkzeug enthält die Tabellenausgabe unterschiedliche zusätzliche Felder. Koordinatenvariablen, die mit den Elementdimensionen verknüpft sind, werden zu neuen Feldern in der Ausgabetabelle. Ähnlich wie die Art des Ausgabe-Features von DSG-Werkzeugen veranschaulicht wurden, werden im Folgenden auch Beispiele für die ersten Datensätze in der Ausgabetabelle dargestellt. In jedem Fall wird das Werkzeug angegeben, und die jeweils erwähnten Felder sind hervorgehoben.

Ein Feld Time (UTC), das aus der Zeitkoordinate erstellt wurde, wird für das Werkzeug NetCDF-Zeitserie in Feature-Class hinzugefügt. Es gibt die Zeit der Erfassung der einzelnen Daten in der Zeitserie an. Das folgende Beispiel ist eine Ausgabetabelle, die aus den Daten der Wetterstation mit diesem Werkzeug erstellt wurde. Die zusätzlichen Felder sind ObservationID, InstanceID, Time (UTC) und daily max temperature (der Standardname der ausgewählten Beobachtungsvariablen Tmax).

Ein Beispiel für die Ausgabetabelle des Werkzeugs "NetCDF-Zeitserie in Feature-Class"

Zur Ausgabetabelle von NetCDF-Flugbahnen in Feature-Class werden die Felder Time (UTC), From Time (UTC) und To Time (UTC) sowie ggf. ausgewählte Beobachtungsvariablen hinzugefügt. Die Felder From Time (UTC) und To Time (UTC) sind die zeitlichen Mittelpunkte zwischen Beobachtungen.

Ein Beispiel für die Ausgabetabelle des Werkzeugs "NetCDF-Flugbahnen in Feature-Class"

Ein Feld Z wird für das Werkzeug NetCDF-Profile in Feature-Class hinzugefügt, um anzugeben, in welcher Höhe oder Tiefe die einzelnen Daten in einem Profil erfasst wurden. Die ausgewählten Beobachtungsvariablen werden ebenfalls als neue Felder hinzugefügt.

Ein Beispiel für die Ausgabetabelle des Werkzeugs "NetCDF-Profile in Feature-Class"

Wenn der Parameter Ausgabe-Join-Layer angegeben wurde, erstellen die Werkzeuge NetCDF-Zeitserie in Feature-Class und NetCDF-Profile in Feature-Class einen optionalen Feature-Layer anhand des im Parameter angegebenen Namens. Der Ausgabe-Feature-Layer ist die Ausgabe-Feature-Class und wird mit dem Feld InstanceID als Schlüssel mit der Ausgabetabelle verbunden. Im Folgenden ist ein Teil der Attributtabelle des Ausgabe-Feature-Layers des Werkzeugs NetCDF-Profile in Feature-Class dargestellt:

Ein Beispiel für die Attributtabelle des Ausgabe-Feature-Layers des Werkzeugs "NetCDF-Profile in Feature-Class"

Angeben eines geeigneten Ausgabeschemas

Die DSG-Werkzeuge können basierend auf der vorgesehenen Anwendung unterschiedliche Typen von Ausgabeschemas erzeugen. Das Werkzeug NetCDF-Zeitserie in Feature-Class erzeugt nur einen Schematyp. Die Werkzeuge NetCDF-Profile in Feature-Class und NetCDF-Flugbahnen in Feature-Class enthalten Parameter, mit denen Sie einen Schematyp auswählen können.

Ausgabeschema des Werkzeugs "NetCDF-Profile in Feature-Class"

Im Werkzeug NetCDF-Profile in Feature-Class können Sie mit dem Parameter Ausgabeschema den Ausgabeschematyp auswählen: Beobachtung und Instanz, Route und Objekt oder 3D-Punkt. Die Option Instanz und Beobachtung ist der Standardschematyp. Die Ausgaben dieses Parameters sind oben im Abschnitt mit den Ausgaben der DSG-Werkzeuge beschrieben.

Wenn der Parameter Ausgabeschema auf Route und Objekt festgelegt ist, erstellt das Werkzeug eine Ausgabe-Feature-Class und eine Ausgabe-Objekttabelle mit unterschiedlichen Strukturen. Eine optionale Ausgabe ist nicht verfügbar. Die Ausgabe-Feature-Class ist eine vertikale 3D-Polylinie, wobei die Tiefe (Z-Werte) als Messwert an den Stützpunkten verwendet wird. Der Ausgabe-Feature-Class werden die gleichen Felder hinzugefügt, die mit der Option Instanz und Beobachtung hinzugefügt werden.

Die Ausgabetabelle enthält die beiden neuen Felder FromZ und ToZ, die für lineare Objekte entlang der Profile verwendet werden können. Die Feldwerte FromZ und ToZ sind Mittelpunkte zwischen Z-Werten von Beobachtungen. Eine Ausnahme bilden der erste Wert FromZ und der letzte Wert ToZ, die mit den Z-Werten identisch sind. Die Ausgabetabelle dieses Schemas kann auch in Werkzeugen für die lineare Referenzierung verwendet werden, um lineare Objekt-Features zu erstellen.

Weitere Informationen zur linearen Referenzierung

Die folgende Abbildung zeigt einen Teil einer Beispiel-Ausgabeattributtabelle:

Zusätzliche Felder "FromZ" und "ToZ" in der Ausgabetabelle des Werkzeugs "NetCDF-Profile in Feature-Class" mit "Route und Objekt" als Ausgabeschema

Wenn der Parameter Ausgabeschema auf 3D-Punkt festgelegt ist, wird eine 3D-Point-Feature-Class erstellt (Tabellen oder optionale Join-Layer-Ausgaben sind nicht verfügbar). Die Attributtabelle der Ausgabe-Feature-Class weist im Vergleich mit der Option Instanz und Beobachtung zusätzliche Felder auf, die aus den ausgewählten Beobachtungsvariablen erstellt wurden. Zwar enthält die Attributtabelle der Ausgabe-Feature-Class mit diesem Schema auch das Feld InstanceID, die Werte sind aber nicht alle eindeutig.

Ein Beispiel für eine Attributtabelle der Ausgabe-Feature-Class des Werkzeugs "NetCDF-Profile in Feature-Class" mit dem Ausgabeschema "3D-Punkt"

Die folgenden allgemeinen Richtlinien helfen Ihnen bei der Auswahl des richtigen Schemas.

Die Option Instanz und Beobachtung ist häufig die effizienteste Lösung. Die Ausgabe-Feature-Class behält die Position der einzelnen Profile bei, und die Beobachtungsdaten werden in einer gesonderten Tabelle gespeichert. Obwohl die Beobachtungsdaten in der Ausgabetabelle mit der Ausgabe-Feature-Class verbunden werden können, verhindert das Fehlen einer eindeutigen Objekt-ID jedoch, dass diese Option in Werkzeugen verwendet werden kann, die eine eindeutige ID erfordern.

Wenn die Ausgaben dieses Werkzeugs in einem anderen Werkzeug verwendet werden müssen, für das die Werte im ID-Feld eindeutig sein müssen, nutzen Sie die Option 3D-Punkt. Die resultierende Ausgabe-Feature-Class kann größer als die Ergebnisse sein, wenn die Option Instanz und Beobachtung verwendet wird, und eine längere Verarbeitungsdauer ist möglich.

Verwenden Sie immer, wenn Polylinienausgaben erwartet werden, die Option Route und Objekt. Die vertikalen 3D-Linien können die vertikalen Eigenschaften in jedem Profil besser veranschaulichen.

Ausgabeschema des Werkzeugs "NetCDF-Flugbahnen in Feature-Class"

Im Werkzeug NetCDF-Flugbahnen in Feature-Class sind zwei Ausgabeschematypen mit dem Parameter Ausgabeschema verfügbar: Route und Objekt und Punkt. Die Option Route und Objekt ist der Standardschematyp. Die Ausgaben dieser Option sind oben im Abschnitt mit den Ausgaben der DSG-Werkzeuge beschrieben.

Wenn der Parameter Ausgabeschema auf Punkt festgelegt ist, erstellt das Werkzeug eine 2D- oder 3D-Point-Feature-Class, die die Positionen entlang einer Flugbahn veranschaulicht, bei denen Beobachtungen gemacht wurden. Im unten dargestellten Beispiel für die Attributtabelle einer Ausgabe-Feature-Class wird ein Feld Time (UTC) aus der Zeitkoordinatenvariablen erstellt, nicht die Felder From Time (UTC) und To Time (UTC), die mit der Option Route und Objekt erstellt werden. Felder, die aus den ausgewählten Beobachtungsvariablen erstellt werden, werden ebenfalls aufgenommen.

Zusätzliche Felder "Time(UTC)" und "sea_temperature" in der Attributtabelle einer Ausgabe-Feature-Class des Werkzeugs "NetCDF-Flugbahnen in Feature-Class" mit dem Ausgabeschema "Punkt"

Um den vollständigen Pfad der Flugbahn zu verwenden, legen Sie den Parameter Ausgabeschema auf Route und Objekt fest. Verwenden Sie diese Option, um aus der Ausgabe mit Werkzeugen für die lineare Referenzierung lineare Objekt-Features zu erstellen. Wenn einzelne Punkte der einzelnen Positionen entlang des Tracks erforderlich sind, verwenden Sie die Option Punkt.

Referenzen

  • CF Metadata Conventions. Letzter Zugriff am 18. April 2022 unter "https://cfconventions.org/".
  • NetCDF Conventions. Letzter Zugriff am 18. April 2022 unter "https://www.unidata.ucar.edu/software/netcdf/conventions.html".
  • Annotated Schema for NcML. Letzter Zugriff am 18. April 2022 unter "https://docs.unidata.ucar.edu/netcdf-java/current/userguide/annotated_ncml_schema.html".
  • Basic NcML Tutorial. Letzter Zugriff am 18. April 2022 unter "https://docs.unidata.ucar.edu/netcdf-java/current/userguide/basic_ncml_tutorial.html".

Verwandte Themen