Слой вокселов представляет собой многомерные объемные данные с регулярной сеткой. Источником данных для слоя вокселов может быть файл netCDF, пакет слоев сцены или сервис сцены. ArcGIS AllSource предлагает несколько инструментов геообработки и рабочих процессов для создания источников данных, подходящих для слоя вокселов. Различные рабочие процессы позволяют создавать многомерные данные по входным 3D-точкам, через геостатистический анализ или при помощи конвертации существующих многомерных данных, таких как растровые данные, для визуализации как слоя вокселов. Для получения дополнительных сведений о слоях вокселов см. разделы Поддерживаемые форматы вокселов и Часто задаваемые вопросы.
Входные данные | Обработка | Уроки Learn ArcGIS |
---|---|---|
Точки | Создать куб пространство-время по агрегации точек | |
Точки | Ближайший сосед 3D, Эмпирический байесовский кригинг 3D, Слой GA в NetCDF 3D, IDW 3D | Интерполяция 3D-измерений уровня кислорода в заливе Монтерей |
Точки | Python netCDF4 | Визуализация подразделений морской экологии с помощью вокселов |
netCDF | Создать многомерный слой вокселов | Изучение и анимация геологических данных с помощью вокселов Визуализация и изучение мест обитания коралловых рифов с помощью вокселов |
Многомерный растр (netCDF, GRIB, HDF, CRF) или набор растровых данных | Копировать растр, Растр в NetCDF | |
Таблица | Таблица в NetCDF, Python netCDF4 |
Примечание:
Инструмент Объекты в NetCDF не создает выходные данные, приемлемые для слоя вокселов.
Создание слоя вокселов по входным точкам с помощью геостатистического анализа
Точечные данные интерполируются и визуализируются в виде слоя вокселов. Например, можно проанализировать уровни кислорода в изучаемой области с течением времени. В ArcGIS, геостатистический анализ позволяет анализировать закономерности такого типа. Можно визуализировать измерения растворенного кислорода, проведенные на различных глубинах и выполнить трехмерную геостатистическую интерполяцию для прогнозирования уровня кислорода во всей изучаемой области. Можно создать файл 3D NetCDF по результатам геостатистического анализа и визуализировать его как слой вокселов в локальной сцене. Если активна локальная сцена, инструменты геостатистического анализа отображают в сцене слой вокселов. К совместимым инструментам относятся Эмпирический байесовский кригинг 3D, IDW 3D и Ближайший сосед 3D.
- Щелкните вкладку Анализ и нажмите Инструменты .
- На панели Геообработка найдите Эмпирический Байесовский кригинг 3D, откройте инструмент и задайте следующие параметры:
- Входные объекты - входной точечный векторный слой, который будет проинтерполирован
- Поле высоты - поле, в котором хранится значение высоты для каждой точки
- Поле значения - поле, содержащее измеренные значения для интерполяции.
- Выходной геостатический слой - создаваемый геостатический слой
- Щелкните Запустить .
Будет построен геостатический слой.
- На панели Геообработка найдите инструмент 3D-Слой GA в NetCDF, откройте его и задайте следующие параметры:
- Входной 3D геостатистический слой - 3D геостатистический слой из шага 3
- Выходной файл netCDF - Имя выходного файла netCDF
- Щелкните Запустить .
Слой вокселов отображается в сцене.
Создание слоя вокселов из входных точек с помощью инструмента Создать куб пространство-время
Многомерные данные могут представлять значения X,Y и время в качестве измерения высоты. Например, можно проанализировать поведение шторма в изучаемой области с течением времени. В ArcGIS AllSource куб пространства-времени позволяет анализировать закономерности такого типа. Куб пространства-времени может суммировать набор точек в файл netCDF, агрегируя точки в бины пространства-времени. В пределах каждого бина точки центрируются и агрегируются указанные атрибуты. Для всех местоположений бинов проводится оценка значений числа объектов, а также вычисляются суммы значений полей. Поскольку слою вокселов требуется данные, распределенные по регулярной сетке, агрегация должна быть в виде регулярной сетки. В результате получается объемная структура данных x,y,t.
- Щелкните вкладку Анализ и нажмите Инструменты .
- На панели Геообработка найдите инструмент Создать куб пространство-время по агрегации точек, откройте его и задайте следующие параметры:
- Входные объекты - входной точечный векторный слой, который будет агрегироваться.
- Выходной куб пространства-времени - выходной файл netCDF, который будет создан.
- Поле времени - поле, содержащее значения даты и времени для каждой точки.
- Интервал временного шага - число секунд, минут, часов, дней, недель или лет, которому будет соответствовать один временной шаг.
- Интервал расстояния - размер бинов, используемых для агрегации входных объектов.
- Поля суммирования - числовое поле, содержащее значения атрибута, для которого будет вычислен определенный статистический показатель при агрегировании в куб пространства-время.
- Тип геометрии для агрегации - выберите Сетка.
- Щелкните Запустить .
Создается куб пространства-времени.
- Щелкните Карта и выберите Добавить данные .
Для слоя вокселов требуется активная локальная сцена.
- Щелкните Добавить многомерный слой вокселов и укажите выходной netCDF, созданный в шаге 3.
- Нажмите OK.
Слой вокселов отображается в сцене.
Создание слоя вокселов из многомерного растра
Многомерные данные могут находиться в различных форматах. В настоящее время слои вокселов поддерживают только данные netCDF. Вы можете экспортировать данные из других многомерных форматов, таких как GRIB, HDF и CRF в netCDF, используя инструмент Копировать растр.
- Щелкните вкладку Анализ и нажмите Инструменты .
- На панели Геообработка найдите инструмент Копировать растр, откройте его и задайте следующие параметры:
- Входной растр - укажите входной многомерный растр.
- Выходной набор растровых данных - задайте это для выходного файла netCDF с расширением файла .nc.
- Значение No Data - удалите значение по умолчанию и оставьте поле пустым.
- Формат — выберите формат NetCDF.
Для слоя вокселов необходимо, чтобы данные были в виде регулярной сетки.
- Щелкните Запустить .
Будет создан файл netCDF.
- Щелкните вкладку Карта и выберите Добавить данные .
Для слоя вокселов требуется активная локальная сцена.
- Щелкните Добавить многомерный слой вокселов и укажите выходной netCDF, созданный в шаге 3.
- Нажмите OK.
Слой вокселов отображается в сцене.
Создание слоя вокселов из файла .csv
В этом примере файл netCDF создается с помощью файла .csv. Файл .csv будет содержать пять столбцов: X, Y, Z, T и Data. Также предполагается, что файл .csv имеет регулярное распределение по всем измерениям. После создания файла netCDF вы сможете запустить инструмент Создать многомерный слой вокселов и сохранить его как файл слоя для добавления к локальной сцене.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"
)