Skip to main content

Обновление текущих данных о дорожном движении

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

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

  • Вы должны настроить crontab для пользователя операционной системы, указанного в качестве учетной записи ArcGIS Server.

  • Скрипт Python требует версии Python 3.9 или выше. Важно использовать версию Python, которая не входит в ArcGIS Server; вместо этого вы должны использовать версию Python, которая изначально доступна в вашей операционной системе.

  • В среде Python должен быть установлен модуль requests.

Обновляйте текущие данные о дорожном движении каждые две минуты, запустив скрипт Python через crontab. В приведенном примере подразумевается, что ArcGIS Server установлен в /arcgis/server.

(crontab -l; echo "*/2 * * * * /usr/bin/python3 /arcgis/server/framework/runtime/ArcGIS/Resources/ArcToolBox/Services/routingservices/update_traffic_cache_scheduler.py >/dev/null 2>&1") | crontab -

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

Обновляйте текущие данные о дорожном движении каждые две минуты, запустив скрипт Python с помощью планировщика задач Windows. В приведенном примере подразумевается, что ArcGIS Server установлен в C:\Program Files\ArcGIS\Server.

schtasks /create /tn "ArcGISLiveTrafficDataUpdater" /tr "\"C:\Program Files\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\arcgispro-py3\python.exe\" \"C:\Program Files\ArcGIS\Server\framework\runtime\ArcGIS\Resources\ArcToolBox\Services\routingservices\update_traffic_cache_scheduler.py\"" /sc minute /mo 2 /ru "SYSTEM"

Примечание:

Описанные выше действия должны быть выполнены на каждом компьютере на сайте ArcGIS Server из нескольких компьютеров.

Скрипт Python генерирует файл журнала с именем update_traffic_cache_scheduler.log, который хранится в папке по умолчанию, куда ArcGIS Server записывает свои журналы, такие как <ArcGIS Server installation directory>/arcgis/server/usr/logs. Вы можете проверить этот файл журнала, чтобы определить, возникли ли какие-либо ошибки во время выполнения скрипта.

Скрипт Python генерирует файл журнала с именем update_traffic_cache_scheduler.log, который хранится в папке по умолчанию, куда ArcGIS Server записывает свои журналы, такие как c:\arcgisserver\logs. Вы можете проверить этот файл журнала, чтобы определить, возникли ли какие-либо ошибки во время выполнения скрипта.

Проверка статуса данных о дорожном движении в реальном времени

После того как вы настроили регулярное обновление данных о дорожном движении в режиме реального времени, вы можете проверить, успешно ли обновляются данные, запустив инструмент GetLiveTrafficStatus в сервисе геообработки NetworkAnalysisUtilities. Этот сервис доступен в той же папке, где были опубликованы другие сервисы маршрутизации. Например, если сервисы маршрутизации были опубликованы в папке сервиса с именем Routing, URL-адрес инструмента GetLiveTrafficStatus будет https://machine.example.com/webadaptorname/rest/services/Routing/NetworkAnalysisUtilities/GPServer/GetLiveTrafficStatus. Выходные данные GetLiveTrafficStatus могут быть использованы для проверки обновления данных о трафике.

Пример выходных данных инструмента GetLiveTrafficStatus показывает, что последнее обновление было выполнено успешно, т.к. isLastUpdateSuccessful равно true. Если во время последнего обновления возникли ошибки, isLastUpdateSuccessful задается равным false, и причины сбоя возвращаются как часть свойства lastUpdatedMessages.

{
"results": [
{
"paramName": "status",
"dataType": "GPString",
"value": {
 "cachePath":  "C:\\NA\\RoutingServices\\traffic-cache\\openlr.3a795f46cf77473fb1dc606ef73a2cb5",
  "isLastUpdateSuccessful":  true,
  "isUpdateInProgress":  false,
  "roadClosuresDataAvailable":  true,
  "roadClosuresDataSize":  64427318,
  "speedDataAvailable":  true,
  "speedsDataSize":  3977019303,
  "tempDataSize":  365970076,
  "trafficCacheStatus":  {
  "endTimeWindow":  1744065360000,
   "lastCreatedFileNames":  [
   "speeds.20250407132800.1.ff.dat",
    "speeds.20250407213200.1.nff.dat",
    "road_closures.20250407213200.1.dat",
    "speeds.20250407213200.info.dat",
    "speeds.20250407213600.info.dat"
  ],
   "lastDecodingElapsedTime":  0,
   "lastRemovedFileNames":  [
   "speeds.20250407173200.info.dat",
    "road_closures.20250407173200.1.dat"
  ],
   "lastUpdatedElapsedTime":  11582,
   "lastUpdatedMessages":  [
  ],
   "lastUpdatedTime":  1744062137882,
   "remainingSpeedLocationsToMatch":  0,
   "roadClosureLocationsCount":  23153,
   "selectedTrafficDataRegions":  [
   "CAN",
    "MEX",
    "USA_N",
    "USA_SW",
    "USA_SE",
    "USA_M"
  ],
   "speedLocationsCount":  1468719,
   "startTimeWindow":  1744047330000
 }
}
}
],
"messages": [
]
}