При выполнении сетевого анализа входные данные редко располагаются точно на ребрах или соединениях используемых исходных сетевых данных. Например, вы можете использовать набор сетевых данных, построенный из центральных линий улиц, но точки, которые вы хотите проанализировать, представляют центроиды городских участков. Центроиды участков не попадают на центральные линии улиц, скорее всего они будут смещены на некоторое расстояние от улиц. Для успешного выполнения сетевого анализа Network Analyst должен для каждого входного объекта анализа определить его местоположение в наборе сетевых данных. В анализе будет использоваться это сетевое местоположение, а не исходное местоположение входных данных. Например, если вы рассчитываете маршрут между двумя участками в вашем городе, начальной и конечной точками маршрута будут не центроиды участков, а скорее местоположения, где центроиды участков замыкаются на центральные линии улиц.
На рисунке выше показано, где в сети находится остановка маршрута. Фиолетовый круг указывает на географическое местоположение остановки. Однако линия маршрута начинается в ближайшей точке на уличной сети, которая является сетевым местоположением точки.
Как работает определение местоположения
Сетевое местоположение вычисляется на основе нескольких факторов, включая географическое местоположение входных данных, параметры сетевого анализа, для которых будут использоваться входные данные, и заданные пользователем параметры определения местоположения в инструменте или функции, используемой для определения местоположения входных данных. Эта процедура работает следующим образом для входной точки:
- Network Analyst находит ближайшую точку на ближайшем к исходному местоположению точки ребре сети.
- Network Analyst рассматривает параметры сетевого анализа и пользовательские параметры определения местоположения, чтобы определить, является ли это ребро допустимым для определения местоположения входных данных анализа. Если ребро считается недопустимым для определения местоположения, оно пропускается и рассматривается следующее по близости ребро. Ниже приведены несколько причин, по которым ребро может считаться недопустимым для определения местоположения:
- Ребро ограничено выбранным режимом передвижения. Например, если текущий режим передвижения запрещает использование автомагистралей с ограничением въезда, а ближайшим ребром сети является автомагистраль с ограничением въезда, точки анализа не смогут быть размещены на этом ребре.
- Ребро или ближайшая часть ребра ограничена барьером.
- Ребро ограничено заданными вами настройками определения местоположения. Например, вы можете использовать поисковый запрос, чтобы предотвратить размещение входных данных на ребрах сети с определенным классом дорог.
- Процесс будет повторятся, каждый раз исследуя следующее ближайшее ребро сети, пока не будет найдено допустимое сетевое местоположение для входной точки. Если в пределах заданного допуска расстояния поиска не найдено ни одного допустимого местоположения, точка остается не размещенной и не может быть использована в анализе.
При определении местоположения точечных барьеров режим передвижения и другие барьеры игнорируются. Учитываются только геометрия и заданные пользователем параметры определения местоположения.
Линии и полигоны также могут использоваться в качестве входных данных сетевого анализа, но только в качестве линейных и полигональных барьеров. Эти барьеры размещаются на всех ребрах сети или соединениях, которые они перекрывают, в зависимости от заданных пользователем параметров определения местоположения.
Поля сетевого местоположения
После того как для входного объекта было определено местоположение в сети, его сетевое местоположение определяется с помощью полей сетевого местоположения.
Поля сетевого местоположения для точек
Для точечных входных данных поля сетевого местоположения содержат идентификатор ребра сети или соединения, на котором находится точка. Если точка расположена на ребре, то поля местоположения также содержат положение вдоль этого ребра и ту сторону ребра, на которую попадает точка. Поля сетевого местоположения для точечных входных данных выглядят следующим образом:
Имя поля | Описание | Тип данных |
---|---|---|
SourceID | Числовой идентификатор исходного класса пространственных объектов набора сетевых данных, в котором находится входная точка. | Long |
SourceOID | ObjectID объекта в источнике, на котором расположена входная точка. | Long |
PosAlong | Положение направления оцифровки исходного линейного объекта. Это значение хранится как доля. Это поле пустое, если сетевое местоположение ссылается на соединение. | Double |
SideOfEdge | Сторона грани по отношению к направлению оцифровки линейного объекта. Это поле ограничено доменом из двух значений: Правая сторона (1), и Левая сторона (2). | Long |
SnapX | Координата x положения точки в наборе сетевых данных в системе координат набора сетевых данных. | Double |
SnapY | Координата y положения точки в наборе сетевых данных в системе координат набора сетевых данных. | Double |
SnapZ | Координата z положения точки в наборе сетевых данных в системе координат набора сетевых данных. Поле SnapZ равно 0, если сеть двухмерная. | Double |
DistanceToNetworkInMeters | Расстояние в метрах между географическим положением точки и положением, где она находилась в сети. | Double |
Поля сетевого местоположения для линий и полигонов
Линии и полигоны могут использоваться в качестве барьеров в сетевом анализе. Сетевое местоположения входных линейных или полигональных данных определяется одним полем BLOB: Locations.
Имя поля | Описание | Тип данных |
---|---|---|
Locations | Информация в этом поле определяет, какие ребра и соединения сети покрыты линией или полигоном и долю покрытия для каждого покрытого элемента ребра. Вы не можете напрямую читать или редактировать информацию, содержащуюся в этом поле, но Network Analyst использует ее при выполнении анализа. | Blob |
Как и когда вычисляются сетевые местоположения в сетевом анализе
Способ и время определения местоположения входных данных в сети различаются в зависимости от способа выполнения сетевого анализа.
Рабочие процессы сетевого анализа на основе слоев
При выполнении анализа с использованием слоя сетевого анализа входные данные добавляются в слой сетевого анализа с помощью инструмента Добавить местоположения. Если слой анализа ссылается на набор данных локальной сети, то сетевые местоположения входных данных вычисляются при запуске инструмента Добавить местоположения, и вы можете просмотреть заполненные поля сетевых местоположений в таблице атрибутов подслоя, в который вы добавили входные данные. По умолчанию местоположения точек, добавленных в слой сетевого анализа, отображаются в их первоначальных местоположениях, даже если сетевые местоположения были вычислены и используются в анализе. Вы можете отобразить точки в их сетевых местоположениях, включив опцию Замкнуть на сеть в инструменте Добавить местоположения.
Инструмент Добавить местоположения содержит несколько параметров для управления поведением определения местоположения. Например, вы можете установить допуск расстояния поиска, указать, какие исходные объекты сети должны или не должны использоваться для определения местоположения, или задать поисковый запрос для ограничения исходных объектов сети по определенным характеристикам. Подробнее об этих параметрах можно прочитать в документации инструмента.
Кроме того, при определении местоположения входных данных учитывается режим передвижения слоя сетевого анализа и существующие барьеры. Входные данные не размещаются на ребрах и соединениях, которые ограничены режимом передвижения или существующими барьерами. Следовательно, рекомендуется установить режим передвижения и загрузить барьеры перед загрузкой других входных данных анализа. Однако если вы изменяете режим передвижения после добавления местоположений или добавляете или удаляете барьеры, сетевые местоположения затронутых точек автоматически пересчитываются, чтобы убедиться, что они остаются действительными.
Если ваш слой анализа ссылается на сервис портала, поля местоположения не будут вычислены до тех пор, пока вы не запустите расчет анализа. Инструмент Добавить местоположения добавляет входные данные в слой анализа без вычисления полей местоположения. Во время расчета входные данные отправляются в сервис вместе с настройками анализа. Сервис вычисляет поля местоположения, выполняет анализ и возвращает результат. После того, как слой был вычислен, вы можете увидеть заполненные поля местоположения в атрибутивных таблицах входных подслоев.
Вы также можете использовать инструменты редактирования для ручного создания входных данных сетевого анализа. Сетевые местоположения для этих входных объектов вычисляются автоматически при вычислении слоя анализа.
Рабочие процессы с использованием готовых к использованию инструментов
При выполнении анализа с использованием ArcGIS Online routing services через готовые к использованию инструменты сетевые местоположения вычисляются сервисом при запуске инструмента. Вы можете увидеть сетевые местоположения, которые были использованы, в таблицах атрибутов входных объектов, возвращаемых сервисом. В готовых к использованию инструментах нет специальных настроек определения местоположений, но при определении местоположения входных данных учитываются настройки режима передвижения и барьеры. Входные данные не размещаются на ребрах и соединениях, которые ограничены режимом передвижения, ограничениями или атрибутом импеданса или которые перекрываются барьерами.
Рабочие процессы на основе Python с использованием модуля Network Analyst
При выполнении анализа в Python с помощью модуля Network Analyst, arcpy.nax, входные данные добавляются в анализ с помощью метода load или метода insertCursor на объекте расчета сетевого анализа. Сетевые местоположения не вычисляются до тех пор, пока анализ не будет выполнен с помощью метода solve. После выполнения анализа заполненные поля местоположения появляются в выходных данных, доступных через объект результата расчета.
Каждый объект сетевого анализа содержит некоторые свойства, которые управляют поведением определения местоположения. Например, можно задать допуск расстояния поиска с помощью свойств searchTolerance и searchToleranceUnits или задать поисковый запрос с помощью свойства searchQuery, чтобы ограничить исходные объекты сети, соответствующие определенным характеристикам. Кроме того, при определении местоположения входных данных учитываются режим передвижения объекта анализа и барьеры. Входные данные не размещаются на ребрах и соединениях, которые ограничены режимом передвижения или любыми барьерами, включенными в анализ.
Предварительный расчет полей сетевых местоположений
Вычисление сетевых местоположений для большого числа входных данных может занимать много времени. Если вы планируете использовать одни и те же входные данные для нескольких анализов с использованием одного и того же набора сетевых данных и параметров анализа, вы можете сэкономить время обработки, предварительно рассчитав поля сетевого местоположения. Вы можете использовать инструмент Вычислить местоположения, который добавляет поля сетевого местоположения в класс объектов на основе заданного набора сетевых данных, режима передвижения и настроек инструмента.
При выполнении анализа с использованием слоя сетевого анализа предварительно вычисленные поля местоположения могут использоваться, когда вы добавляете входные данные в слой анализа с помощью инструмента Добавить местоположения. Для этого используйте опцию Сопоставление полей, чтобы сопоставить поля сетевого местоположения из входных объектов со свойствами сетевого местоположения. Если вы используете диалоговое окно инструмента, установите в выпадающем списке сопоставления полей значение Использовать поля сетевого местоположения, чтобы включить это сопоставление.
При выполнении анализа в Python с помощью модуля Network Analyst поля сетевого местоположения могут быть сопоставлены из входных данных в поля входного класса с помощью параметра field_mappings метода load, если вы задали для параметра use_location_fields значение True.
При сопоставлении полей сетевого местоположения для анализа сопоставляйте только поля SourceID, SourceOID, PosAlong и SideOfEdge. Поля SnapX, SnapY, SnapZ и DistanceToNetworkInMeters являются информационными и не требуются при определении местоположений для анализа.
Вы не можете использовать предварительно вычисленные сетевые местоположения при использовании готовых к использованию инструментов из ArcGIS Online или при использовании слоя сетевого анализа, который ссылается на ArcGIS Online в качестве источника сетевых данных. Однако если слой сетевого анализа ссылается на ваш корпоративный портал в качестве источника сетевых данных, вы можете предварительно вычислить поля местоположений, используя тот же набор сетевых данных, который вы использовали при публикации ArcGIS Enterprise routing services, и сервисы будут использовать эти поля местоположений при анализе.
Предварительно вычисленные поля местоположения действительны только для набора сетевых данных и режима передвижения, для которых они были вычислены. Если вы планируете использовать эти точки с другой сетью или режимом передвижения, пересчитайте поля местоположения. Кроме того, если вы редактируете набор сетевых данных, пересчитайте все сохраненные поля местоположения на случай, если изменения повлияют на расположение входных данных.
Неразмещенные входные данные
Иногда Network Analyst не может определить местоположение входных данных в сети. Чаще всего это происходит, когда в пределах заданного допуска расстояния поиска не удается найти допустимые сетевые ребра или соединения. Эти неразмещенные входные данные не могут быть использованы в сетевом анализе.
Если местоположение точки не определено, то поля сетевого расположения не заполняются. Кроме того, поле Status имеет значение 1(Not Located). Вы можете использовать поле Status для построения запроса таблицы, чтобы найти все неразмещенные входные данные. Просмотрите географические местоположения этих неразмещенных точек, чтобы определить, безопасно ли их игнорировать или их необходимо отредактировать.
При вычислении слоя сетевого анализа, неразмещенные входные данные по умолчанию игнорируются. Если вы хотите, чтобы в случаях обнаружения каких-либо неразмещенных входных данных расчет завершался неудачей, снимите флажок Игнорировать некорректные местоположения в инструменте Расчет. Для рабочих процессов на основе Python используйте свойство ignoreInvalidLocations объекта расчета сетевого анализа, чтобы указать, следует ли игнорировать неразмещенные точки. При выполнении анализа с использованием готовых к использованию инструментов неразмещенные входные данные всегда игнорируются.
Используйте направление движения транспортного средства для более точного расчета сетевых местоположений
Направление движения транспортного средства, его курс, можно использовать для более точного определения его местоположения в сети.
Узнайте больше о том, как использовать направление движения при определении местоположения точек