Копирование исходных классов объектов

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

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

К типам сетевых данных, ссылающимся на ID классов объектов, в которых при копировании данных могут появиться ошибочные ссылки, относятся повороты, указательные щиты и таблицы трафика (особенно таблицы Streets-Profiles и Streets-TMC).

Если ID классов объектов, на которые ссылаются повороты, указательные столбы или таблицы трафика, неверны, появляются ошибки, или, если ID допустимы, но ошибочны, возможно получение непредсказуемых результатов. Например, таблицы соединений Streets-Profiles или Streets-TMC, используемые с данными трафика, могут ссылаться на неверные объекты улиц и, таким образом, станет причиной отображения или использования неточной информации о скорости перемещения во время анализа. Подобным образом таблица Signpost-Streets может ссылаться на несоответствующие улицы, что приведет к неточностям в пошаговых направлениях.

ПодсказкаПодсказка:

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

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

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

ПримечаниеПримечание:

Предположим у вас имеется класс объектов-источников ребер Streets; в следующих шагах мы будет называть его исходный класс объектов Streets. Также предположим, что у вас имеются исходные повороты, указательные щиты и данные трафика, связанные с исходным классом объектов Streets. Теперь эти исходные данные копируются в другой набор классов объектов; таким образом, создаются копии набора данных Streets, поворотов, щитов и данных трафика. В следующем шаге продублированные данные будут называться копиями класса Streets, класса поворотов, таблицы щитов signposts-streets и таблиц данных трафика. Определение исходных и скопированных данных таким способом облегчит выполнение следующих шагов.

Шаги:
  1. В окне Каталога (Catalog) в ArcMap найдите исходный класс объектов Streets. Щелкните на классе объектов правой кнопкой мыши и выберите Свойства (Properties).
  2. В диалоговом окне Свойства класса объектов (Feature Class Properties) перейдите на закладку Общие (General).
  3. Щелкните на кнопку с точками рядом с полем Имя (Name).

    В диалоговом окне ID класса объектов (Object Class ID) указан ID класса пространственных объектов. Запишите это значение, поскольку его может быть нужно найти в копиях поворотов, указателей (щитов) и таблиц данных трафика.

  4. ПримечаниеПримечание:

    Кнопка с многоточием была добавлена в ArcMap в версии 10.1 специально для получения ID класса объектов. Если вам нужно определить ID класса объектов с помощью ArcMap 10.0, используйте окно Python, как описано ниже.

    1. Добавьте класс объектов в ArcMap.

    2. Нажмите кнопку Python (Python Window) Python на панели инструментов Стандартные, чтобы открыть окно Python.

    3. В окне Python введите arcpy.Describe("<имя слоя>").DSID, указав вместо <имя слоя> имя слоя объектов.

      Например, чтобы узнать ID класса объектов слоя Streets, введите arcpy.Describe("Streets").DSID.

    4. Нажмите ENTER.

      Идентификатор класса объектов отобразится под введенной командой.

    5. Удалите исходный слой объектов Streets из ArcMap.

  5. Получите ID копии класса объектов Streets. Используйте тот же метод, что и для получения ID исходного класса Streets.
  6. Если значения ID исходного класса объектов Streets и скопированного совпадают, других действий не требуется; но если они отличаются, необходимо открыть атрибутивные таблицы копий класса поворотов, таблицы Signpost-Streets и таблиц данных трафика и заменить ID исходного класса Streets, найденный в шаге 3, на идентификатор копии класса Streets, найденном в шаге 4.

    • Чтобы исправить копию класса поворотов, замените значение ID исходного класса Streets, находящееся в поле Edge#FCID (где # – любое число), на значение ID копии класса Streets.

      Можно также создать набор сетевых данных из копий и запустить инструмент Обновить по геометрии (Update by Geometry). Этот инструмент автоматически обновит значения полей объектов-поворотов, но вам придется вручную изменить геометрию тех объектов, вершины которых не пересекаются с копиями объектов-улиц, или которые пересекаются с совпадающими объектами-улицами. Для обновления геометрии необходимо, чтобы вершины объектов-поворотов пересекались с одним исходным ребром, это нужно для определения исходного класса объектов и ID объектов, с которыми связаны повороты.

    • Чтобы исправить копии таблиц Signposts-Streets, Streets-Profiles или Streets-TMC, найдите поле EdgeFCID и замените все встречающиеся ID исходного класса Streets на значение ID копии класса Streets.

5/28/2014