Una capa vóxel representa datos volumétricos cuadriculados regulares. La fuente de datos de una capa vóxel puede ser un archivo netCDF, un paquete de capas de escena o un servicio de escena. ArcGIS AllSource Proporciona varias herramientas de geoprocesamiento y flujos de trabajo para crear fuentes de datos adecuadas para una capa vóxel. Varios flujos de trabajo le permiten crear datos multidimensionales a partir de una entrada de puntos 3D, a partir de un análisis de estadísticas geográficas o convirtiendo datos multidimensionales existentes como, por ejemplo, datos ráster, para visualizarlos como una capa vóxel. Consulte los formatos de vóxel compatibles y las preguntas frecuentes para obtener información adicional sobre las capas vóxel.
Entradas | Procesamiento | Lección de Learn ArcGIS |
---|---|---|
Puntos | Crear cubo de espacio-tiempo agregando puntos | |
Puntos | Vecino más cercano 3D, Kriging bayesiano empírico 3D, GA Layer a NetCDF 3D, IDW 3D | Interpolar mediciones de oxígeno en 3D en la Bahía de Monterrey |
Puntos | Python netCDF4 | |
netCDF | Crear una capa de vóxel multidimensional | Explorar y animar datos geológicos con vóxeles Visualizar y explorar hábitats de arrecifes de corales con vóxeles |
Ráster multidimensional (netCDF, GRIB, HDF, CRF) o dataset ráster | Copiar ráster, Ráster a NetCDF | |
Tabla | Tabla a NetCDF, Python netCDF4 |
Nota:
La herramienta De entidad a NetCDF no producirá una salida adecuada para una capa vóxel.
Crear una capa vóxel a partir de una entrada de puntos mediante un análisis geoestadístico
Los datos de puntos se interpolan y se visualizan como una capa vóxel. Por ejemplo, puede analizar los niveles de oxígeno de un área de estudio a lo largo del tiempo. En ArcGIS, un análisis de estadísticas geográficas le permite analizar estos tipos de patrones. Puede visualizar las mediciones de oxígeno disuelto tomadas a distintas profundidades y realizar una interpolación de estadísticas geográficas en 3D para predecir los niveles de oxígeno en toda el área de estudio. Puede crear un archivo netCDF 3D a partir del análisis de estadísticas geográficas y visualizarlo como una capa vóxel en una escena local. Si una escena local está activa, las herramientas de análisis geoestadístico envían la capa vóxel a la escena. Entre las herramientas compatibles se encuentran Kriging bayesiano empírico 3D, IDW 3D y Vecino más cercano 3D.
- Haga clic en la pestaña Análisis y, a continuación, en Herramientas .
- En el panel Geoprocesamiento, busque Kriging bayesiano empírico 3D, haga clic para abrir la herramienta y defina los siguientes parámetros:
- Entidades de entrada: la capa de entidades de puntos de entrada que se interpolará.
- Campo de elevación: campo que contiene un valor de altura para cada punto.
- Campo de valor: campo que contiene los valores medidos que se van a interpolar
- Salida de capa de estadísticas geográficas: capa de estadísticas geográficas producida
- Haga clic en Ejecutar .
Se genera la capa de estadísticas geográficas.
- En el panel Geoprocesamiento, busque GA Layer 3D a NetCDF, haga clic en para abrir la herramienta y defina los siguientes parámetros:
- Capa de estadísticas geográficas 3D de entrada: capa de estadísticas geográficas 3D del paso 3
- Archivo NetCDF de salida: nombre del archivo netCDF de salida
- Haga clic en Ejecutar .
La capa vóxel se muestra en la escena.
Crear una capa vóxel a partir de la entrada de punto usando la herramienta Crear cubo de espacio-tiempo
Los datos multidimensionales pueden representar x,y y tiempo como dimensión de altura. Por ejemplo, puede analizar el patrón de tormentas de un área de estudio a lo largo del tiempo. En ArcGIS AllSource, un cubo de espacio-tiempo le permite analizar estos tipos de patrones. Un cubo de espacio-tiempo puede resumir un conjunto de puntos en un archivo netCDF agregándolos en cubos de espacio-tiempo. Dentro de cada cubo, se centran los puntos y se agregan los atributos especificados. Para todas las ubicaciones de cubo, se evalúan los recuentos y los valores de los campos de resumen. Dado que una capa vóxel requiere datos cuadriculados regulares, la forma de agregación debe ser del tipo red. El resultado es una estructura de datos volumétrica x,y,t.
- Haga clic en la pestaña Análisis y, a continuación, en Herramientas .
- En el panel Geoprocesamiento, busque Crear cubo de espacio-tiempo agregando puntos, haga clic para abrir la herramienta y establezca los parámetros siguientes.
- Entidades de entrada: la capa de entidades de puntos de entrada que se agregará.
- Cubo de espacio-tiempo de salida: el archivo netCDF de salida que se generará.
- Campo de tiempo: campo que contiene la fecha y hora de cada punto.
- Intervalo de periodo de tiempo: número de segundos, minutos, horas, días, semanas o años que representará un período de tiempo único.
- Intervalo de distancia: tamaño de los cubos utilizados para agregar las entidades de entrada.
- Campos de resumen: campo numérico que contiene valores de atributos que se utilizan para calcular la estadística especificada al agregar dentro de un cubo de espacio-tiempo.
- Tipo de forma de agregación: elija Cuadrícula de red.
- Haga clic en Ejecutar .
Se genera el cubo de espacio-tiempo.
- Haga clic en la pestaña Mapa y luego en Agregar datos .
Las capas vóxel requieren una escena local activa.
- Haga clic en Agregar capa vóxel multidimensional y especifique el archivo netCDF de salida creado en el paso 3.
- Haga clic en Aceptar.
La capa vóxel se muestra en la escena.
Crear una capa vóxel a partir de un ráster multidimensional
Los datos multidimensionales se suministran en distintos formatos. Actualmente, las capas vóxel solo admiten datos netCDF. Puede exportar datos en otros formatos multidimensionales como GRIB, HDF y CRF a un archivo netCDF con la herramienta Copiar ráster.
- Haga clic en la pestaña Análisis y, a continuación, en Herramientas .
- En el panel Geoprocesamiento, busque Copiar ráster, haga clic para abrir la herramienta y defina los siguientes parámetros:
- Ráster de entrada: establezca este valor en el ráster multidimensional de entrada.
- Dataset ráster de salida: establezca este valor en el archivo netCDF de salida con la extensión de archivo .nc.
- Sin valor de datos: elimine el valor predeterminado y manténgalo en blanco.
- Formato: elija el formato NetCDF.
Las capas de vóxeles requieren que los datos sean regularmente cuadriculados.
- Haga clic en Ejecutar .
Se genera el archivo netCDF.
- Haga clic en la pestaña Mapa y, seguidamente, haga clic en Agregar datos .
Las capas vóxel requieren una escena local activa.
- Haga clic en Agregar capa vóxel multidimensional y especifique el archivo netCDF de salida creado en el paso 3.
- Haga clic en Aceptar.
La capa vóxel se muestra en la escena.
Crear una capa a partir de un archivo .csv
En este ejemplo, se genera un archivo netCDF utilizando un archivo .csv. El archivo .csv tendrá cinco columnas: X, Y, Z, T y Data. También se supone que el archivo .csv tiene una cuadrícula uniforme en todas las dimensiones. Después de crear el archivo netCDF, puede ejecutar la herramienta Crear capa de vóxel multidimensional y guardarlo como un archivo de capa para agregarlo a una escena local.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"
)