Обзор использования классов дополнительного модуля Spatial Analyst
Классы можно использовать для создания объектов, часто называемых экземплярами. После создания экземпляра объекта становится возможным использовать его свойства и методы. Классы дополнительного модуля Spatial Analyst, такие как Окрестность или Перекодировка, часто используют в качестве ярлыков для задания параметров инструментов геообработки, которые иначе имели бы более сложный строчный эквивалент.
Создавать параметры и управлять ими намного проще с использованием классов, а не строк. Использование классов для определения параметров имеет следующие преимущества:
- Классы содержат справку и предусматривают автозаполнение для переменных аргументов параметра.
- Вы можете запрашивать отдельные аргументы для параметра из выходного объекта.
- Вы можете легко изменять отдельные аргументы класса для дальнейшего анализа.
Дополнительную информацию об использовании классов модуля Spatial Analyst в Алгебре карт можно найти в следующих темах:
Ниже приведены примеры приложений, которые легко реализуются с помощью классов:
- Определение типа класса или значения отдельного аргумента:
Например, запросив тип входного радиуса и расстояние поиска, можно определить значение степени для интерполяции по методу обратных взвешенных расстояний.
- Изменение входного значения:
Например, можно легко изменить входное значение переклассификации в модели пригодности в соответствии с публичными данными на форуме для исследования воздействия различных сценариев на выходные данные, не создавая заново таблицу перекодировки.
- Для выполнения анализа чувствительности:
Например, вы можете итерационно увеличивать на 5 процентов значения До (To) и От (From) в таблице перекодировки для модели пригодности, чтобы исследовать влияние на результат небольших изменений входного критерия.
- Для выполнения анализа ошибок:
Например, вы можете несколько раз прогнать модель, меняя случайным образом аргументы параметров, чтобы исследовать потенциальное влияние на результат ошибки и изменчивость данных.
Использование классов дополнительного модуля Spatial Analyst
В некоторых параметрах инструментов геообработки дополнительного модуля Spatial Analyst объект класса используется в качестве входного значения. Обычно параметры представляют собой простые строки, имена набора данных, пути, ключевые слова, имена полей, допуски и имена доменов. Некоторые параметры более сложны и определяют ряд свойств или значений. Вместо того чтобы задавать эти параметры длинными и сложными текстовыми строками, можно использовать классы (например, окрестности или таблицы перекодировки). Знание входных требований конструктора класса поможет вам создать, запросить, изменить и сохранить объекты класса.
В качестве аргументов классов дополнительного модуля Spatial Analyst используются различные типы входных данных:
- Скаляры
- Строки
- Список или список списков Python
- Другие классы
Для удобства чтения рекомендуется задавать и использовать в инструменте переменную для класса. Например:
Neighborhood = NbrRectangle(5, 5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MEAN")
Однако вы можете определить класс и в параметре инструмента.
outRas = FocalStatistics("inRas", NbrRectangle(5, 5, "MAP"), "MEAN")
Классы, создаваемые с использованием фиксированного числа входных аргументов
Некоторые классы строятся с помощью фиксированного числа простых скалярных или строчных аргументов. Например, чтобы создать круговую окрестность с радиусом пять единиц карты:
Neighborhood = NbrCircle(5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MAXIMUM")
В каждом из этих классов входные аргументы имеют предопределенную позицию. Эти классы можно сгруппировать по параметру инструмента, к которому они относятся:
- Классы нечеткой логики (Fuzzy)
(FuzzyGaussian, FuzzyLarge, FuzzyLinear, FuzzyMSLarge, FuzzyMSSmall, FuzzyNear, FuzzySmall)
- Классы Горизонтального фактора (Horizontal factor)
- Классы KrigingModel
- Классы Окрестности (Neighborhood)
(NbrAnnulus, NbrCircle, NbrIrregular, NbrRectangle, NbrWedge, NbrWeight)
- Классы радиуса
- Классы времени
(TimeWithinDay, TimeSpecialDays, TimeMultipleDays, TimeWholeYear)
- Классы Функций преобразования
(TfExponential, TfGaussian, TfLarge, TfLinear, TfLogarithm, TfLogisticDecay, TfLogisticGrowth, TfMSLarge, TfMSSmall, TfNear, TfPower, TfSmall, TfSymmetricLinear)
- Классы Вертикального фактора (Vertical factor):
(VfBinary, VfLinear, VfSymLinear,, VfInverseLinear, VfSymInverseLinear, VfCos, VfSec, VfCosSec, VfSecCos, VfTable)
Классы, создаваемые с помощью списков Python
Некоторые классы являются более сложными, например, классы TopoBoundary, TopoLake и TopoStream. Они требуют ряда входных аргументов и используются для параметров в инструменте Топо в растр (Topo to Raster). Ряды входных аргументов определены в списке Python, и число аргументов в списке зависит от ситуации (другими словами, от числа аргументов, требуемых для анализа).
Например, конструкторам класса TopoBoundary нужен список, содержащий один или несколько аргументов inFeature. Список, обозначенный как inFeatures, становится свойством выходного объекта. Для запроса или работы с элементами в списке inFeatures каждый из них адресуется как элемент в списке (см. Запрос классов).
inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])
Классы, созданные с помощью списков в списках
В других инструментах число вводимых в параметр элементов будет определяться конкретной ситуацией. Этот тип входного параметра создается из класса, полученного с помощью списков в списке. Есть три группы инструментов, классы которых создаются из списков в списках:
- Таблицы переклассификации (RemapRange, RemapValue)
- Таблицы взвешенной переклассификации (наложения и суммы) WOTable, WSTable)
- Топоклассы (поднабор) (TopoContour, TopoPointElevation, TopoSink)
Например, входным аргументом классов Перекодировки должна быть таблица. Таблица моделируется с помощью списка записей, включающих значения startValue, endValue и newValue для классификации. Таблица становится свойством выходного объекта. Для запроса или работы с входными данными таблицы к ним нужно обращаться, как к записям списков внутри списков (см. Запрос классов).
# Usage: RemapRange([[startValue, endValue, newValue],...])
myRemapRange = RemapRange([[-3, -1.75, 1], [-1.75, -0.5, 2], [-0.5, 0.75, 3],
[0.75, 2, 4], [2, 3.25, 5], [3.25, 4.5, 6],
[4.5, 5.75, 7], [5.75, 7, 8]])
outReclassRR = Reclassify("inRas", "VALUE", myRemapRange)
Классы, создаваемые из набора классов в списке
Некоторые инструменты используют параметры класса, требующие в качестве входа набор классов. Классы составляются внутри списка. Инструменты, требующие в качестве входа набор классов в списке, такие как Извлечь по точкам (Extract by Points) и Извлечь по прямоугольнику (Extract by Rectangle), обычно извлекают данные по заданной геометрии.