Как посчитать блоки на дом калькулятор: Калькулятор для расчета количества блоков на дом

Содержание

Примеры Calculate Field Python—ArcGIS Pro

Ввод значений с помощью клавиатуры — не единственный способ редактирования значения в таблице. В некоторых случаях может потребоваться выполнить математический расчет для установки значения поля для одной записи или даже все записи. Вы можете выполнять простые, а также расширенные расчеты по всем или выбранным записи. Кроме того, вы можете рассчитать площадь, длину, периметр и другие параметры. геометрические свойства полей в атрибутивных таблицах. Разделы ниже содержат примеры использования калькулятора поля. Расчеты выполняются с использованием Python, SQL и Arcade.

В этом разделе рассматриваются примеры Calculate Field на основе Python. Чтобы узнать больше о выражениях Arcade, см. руководство ArcGIS Arcade. Дополнительные сведения о выражениях SQL см. в разделе Вычисление значений поля.

  • Python применяет отступы как часть синтаксиса. Используйте два или четыре пробела для определения каждого логического уровня.
    Выровняйте начало и конец блоков операторов и будьте последовательны.
  • Поля выражения вычисления Python заключены в восклицательные знаки (!!).
  • При именовании переменных обратите внимание, что Python чувствителен к регистру, поэтому значение не совпадает со значением.
  • После ввода выписок нажмите кнопку Экспорт, если хотите записать их в файл. Кнопка «Импорт» предлагает вам найти и выбрать существующий файл расчета.

Простые вычисления

С помощью короткого выражения можно выполнить множество вычислений.

Примеры простых строк

Строки поддерживаются рядом строковых функций Python, включая использование заглавных букв, rstrip и замену.

Сделать первый символ строки в поле CITY_NAME прописной.

 !CITY_NAME!.capitalize() 

Удалите все пробелы в конце строки в поле CITY_NAME.

 !CITY_NAME!.rstrip() 

Замените все вхождения «California» на «California» в поле STATE_NAME.

 !STATE_NAME!.replace("california", "California") 

Доступ к символам в строковом поле можно получить с помощью индексации и нарезки в Python. При индексировании выбираются символы в позиции индекса; нарезка выбирает группу символов. В следующей таблице предположим, что !fieldname! представляет собой строковое поле со значением «abcde».

Пример Объяснение Результат
90 002 !fieldname![0]

Первый символ

«a»

! fieldname![-2]

Предпоследний символ

«d»

!fieldname![1:4]

9005 8

Второй, третий и четвертый символы

«BCD»

Python также поддерживает форматирование строк с использованием метода format().

Объедините поля FieldA и FieldB, разделенные двоеточием.

 "{}:{}".format(!FieldA!, !FieldB!) 
  • Общие строковые операции Python

Простые математические примеры

Python предоставляет инструменты для обработки чисел. Python также поддерживает ряд числовых и математических функций, включая math, cmath, decimal, random, itertools, functools и оператор.

9 0053 90 055

5

Оператор Объяснение Пример Результат

х + у

х плюс у

1,5 + 2,5

4,0

1 .1

х * у

x раз y

2,0 * 2,2

4,4

900 02 x / y

x разделить на y

4,0 / 1,25

3,2

x // y

x разделить на y (этажное деление)

4,0 // 1,25

3 . 0

х % г

x по модулю y

8 % 3

2

-x

9005 8

отрицательное выражение x

x = 5

-x

-5

х без изменений

х = 5

х ** у

х возведены в степень из

2 ** 3

8

Умножить

 !Ранг! * 2 

Вычислить объем сферы по заданному радиусу поля.

 4.0 / 3.0 * math.pi * !Радиус! ** 3 
Устаревшая версия:

В ArcGIS Pro используется Python 3, а в ArcGIS Desktop используется Python 2. Python 2 использует целочисленную математику, а это означает, что деление двух целочисленных значений всегда дает целочисленное значение (3/2 = 1). В Python 3 при делении двух целочисленных значений получается значение с плавающей запятой (3/2 = 1,5).

Встроенные функции Python

Python включает ряд встроенных функций, включая max, min, round и sum.

  • Встроенные функции Python

Вычислить максимальное значение для каждой записи из списка полей.

 max([!поле1!, !поле2!, !поле3!]) 

Вычислить сумму для каждой записи из списка полей.

 sum([!field1!, !field2!, !field3!]) 

Использовать блоки кода

Используя выражения Python и параметр Code Block, вы можете делать следующее:

  • Используйте любую функцию Python в выражении.
  • Доступ к функциям и объектам геообработки.
  • Доступ к свойствам геометрии объекта.
  • Доступ к новому оператору случайных значений.
  • Переклассифицировать значения, используя логику if-then-else.
Тип выражения Блок кода

Python 3

Поддерживает функции Python. Блок кода выражается с помощью функций Python (def). Свойства геометрии выражаются с помощью объектов геообработки, таких как объекты Point, где это уместно.

Arcade

Поддерживает функции Arcade.

SQL

Поддерживает выражения SQL.

Выражения SQL были реализованы для лучшей поддержки вычислений с использованием сервисов объектов и многопользовательских баз геоданных, особенно в отношении производительности. Вместо выполнения вычислений по одному объекту или строке за один раз к сервису объектов или базе данных задается один запрос.

Устаревшая версия:

В ArcGIS Desktop инструмент Вычислить поле поддерживает типы выражений VB, PYTHON и PYTHON_9.3. Тип выражения VB, который поддерживается в некоторых продуктах, не поддерживается в 64-разрядных продуктах, включая ArcGIS Pro.

Ключевые слова PYTHON и PYTHON_9.3 по-прежнему поддерживаются в ArcGIS Pro для обратной совместимости, но не указаны в качестве вариантов. Скрипты Python, использующие эти ключевые слова, продолжат работать.

Единственная разница между типом выражения Python 3 и устаревшим PYTHON_9Ключевое слово .3 заключается в том, что Python 3 возвращает значения в полях даты как объекты даты и времени Python.

Тип выражения Python 3 не связан с версией Python, установленной вместе с ArcGIS Pro. Это всего лишь третье ключевое слово, связанное с Python, исторически (после PYTHON и PYTHON_9.3).

Функции Python определяются с помощью ключевого слова def, за которым следует имя функции и входные аргументы функции. Функцию Python можно написать так, чтобы она принимала любое количество входных аргументов (включая отсутствие). Значение возвращается из функции с помощью оператора return. Имя функции выбираете вы (не используйте пробелы или начальные числа).

Если значение не возвращается явным образом из функции с оператором return, функция возвращает None.

Python использует отступы как часть синтаксиса. Используйте четыре пробела для определения каждого логического уровня. Выровняйте начало и конец блоков операторов и будьте последовательны.

Образцы кода — математические

При использовании приведенных ниже математических примеров предположим, что тип выражения Python 3.

Округлите значение поля до двух знаков после запятой.

 Выражение:
круглый(!площадь!, 2) 

Используйте математический модуль, чтобы преобразовать метры в футы. Преобразование возводится в степень 2 и умножается на площадь.

 Выражение:
Метры в футы((плавать(!shape.area!)))
Блок кода:
импортировать математику
def MetersToFeet (площадь):
    return math.pow(3.2808, 2) * area 

Вычисление полей с использованием логики в Python

Логические шаблоны могут быть включены в блок кода с помощью операторов if, else и elif.

Классификация на основе значений полей.

 Выражение:
Переклассифицировать(!WELL_YIELD!)
Блок кода:
Def Reclass(WellYield):
    если (WellYield >= 0 и WellYield <= 10):
        вернуть 1
    elif (WellYield >
10 и WellYield <= 20): вернуть 2 elif (WellYield > 20 и WellYield <= 30): вернуть 3 Элиф (WellYield > 30): вернуться 4

Примеры кода — геометрия

В дополнение к следующим примерам кода см. раздел Преобразование геометрических единиц ниже для получения дополнительной информации о преобразовании геометрических единиц.

Вычислить площадь объекта.

 Выражение:
!форма.область! 

Вычислить максимальную координату X объекта.

 Выражение:
!shape.extent.XMax! 

Подсчет количества вершин объекта.

 Выражение:
getVertexCount(!Форма!)
Блок кода:
деф getVertexCount (подвиг):
    часть = 0
    # Подсчитать количество точек в текущем составном объекте
    partcount = подвиг.partCount
    количество точек = 0
    # Введите цикл while для каждой части в объекте (если одна часть
    # особенность, это произойдет только один раз)
    в то время как partnum < partcount:
        часть = feat.getPart(partnum)
        пнт = часть.следующий()
        # Введите цикл while для каждой вершины
        пока пнт:
            количество точек += 1
            пнт = часть.следующий()
   
            # Если pnt равно null, то либо деталь закончена, либо
            # внутреннее кольцо
            если не пнт:
                пнт = часть.
следующий() часть += 1 вернуть количество очков

Для класса точечных объектов сдвиньте координату x каждой точки на 100.

 Выражение:
shiftXCoordinate(!ФОРМА!)
Блок кода:
def shiftXCoordinate (форма):
    сдвигЗначение = 100
    точка = форма.getPart (0)
    точка.X += сдвигЗначение
    точка возврата 

Преобразование единиц измерения геометрии

Свойства площади и длины поля геометрии могут быть изменены с помощью типов единиц измерения, выраженных знаком @.

Подробнее о поддерживаемых линейных и площадных единицах в геообработке

Если данные хранятся в географической системе координат и заданы линейные единицы (например, футы), вычисление длины преобразуется с использованием геодезического алгоритма.

Осторожно:

Преобразование площадных единиц данных в географическую систему координат приводит к сомнительным результатам, поскольку десятичные градусы не совпадают по всему миру.

Вычислить длину объекта в ярдах.

 Выражение:
!shape.length@ярды! 

Вычислить площадь объекта в акрах.

 Выражение:
!shape.area@acres! 

Геодезическая площадь и длина также могут быть рассчитаны с использованием свойств geodesicArea и geodesicLength с символом @, за которым следует ключевое слово единицы измерения.

Расчет геодезической длины объекта в ярдах.

 Выражение:
!shape.geodesicLength@ярды! 

Расчет геодезической площади объекта в акрах.

 Выражение:
!shape.geodesicArea@acres! 

Образцы кода — даты

Дату и время можно вычислить с помощью модулей datetime и time.

Вычислить текущую дату.

 Выражение:
time.strftime("%d/%m/%Y") 

Вычислить текущую дату и время.

 Выражение:
datetime.datetime.now() 

Вычислить дату 31 декабря 2000 г.

 Выражение:
datetime.datetime(2000, 12, 31) 

Подсчет количества дней между текущей датой и значением в поле.

 Выражение:
(datetime. datetime.now() - !field1!).days 

Вычислить дату, добавив 100 дней к значению даты в поле.

 Выражение:
!поле1! + datetime.timedelta(days=100) 

Вычислить строку, представляющую дату, используя метод ctime в модуле datetime. В примере создается строка в формате: «Пн, 22 февраля, 10:15:00 2021».

 Выражение:
!field1!.ctime() 

Вычислить день недели (например, воскресенье) для значения даты в поле.

 Выражение:
!field1!.strftime('%A') 

Вычислить форматированную строку из поля даты, используя метод strftime модуля datetime и явную строку формата. В примере будет создана строка в формате: «22.02.2021, 10:15:00».

 Выражение:
!field1!.strftime("%m/%d/%Y, %H:%M:%S") 

Примеры кода — строки

Вычисления строк могут быть выполнены с использованием различных шаблонов кодирования Python.

Вернуть три крайних правых символа.

 Выражение:
!SUB_REGION![-3:] 

Заменить любую прописную букву P на строчную p.

 Выражение:
!STATE_NAME!.replace("P","p") 

Объединить два поля с разделителем-пробелом.

 Выражение:
!SUB_REGION! + " " + !STATE_ABBR! 

Преобразование в правильный регистр

В следующих примерах показаны различные способы преобразования слов таким образом, чтобы в каждом слове первый символ был заглавным, а остальные буквы — строчными.

 Выражение:
' '.join([i.capitalize() for i in !STATE_NAME!.split(' ')]) 
 Выражение:
!STATE_NAME!.title() 

Регулярные выражения

Модуль Python re предоставляет операции сопоставления регулярных выражений, которые можно использовать для выполнения сложных правил сопоставления с образцом и замены строк.

  • re — Операции с регулярными выражениями
  • Практическое руководство по регулярным выражениям

Замените St или St., начиная новое слово в конце строки, на слово Street.

 Выражение:
update_street(!АДРЕС!)
Блок кода:
импортировать повторно
def update_street (название_улицы):
    return re. sub(r"""\b(St|St.)\Z""",
                  'Улица',
                  street_name) 

Накопительные и последовательные вычисления

Накопительные и последовательные вычисления могут выполняться с использованием глобальных переменных.

Вычислить последовательный идентификатор или номер на основе интервала.

 Выражение:
автоинкремент (10, 5)
Блок кода:
запись = 0
def autoIncrement (начало = 1, интервал = 1):
    глобальная запись
    если запись == 0:
        запись = начало
    еще:
        запись += интервал
    return rec 

Вычислить накопительное значение числового поля.

 Выражение:
накапливать(!ПолеA!)
Блок кода:
всего = 0
деф накапливать (приращение):
    глобальный итог
    если всего:
        итог += приращение
    еще:
        итог = приращение
    верни всего 

Вычислить процентное увеличение числового поля.

 Выражение:
процентное увеличение (с плавающей запятой (! Поле A!))
Блок кода:
последнее значение = 0
определение процента увеличения (новое значение):
    глобальное последнее значение
    если последнее значение:
        процент = ((новое значение - последнее значение) / последнее значение) * 100
    еще:
        процент = 0
    последнее значение = новое значение
    процент возврата 

Случайные значения

Случайные значения можно рассчитать с помощью модуля random.

Используйте пакет numpy site для вычисления случайных значений с плавающей запятой от 0,0 до 1,0.

 Выражение:
получитьслучайное значение()
Блок кода:
импортировать numpy
определение getRandomValue():
    return numpy.random.random() 

Используйте модуль random для вычисления случайных целых чисел от 0 до 10.

 Выражение:
случайный.randint(0, 10)
Блок кода:
import random 

Вычислить нулевые значения

В выражении Python нулевые значения можно вычислить с помощью Python None.

Следующий расчет работает, только если поле допускает значение NULL.

Используйте Python None для вычисления нулевых значений.

 Выражение:
Нет 
Похожие темы

Отзыв по этой теме?

Как рассчитать количество блоков для новостройки | Askaboutmoney.com

Райано
Зарегистрированный пользователь