Объекты из правил CityEngine (3D Analyst)

Доступно с лицензией 3D Analyst.

Краткая информация

Создает 3D геометрию из существующих 2D и 3D входных объектов с помощью правил, созданных в ArcGIS CityEngine.

Использование

  • Входными объектами могут быть точки, полигоны или мультипатчи. @StartRule в файле пакета правил CityEngine (.rpk) должен указать тип ожидаемого входного объекта: аннотация @InPoint для точек, @InPolygon для полигонов или @InMesh для объектов-мультипатчей. Если @StartRule не аннотирован ни одним из типов, перечисленных выше, типом объекта будет предполагаться полигон. Если входными данными является не ожидаемый тип геометрии, возникает ошибка.

  • Входные объекты могут быть слоями объектов с условными обозначениями, построенными по правилам. Правила CityEngine обычно определяют ряд свойств (называемых attrs в CityEngine), которые управляют тем, как выходные 3D-модели создаются из входных форм. Например, правило, которое создает каркас здания, может иметь attr типа double для BuildingHeight и attr типа integer для FloorCount. Если у входного класса объектов есть поле атрибутов с тем же именем и типом данных, как у правила CityEngine, то значения из него будут автоматически использоваться для создания выходных моделей. Это автоматическое сопоставление свойств правил CityEngine с полями атрибутов называется сопоставлением полей по умолчанию.

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

  • Значение параметра Пакет правил — это CityEngine .rpk файл. Это сжатый файл, содержащий скомпилированное правило CityEngine и элементы, связанные с ним. Параметр Экспорт геометрии листов доступен только в том случае, если в пакете входных правил указано, что он поддерживает эту операцию, и содержит следующую аннотацию CGA: @StartRule @Out (granularity=separatedShapes).

  • Когда геометрии листов генерируются с использованием параметра Экспорт геометрии листов, стандартный набор классов пространственных объектов создается в том же месте, что и первичный выходной класс пространственных объектов-мультипатчей, и имеет следующие соглашения об именах: <outputFC_Points>, <outputFC_MPoints> и <outputFC_Lines>. Все выходные классы объектов содержат атрибутивное поле OriginalOID, которое ссылается на ObjectID входного класса объектов, из которого создается выходной класс. Поле OriginalOID может использоваться для соединения выходного класса объектов с входным. Если отчеты строятся с использованием параметра Включить отчеты, выходной класс объектов также будет получать атрибут для каждого отчета.

  • Поле OriginalOID добавляется к выходным классам пространственных объектов, чтобы содержать ObjectID входного объекта, из которого создан каждый выходной объект. Если входной класс пространственных объектов уже содержит поле с именем OriginalOID, то к новому имени поля прибавляется число, например, OriginalOID2.

  • Детальная информация об ошибках и предупреждениях, возникших при конвертации, записана в файл журнала с именем ArcGISProLog<process ID and GUID>.xml (когда инструмент запускается в интерактивном режиме в ArcGIS AllSource и включено ведение журнала диагностики), либо pythonLog<process ID and GUID>.xml (когда инструмент запускается с помощью автономного скрипта Python и включено ведение журнала диагностики), в котором <process ID and GUID> это идентификатор процесса и новый идентификатор GUID, добавленный к имени файла журнала при каждом запуске инструмента, например, ArcGISProLog-12300~1A9C1C2A-A2CB-41AF-BEB9-1F8CDC4F6D29.xml или pythonLog-2160~807AFBC8-CA35-4370-9F90-4EDB2F9238AE.xml. Этот файл находится в <Install drive>:\Users\<user name>\Documents\ArcGIS\Diagnostics.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Входные точечные объекты, полигональные объекты или объекты-мультипатчи. Входные объекты могут быть слоями с условными обозначениями, построенными по правилам. При этом наследуется соответствие полей (настройки условных обозначений на основе атрибутов).

Feature Layer
Пакет правил

Файл пакета правил CityEngine (*.rpk), содержащий информацию о правиле CGA и ресурсы. Правило, аннотированное @StartRule в файле .rpk должно быть аннотировано @InPoint для пакета правил, предназначенного для точечных объектов, @InPolygon для пакета правил, предназначенного для полигональных объектов, @InMesh для пакета правил, предназначенного для объектов-мультипатч. Если @StartRule не аннотировано как @InPoint, @InPolygon или @InMesh, тип объекта будет принят как полигон.

File
Выходные объекты

Выходной класс пространственных объектов, содержащий объекты-мультипатчи, обработанные правилами CGA. Поле OriginalOID добавляется к выходным классам пространственных объектов, чтобы содержать ObjectID входного объекта, из которого создан каждый выходной объект.

Feature Class
Включить существующие поля
(Дополнительный)

Указывает, будет ли выходной класс объектов включать поля атрибутов входного класса объектов.

  • Отмечено – атрибутивные поля из входного класса объектов будут включены в выходной класс. Это значение по умолчанию
  • Не отмечено – атрибутивные полей из входного класса объектов не будут включены в выходной класс. Эта опция используется автоматически, если включен параметр Экспорт геометрии листов.

Boolean
Включить отчеты
(Дополнительный)

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

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

Этот параметр игнорируется, если пакет правил не содержит логику для генерации отчетов.

Boolean
Экспорт формы листа
(Дополнительный)

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

Пакеты правил CityEngine создают ресурсы с помощью генерации частей компонентов и их объединения в один 3D объект. Эти компоненты или геометрии листов также могут храниться как отдельные объекты. Эта опция может быть особенно важной при выполнении аналитических операций с использованием субэлементов 3D-объекта, таких, как окна здания.

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

  • Отмечено – будут создаваться дополнительные выходные классы объектов. Атрибутивные поля из входного класса объектов не будут включены в выходной класс. Выходной класс объектов будет содержать поле OriginalOID, которое ссылается на ObjectID входного класса объектов, по которому создается выходной класс.
  • Не отмечено – дополнительные классы объектов не будут создаваться, даже если дополнительные геометрии листов заданы логикой правила. В выходных объектах-мультипатч будет содержаться вся геометрия. Это значение по умолчанию

Boolean

Производные выходные данные

ПодписьОписаниеТип данных
Выходные точечные объекты

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

Feature Class
Выходные линейные объекты

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

Feature Class
Выходные мультиточечные объекты

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

Feature Class

arcpy.ddd.FeaturesFromCityEngineRules(in_features, in_rule_package, out_feature_class, {in_existing_fields}, {in_include_reports}, {in_leaf_shapes})
ИмяОписаниеТип данных
in_features

Входные точечные объекты, полигональные объекты или объекты-мультипатчи. Входные объекты могут быть слоями с условными обозначениями, построенными по правилам. При этом наследуется соответствие полей (настройки условных обозначений на основе атрибутов).

Feature Layer
in_rule_package

Файл пакета правил CityEngine (*.rpk), содержащий информацию о правиле CGA и ресурсы. Правило, аннотированное @StartRule в файле .rpk должно быть аннотировано @InPoint для пакета правил, предназначенного для точечных объектов, @InPolygon для пакета правил, предназначенного для полигональных объектов, @InMesh для пакета правил, предназначенного для объектов-мультипатч. Если @StartRule не аннотировано как @InPoint, @InPolygon или @InMesh, тип объекта будет принят как полигон.

File
out_feature_class

Выходной класс пространственных объектов, содержащий объекты-мультипатчи, обработанные правилами CGA. Поле OriginalOID добавляется к выходным классам пространственных объектов, чтобы содержать ObjectID входного объекта, из которого создан каждый выходной объект.

Feature Class
in_existing_fields
(Дополнительный)

Указывает, будет ли выходной класс объектов включать поля атрибутов входного класса объектов. Этот параметр не учитывается, если используется параметр in_leaf_shapes.

  • INCLUDE_EXISTING_FIELDSАтрибутивные полей из входного класса объектов будут включены в выходной класс. Это значение по умолчанию
  • DROP_EXISTING_FIELDSАтрибутивные поля из входного класса объектов будут включены в выходной класс объектов. Эта опция будет использоваться автоматически, если параметр in_leaf_shapes задан как FEATURE_PER_LEAF_SHAPE.
Boolean
in_include_reports
(Дополнительный)

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

  • INCLUDE_REPORTSВыходной класс пространственных объектов будет включать новые атрибутивные поля для хранения значений отчетов для каждого объекта, как определено логикой создания отчета пакета правил. Для каждого значения отчета создается уникальный атрибут.
  • EXCLUDE_REPORTSОтчеты, созданные в пакете правил, будут игнорироваться, а новые атрибуты, относящиеся к этим отчетам, не будут создаваться. Это значение по умолчанию

Этот параметр игнорируется, если пакет правил не содержит логику для генерации отчетов.

Boolean
in_leaf_shapes
(Дополнительный)

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

Пакеты правил CityEngine создают ресурсы с помощью генерации частей компонентов и их объединения в один 3D объект. Эти компоненты или геометрии листов также могут храниться как отдельные объекты. Эта опция может быть особенно важной при выполнении аналитических операций с использованием субэлементов 3D-объекта, таких, как окна здания.

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

  • FEATURE_PER_LEAF_SHAPEБудут создаваться дополнительные выходные классы объектов. Атрибутивные поля из входного класса объектов не будут включены в выходной класс объектов. Выходной класс объектов будет содержать поле OriginalOID, которое ссылается на ObjectID входного класса объектов, по которому создается выходной класс.
  • FEATURE_PER_SHAPEДополнительные классы объектов не будут создаваться, даже если дополнительные геометрии листов заданы логикой правила. В выходных объектах-мультипатч будет содержаться вся геометрия. Это значение по умолчанию
Boolean

Производные выходные данные

ИмяОписаниеТип данных
out_points

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

Feature Class
out_lines

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

Feature Class
out_multipoints

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

Feature Class

Пример кода

FeaturesFromCityEngineRules, пример 1 (окно Python)

В следующем скрипте окна Python показано, как используется функция FeaturesFromCityEngineRules в режиме прямого запуска.

import arcpy

arcpy.CheckOutExtension("3D")
arcpy.env.workspace = "C:/data"
arcpy.ddd.FeaturesFromCityEngineRules("in_polygons", 
                                      "rules.rpk", 
                                      "out_multipatches")
FeaturesFromCityEngineRules, пример 2 (автономный скрипт)

В следующем окне скрипта Python показано, как включить ведение журнала диагностики при использовании функции FeaturesFromCityEngineRules в автономном скрипте Python.

import arcpy
import ctypes
from arcpy import env

def enableDiagnostics(enable: bool = True):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  if enable:
    dll.EventLogEnable()
  else:
    dll.EventLogDisable()

def setLogLevel(level: int = 2):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  dll.EventLogSetLogLevel(level)

enableDiagnostics(True) #enable diagnostic logging
# Setting a log level (0 == error, 1 == warning, 2 == information, 3 == debug)
# will get that level and everything below it. 0 is only errors, 1 is warnings and errors etc.
setLogLevel(3) # Max diagnostic log level 

arcpy.CheckOutExtension("3D")
env.workspace = r"C:\data"
arcpy.ddd.FeaturesFromCityEngineRules(r"geometry.gdb\in_polygons", 
                                      "rules.rpk", 
                                      r"geometry.gdb\out_multipatches")

Параметры среды

Этот инструмент не использует параметры среды геообработки

Связанные разделы