Как посчитать блоки на дом калькулятор: Калькулятор для расчета количества блоков на дом
Примеры 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 0555
Оператор | Объяснение | Пример | Результат |
---|---|---|---|
х + у | х плюс у | 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 . |
х % г | 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
Райано
Зарегистрированный пользователь
- #1
Мне интересно, может ли кто-нибудь помочь мне рассчитать количество новых блоков в новой сборке.
Я хочу узнать, существует ли научный метод для исключения оконных и дверных проемов и расчета фронтонов… чтобы получить правильное количество требуемых блоков.
Также… кто-нибудь знает стоимость работ по укладке этих блоков. то есть стоимость за блок?
До сих пор у меня было 2 цитаты из блочных слоев… 1 цитата 9.5K другие 16.5k .. так что есть большая разница…
Заранее спасибо..
крем-яйцо
Зарегистрированный пользователь
- #2

Чтобы оценить работу самостоятельно, рассчитайте количество блоков и спросите у продавца-строителя стоимость блоков. Может кто подскажет текущую стоимость работ по укладке блока. Вам нужно будет добавить около 10% на накладные расходы и 5% на прибыль. Хотя это не будет на 100% точным, это приблизит вас к разнице между 9,5 тыс. евро и 16,5 тыс. евро.
Может быть, просто пойти с 9,5 тысячами евро, в конце концов, независимо от того, что вы рассчитываете, вы все равно можете получить его только по цене, которую кто-то готов предложить. Если только вы сами не сделаете работу.
Райано
Зарегистрированный пользователь
- #3
Спасибо, сливочное яйцо
без проблем
Зарегистрированный пользователь
- #4
Вычисление количества блоков — одна из самых простых задач, то же самое и с ценой, которая обычно включает в себя размещение чечевицы на окнах и дверях. Могут быть некоторые двери, которые требуют RSJ вместо чечевицы. Дайте план вашего дома блокировщику, и он точно рассчитает, что нужно. Если вы используете несколько мастеров для строительства, помните, что существует огромное количество новых правил и положений, которых необходимо придерживаться. Что касается похода к торговцу строителями, чтобы узнать цену блоков? Это немного глупо, просто идите прямо к Roadstone или любому другому карьеру в вашем районе и спросите их. Ваш блокировщик даст вам хороший совет по этому поводу, так как некоторым не нравятся определенные блоки, то же самое относится и к песку, который вам также понадобится. Вы не пользуетесь инженером?
даб_ботаник
Зарегистрированный пользователь
- #5
без проблем сказал:
.