Une couche voxel 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 AllSource 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 processus 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 de voxel. 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ées | Traitement en cours | Leçon Apprendre à utiliser ArcGIS |
---|---|---|
Points | Créer un cube spatio-temporel en agrégeant des points | |
Points | Voisin le plus proche 3D, Krigeage bayésien empirique 3D, Couche GA 3D vers NetCDF, IDW 3D | 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 | Créer une couche voxel multidimensionnelle | 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) ou jeu de données raster | Copier un raster, Raster vers NetCDF | |
Tableau | Table vers NetCDF, Python netCDF4 |
Remarque :
L’outil Entité vers NetCDF ne génère pas de sortie adaptée à une couche de voxel.
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. Si une scène locale est active, les outils d’analyse géostatistique génèrent la couche voxel en sortie dans la scène. Les outils compatibles sont Krigeage bayésien empirique 3D, IDW 3D et Voisin le plus proche 3D.
- Cliquez sur l'onglet Analyse et sur Outils
- Dans la fenêtre Geoprocessing (Géotraitement), recherchez Empirical Bayesian Kriging 3D (Krigeage bayésien empirique 3D), 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 à interpoler.
- Elevation Field (Champ d’élévation) : champ contenant une valeur de hauteur pour chaque point.
- Value Field (Champ de valeur) : champ contenant les valeurs mesurées à interpoler.
- Output Geostatistical Layer (Couche géostatistique en sortie) : couche géostatistique produite
- Cliquez sur Exécuter .
La couche géostatistique est produite.
- 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
- Cliquez sur Exécuter .
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 AllSource, 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 x,y,t.
- Cliquez sur l'onglet Analyse et sur Outils
- 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 en entrée à agréger.
- Output Space Time Cube (Cube spatio-temporel en sortie) : fichier netCDF en sortie généré.
- 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ésentent un intervalle temporel.
- Distance Interval (Intervalle de distance) : 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) : sélectionnez Fishnet Grid (Quadrillage).
- Cliquez sur Exécuter .
Le cube spatio-temporel est produit.
- Cliquez sur l’onglet Map (Carte) et sur Add Data (Ajouter des données) .
Les couches de voxels nécessitent une scène locale active.
- Cliquez sur Add Multidimensional Voxel Layer (Ajouter une couche multidimensionnelle de voxels) et spécifiez la sortie netCDF créée à l’étape 3.
- 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).
- Cliquez sur l'onglet Analyse et sur Outils
- 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.
- Output Raster Dataset (Jeu de données raster en sortie) : définissez ce paramètre sur le 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.
- Cliquez sur Exécuter .
Le fichier netCDF est produit.
- Cliquez sur l’onglet Map (Carte) et sur Add Data (Ajouter des données) .
Les couches de voxels nécessitent une scène locale active.
- Cliquez sur Add Multidimensional Voxel Layer (Ajouter une couche multidimensionnelle de voxels) et spécifiez la sortie netCDF créée à l’étape 3.
- Cliquez sur OK.
La couche de voxels apparaît dans la scène.
Créer une couche voxel à partir d’un fichier .csv
Dans cet exemple, un fichier netCDF est généré à partir d’un fichier .csv. Le fichier .csv comporte 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 exécuter l’outil Créer une couche voxel multidimensionnelle et l’enregistrer en tant que fichier de couche à ajouter dans une scène locale.from netCDF4 import Dataset
import numpy as np
import pandas as pd
import arcpy
#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()
# Create the voxel layer
arcpy.md.MakeMultidimensionalVoxelLayer(outDataSet, "TestVoxelLayer")
# Save the voxel layer to a layer file
arcpy.management.SaveToLayerFile(
in_layer="TestVoxelLayer",
out_layer=r"C:\Temp\TestVoxelLayer.lyrx",
is_relative_path=None,
version="CURRENT"
)
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?