Créer une couche de voxels

Une couche de voxels représente des données volumétriques multidimensionnelles, quadrillées régulièrement. La source de données d’une couche de voxels peut être un fichier netCDF, un paquetage de couche de scènes ou un service de scène. ArcGIS Pro propose plusieurs outils de géotraitement et workflows permettant de créer des sources de données adaptées à une couche de voxels. Différents workflows permettent de créer des données multidimensionnelles à partir d’une entrée ponctuelle en 3D ou d’une analyse géostatistique, ou encore en convertissant des données multidimensionnelles, comme des données raster, pour les visualiser sous forme d’une couche voxels. Pour plus d’informations sur les couches de voxels, reportez-vous à la rubrique Formats de voxel pris en charge et au Forum aux questions.

EntréesTraitement en coursLeçon Apprendre à utiliser ArcGIS

Points

Créer un cube spatio-temporel en agrégeant des points

Visualiser la distanciation sociale en Californie

Points

Interpolation Geostatistical Analyst

Interpoler les mesures de l’oxygène en 3D dans la baie de Monterey

Points

Python netCDF4

Visualiser les unités marines écologiques à l’aide de voxels

netCDF

Explorer et animer des données géologiques avec des voxels

Visualiser et explorer les habitats des récifs coralliens avec des voxels

Raster multidimensionnel (netCDF, GRIB, HDF, CRF)

Copier un raster

Table

Python netCDF4

Créer une couche de voxels à partir d’une entrée ponctuelle à l’aide de l’analyse géostatistique

Vous interpolez et visualisez les données ponctuelles sous la forme d’une couche de voxels. Par exemple, vous pouvez analyser l’évolution dans le temps des niveaux d’oxygène dans une zone d’étude. Dans ArcGIS, une analyse géostatistique permet d’analyser ces types de modèles. Vous pouvez visualiser les mesures d’oxygène dissous relevées à différentes profondeurs et effectuer une interpolation géostatistique 3D afin de prévoir les niveaux d’oxygène dans toute la zone d’étude. Vous pouvez créer un fichier netCDF 3D à partir de l’analyse géostatistique et la visualiser sous la forme d’une couche de voxels dans une scène locale.

  1. Cliquez sur l'onglet Analyse et sur Outils Outils
  2. Dans la fenêtre Geoprocessing (Géotraitement), recherchez Empirical Bayesian Kriging (Krigeage bayésien empirique), cliquez pour ouvrir l’outil correspondant et définissez les paramètres suivants :
    • Input Features (Entités en entrée) : couche d’entités ponctuelles
    • Z Value Field (Champ de la valeur Z) : champ contenant la valeur de hauteur de chaque point.
    • Output Geostatistical Layer (Couche géostatistique en sortie) : couche géostatistique produite
  3. Cliquez sur Exécuter Exécuter.

    La couche géostatistique est produite.

  4. Dans la fenêtre Geoprocessing (Géotraitement), recherchez Couche GA 3D vers NetCDF, cliquez pour ouvrir l’outil et définissez les paramètres suivants :
    • Input 3D Geostatistcal Layer (Couche géostatistique 3D en entrée) : la couche géostatistique de l’étape 3
    • Output netCDF file (Fichier netCDF en sortie) : nom du fichier netCDF en sortie
  5. Cliquez sur Exécuter Exécuter.

    Le fichier netCDF 3D est créé.

  6. Cliquez sur l’onglet Map (Carte) et sur Add Data (Ajouter des données) Ajouter des données.

    Les couches de voxels nécessitent une scène locale active.

  7. Cliquez sur Add Multidimensional Voxel Layer (Ajouter une couche multidimensionnelle de voxels) Ajouter une couche de voxel multidimensionnelle et spécifiez la sortie netCDF créée à l’étape 5.
  8. Cliquez sur  OK.

La couche de voxels apparaît dans la scène.

Créez une couche de voxels à partir d’une entrée ponctuelle à l’aide de l’outil Créer un cube spatio-temporel.

Les données multidimensionnelles peuvent représenter X,Y, et le temps sous forme d’une dimension de hauteur. Par exemple, vous pouvez analyser l’évolution dans le temps des orages dans une zone d’étude. Dans ArcGIS Pro, un cube spatio-temporel permet d’analyser ces types de modèles. Un cube spatio-temporel permet de synthétiser un ensemble de points dans un fichier netCDF en les agrégeant dans des groupes (bins) spatio-temporels. Au sein de chaque groupe, les points sont centrés et les attributs spécifiés sont agrégés. Pour tous les emplacements des groupes, la comptabilisation, ainsi que les valeurs de champ de récapitulation, sont évaluées. Étant donné qu’une couche de voxels représente des données quadrillées régulièrement, la forme de l’agrégation doit être de type quadrillage. Il en résulte une structure de données volumétrique XYT.

  1. Cliquez sur l'onglet Analyse et sur Outils Outils
  2. Dans la fenêtre Geoprocessing (Géotraitement), recherchez Create Space Time Cube By Aggregating Points (Créer un cube spatio-temporel en agrégeant des points), cliquez pour ouvrir l’outil et définissez les paramètres suivants :
    • Input Features (Entités en entrée) : couche d’entités ponctuelles
    • Output Space Time Cube (Cube spatio-temporel en sortie) : le fichier netCDF produit
    • Time Field (Champ temporel) : champ contenant la date et l’heure de chaque point.
    • Time Step Interval (Intervalle temporel) : nombre de secondes, minutes, heures, jours, semaines ou années qui représenteront un seul pas de temps.
    • Distance Interval (Intervalle de distance) : détermine la taille des groupes utilisés pour agréger les entités en entrée.
    • Summary Fields (Champ de récapitulation) : champ numérique contenant les valeurs attributaires qui permettent de calculer les statistiques indiquées lors de l’agrégation dans un cube spatio-temporel.
    • Aggregation Shape Type (Type de forme d’agrégation) : choisissez Fishnet Grid (Quadrillage)
  3. Cliquez sur Exécuter Exécuter.

    Le cube spatio-temporel est produit.

  4. Cliquez sur l’onglet Map (Carte) et sur Add Data (Ajouter des données) Ajouter des données.

    Les couches de voxels nécessitent une scène locale active.

  5. Cliquez sur Add Multidimensional Voxel Layer (Ajouter une couche multidimensionnelle de voxels) Ajouter une couche de voxel multidimensionnelle et spécifiez la sortie netCDF créée à l’étape 3.
  6. Cliquez sur  OK.

La couche de voxels apparaît dans la scène.

Créer une couche de voxels à partir d’un raster multidimensionnel

Les données multidimensionnelles sont livrées dans divers formats. Pour le moment, les couches de voxels prennent uniquement en charge les données netCDF. Vous pouvez exporter les données dans d’autres formats multidimensionnels tels que GRIB, HDF et CRF vers un fichier netCDF à l’aide de l’outil Copy Raster (Copier un raster).

  1. Cliquez sur l'onglet Analyse et sur Outils Outils
  2. Dans la fenêtre Geoprocessing (Géotraitement), recherchez Copy Raster (Copier un raster), cliquez pour ouvrir l’outil correspondant et définissez les paramètres suivants :
    • Input Raster (Raster en entrée) : paramétrez le raster en raster multidimensionnel en entrée.
    •  : paramétrez-le en fichier netCDF en sortie avec l’extension de fichier .nc.
    • No Data Value (Aucune valeur de données) : supprime la valeur par défaut et laisse le champ vide.
    • Format : choisissez NetCDF format (Format netCDF).

    Les couches de voxels exigent que les données soient quadrillées régulièrement.

  3. Cliquez sur Exécuter Exécuter.

    Le fichier netCDF est produit.

  4. Cliquez sur l’onglet Map (Carte) et sur Add Data (Ajouter des données) Ajouter des données.

    Les couches de voxels nécessitent une scène locale active.

  5. Cliquez sur Add Multidimensional Voxel Layer (Ajouter une couche multidimensionnelle de voxels) Ajouter une couche de voxel multidimensionnelle et spécifiez la sortie netCDF créée à l’étape 3.
  6. Cliquez sur  OK.

La couche de voxels apparaît dans la scène.

Créer une couche de voxels à partir d’un fichier CSV

Dans cet exemple, un fichier netCDF est généré à partir d’un fichier CSV. Le fichier CSV comportera cinq colonnes : X, Y, Z, T et Données. Nous partons du principe que le fichier CSV est quadrillé de façon régulière dans toutes les dimensions. Après avoir créé le fichier netCDF, vous pouvez le visualiser sous la forme d’une couche de voxels dans une scène locale.

from netCDF4 import Dataset
import numpy as np
import pandas as pd

#Create a pandas dataframe and insert data from CSV/TEXT file
filePath = "myFile.csv"
dfPoints = pd.read_csv(filePath)

#Sort values to ensure they are in the correct order
dfPoints = dfPoints.sort_values(by=['T','Z','Y','X'])

#Create domain for longitude/latitude
#Each domain has unique values, no repeating numbers, and are sorted (to be monotonic)
xDomain = np.sort(np.unique(dfPoints.iloc[:,0].values)) # 0th column contains x values
yDomain = np.sort(np.unique(dfPoints.iloc[:,1].values)) # 1st column contains y values
zDomain = np.sort(np.unique(dfPoints.iloc[:,2].values)) # 2nd column contains z values
tDomain = np.sort(np.unique(dfPoints.iloc[:,3].values)) # 3rd column contains t values

#Create NetCDF file
outDataSet = Dataset('myNetCDF.nc', 'w', format = 'NETCDF4') # Creates the output NetCDF file
outDataSet.createDimension('x', len(xDomain))                # Creates the x dimension
outDataSet.createDimension('y', len(yDomain))                # Creates the y dimension
outDataSet.createDimension('z', len(zDomain))                # Creates the z dimension
outDataSet.createDimension('t', len(tDomain))                # Creates the t dimension

#Create variables
ncX = outDataSet.createVariable('x', np.float32, 'x') # Create variable x
ncY = outDataSet.createVariable('y', np.float32, 'y') # Create variable y
ncZ = outDataSet.createVariable('z', np.float32, 'z') # Create variable z
ncT = outDataSet.createVariable('t', np.float32, 't') # Create variable t

#Create variable data with dimensions (t,z,y,x). The fill value is set to -99999 which are values to be ignored by client.
ncData = outDataSet.createVariable('data',np.float32,('t','z','y','x'),fill_value = -99999) 

#Assign values
ncX[:] = xDomain[:]
ncY[:] = yDomain[:]
ncZ[:] = zDomain[:]
ncT[:] = tDomain[:]

#The dataframe 'Data' column must be reshaped to match the dimension shapes and placed into the ncData variable
ncData[:,:,:,:]  = np.reshape(
    dfPoints['Data'].values,
    (tDomain.shape[0],zDomain.shape[0],yDomain.shape[0],xDomain.shape[0])
    )

#Assign variable attributes

ncData.long_name = "My test data"

ncZ.positive = 'up'

ncX.standard_name = 'projection_x_coordinate'
ncX.units = 'm'

ncY.standard_name = 'projection_y_coordinate'
ncY.units = 'm'

ncT.units = 'hours since 2000-01-01 00:00:00'

#Assign global attribute. This attribute is to assign a coordinate system.
outDataSet.esri_pe_string = 'PROJCS["ETRS_1989_UTM_Zone_32N_7stellen",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0],AUTHORITY["Esri",102328]]'

outDataSet.close()

Rubriques connexes