Извлечение растровых высот высот в векторные таблицы атрибутов в ArcGIS Desktop?

11

У меня есть проект ArcMap 10 с несколькими группами слоев. Один слой представляет собой растровую матрицу высот, другая группа слоев представляет собой набор векторных шейп-файлов (включая точки, линии и многоугольники). Клиент хочет, чтобы все векторные данные содержали значения Z.

Заполнить таблицы атрибутов для векторных данных значениями X и Y достаточно просто, но как мне заполнить значения Z?

Есть ли способ, которым я могу использовать Field Calculator, чтобы "захватить" значения высоты из слоя DEM для каждого векторного объекта?

Я должен добавить, что у нас нет лицензии на расширения 3D Analyst или Spatial Analyst.

Брэд Торр
источник
не может быть сделано в ArcGIS без 3D-аналитика (или пространственного аналитика). Даже если у вас был доступ к 3D Analyst, вы можете сделать это только для точек и полилиний при условии, что это контуры высот с одинаковыми значениями высот. Инструмент Interpolate Shape создаст трехмерные объекты, но они будут иметь разную высоту. Вы просто не можете легко преобразовать эту информацию в атрибуты значений Z, если у объектов нет совершенно плоских высот. Преобразование всего в точки, затем интерполяция Shape и вычисление XYZ будет работать.
Якуб Сисак

Ответы:

15

В ArcGIS я когда-либо делал это только с точечными векторами - я не уверен, как бы вы делали это с полигонами или линейными объектами. К сожалению, вам нужен Spatial Analyst, хотя. В Spatial Analyst Tools \ Extraction \ есть инструмент извлечения нескольких значений в точки и извлечения значений в точки . Извлечение нескольких значений в точки лучше, потому что позволяет переименовать имя поля z, в которое вы извлекаете свои значения - Извлечение значений в точки не позволяет вам этого делать. У меня проблемы с этим в ArcMap (инструмент вылетает), но он хорошо работает в ArcCatalog.

(Бесплатное) расширение Hawths Analysis Tools для ArcMap имело инструмент Intersect Point, но разработка расширения была прекращена пару лет назад. Его заменила среда геопространственного моделирования , которой я никогда не пользовался.

SAGA-GIS (бесплатное автономное программное обеспечение) имеет две функции в Shapes - Сетка \ Добавить значения сетки в точки и фигуры - Сетка \ Добавить значения сетки в фигуры, которые, вероятно, могут делать то, что вы хотите. Это описание инструмента Добавить значения сетки в фигуры:

Пространственное соединение: извлекает информацию из выбранных сеток в местах расположения фигур выбранного слоя фигур и добавляет ее в результирующий слой фигур. Для точек это похоже на модуль «Добавить значения сетки в точки». Для линий и полигонов средние значения будут рассчитываться по мешающим ячейкам сетки. Для полигонов модуль «Статистика сетки для полигонов» предлагает более продвинутые опции.

На мой взгляд, САГА - ваша лучшая ставка.

Надеюсь это поможет!

Hendra
источник
2
Среда геопространственного моделирования имеет следующие инструменты, которые могут помочь: 1) isectpolyrst (Пересечь полигоны с растром) 2) isectlinerst (Пересечь линии с растром) 3) isectpntrst (Пересечь точки с растром). Эти инструменты могут быть немного временными, однако они выполнят свою работу.
Аарон
Обратите внимание, что среда геопространственного моделирования совместима только с ArcGIS 10.3 и ниже
Tung
1

Я не пробовал это для полигонов, но это действительно хорошо работает для очков. В Arcmap 10, если у вас есть доступ к инструменту 3D-аналитики, вы можете искать инструмент Интерполировать фигуру. Затем вы выбираете свой растровый файл, и ваш векторный слой корректирует значения z, если вы хотите высот в футах, а ваша матрица высот в метрах, и пусть это выполняется. , Как только он будет завершен, вы будете искать инструмент ADD XY и выберите вновь созданный слой, а затем он вычислит значения X, Y, Z в таблице атрибутов этих слоев.

Пит
источник
0

возможно, вы могли бы использовать gdallocationinfo, чтобы получить все значения Z, передав им значения X, Y. Когда у вас есть значения Z, используйте калькулятор feild, чтобы добавить значение Z к точкам, составляющим каждый объект. Там будут некоторые сценарии, но в теории это должно работать.

данго
источник
0

В зависимости от ваших единиц измерения или требуемого разрешения вы всегда можете экспортировать растр матрицы высот в файл формы многоугольника прямо из набора инструментов, а затем выполнить пространственное соединение - это проще всего для точек. Если вам нужны значения Z для линий или полигонов, вам, очевидно, понадобятся определенные сегменты или подразделения полигонов при каждом изменении высоты, как сообщается векторизованной сеткой матрицы высот. Это можно сделать с помощью стандартных инструментов геообработки и пространственных объединений, но вы должны внимательно следить за вашими требованиями к разрешению и объемом обработки, который потребляет большой набор данных.

кроличий садок
источник
0

Я рекомендую получить лицензию 3D Analyst и использовать Добавить информацию о поверхности . Или используйте Interpolate Shape, а затем Add Z Information, что позволяет некоторым функциям возвращать значения NA без сбоя всей программы. В противном случае есть два проверенных бесплатных метода, которые требуют больше работы. Это можно реализовать из QGIS , так что вам не придется покидать удобную среду ГИС.

Адам Эриксон
источник
0

Инструмент ESRI, который вы хотели бы использовать, это «Добавить информацию Z». Возможно, вы можете получить пробную версию и посмотреть, пригодится ли вам этот инструмент. Если получить расширение 3D Analyst невозможно, единственное, что приходит на ум (кроме решения для программирования), - вытолкнуть ваши данные из ESRI и использовать одну из бесплатных опций, например SAGA-GIS / qGIS, их «Добавить сетку». Значение для фигур »или« Статистика сетки для многоугольников »не так гибко, как в ESRI, но делает то же самое, если вы ищете среднюю высоту вдоль многоугольника / линии.

user67765
источник
-1

Я знаю, как сделать это для очков. Линии и полигоны различны, потому что они пересекают несколько ячеек сетки матрицы высот. Вы можете делать точки вдоль линий или что-то в этом роде и извлекать значения для них. В Arc вам понадобится пространственный аналитик для получения значений, но вы можете получить их через Qgis (бесплатно), хотя и не так полезно. Вам нужно уметь работать с файлами Excel и конвертировать их из шейп-файлов туда и обратно. Qgis сгенерирует шейп-файл, который имеет только извлеченные отметки точек, поэтому вам необходимо скопировать и вставить его в исходную таблицу как файл Excel (со значениями X, Y, чтобы вы могли вернуть его обратно в шейп-файл с помощью msgstr "показать данные x, y"). Вам нужно будет отслеживать ваши проекции, чтобы убедиться, что вы выбрали правильный при преобразовании обратно в шейп-файл.

Майкл
источник
При ответе на вопрос, пожалуйста, будьте конкретны, а не указывайте в разных направлениях. например, пользователю нужен ответ в ArcGIS (не QGIS).
Фарид Чераги,