Ejemplo de servicio GP: Ruta más corta en una red de calles
Carpeta |
ShortestRoute |
Propósito |
Crea la ruta más corta entre los puntos dados en una red de calles y genera indicaciones para conducir en un archivo de texto o HTML. |
Servicios |
|
Tareas de geoprocesamiento |
|
Entradas |
Dos o más puntos digitalizados por el usuario. |
Salidas |
|
Datos |
Utiliza un dataset de red de calles para el área de San Francisco que se proporciona en la carpeta ToolData. |
Extensiones |
|
Importante |
|
Carpeta correspondiente
C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute contiene los modelos, la herramienta secuencia de comandos y los datos completos.
Acerca de este ejemplo
ShortestRouteService, que se creó en este ejemplo, muestra cómo publicar las tareas de geoprocesamiento que calculan la ruta más corta en una red de calles entre los puntos especificados por el usuario y generan un archivo que contiene las indicaciones para conducir. La tarea Calcular ruta más corta e indicaciones de texto genera las indicaciones para conducir en un archivo de texto mientras que la tarea Calcular ruta más corta e indicaciones HTML genera las indicaciones para conducir en un archivo HTML. Las dos tareas también generan la salida de la ruta más corta como un conjunto de entidades.
Datos
Los datos para este ejemplo vienen de C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute.
Dataset de red
La carpeta ToolData contiene una geodatabase de archivos, SanFrancisco.gdb. Esta geodatabase contiene un dataset de red, Streets_ND, dentro del dataset de entidades Transportation. Este dataset de red es un modelo de la red de calles del área de San Francisco. Proporciona un atributo de red, TravelTime, que indica el tiempo que lleva viajar por cada segmento de calle en minutos.
Mapa base
La capa de mapa base que está dentro de SanFranciscoBaseMap.mxd tiene una capa, Streets, que se ilustra a continuación. Esta capa muestra la extensión del dataset de red. Esto significa que esta tarea se puede utilizar para determinar la ruta más corta sólo en esta extensión.
SanFranciscoBaseMap.mxd se publica como un servicio de mapas.
Caja de herramientas y documento de mapa
La caja de herramientas para el servicio de geoprocesamiento es ShortestRouteService y el documento de mapa de origen para el servicio es ShortestRouteService.mxd. ShortestRouteService contiene dos modelos y una herramienta de secuencia de comandos, Convertir indicaciones a HTML. Esta herramienta de secuencia de comandos se utiliza dentro del modelo Calcular ruta más corta e indicaciones HTML. ShortestRouteService.mxd contiene dos capas de datos de origen, Streets_ND (el dataset de red) y Ruta (la capa de análisis de red).
Modelo
Vista general del modelo
El modelo Calcular ruta más corta e indicaciones de texto se ilustra a continuación. Hay un parámetro de entrada, Paradas de entrada, que son puntos. La ruta más corta visita las paradas en base a la secuencia digitalizada. El modelo agrega los puntos digitalizados por el usuario como paradas en una capa de análisis de red de Ruta existente, realiza una operación para determinar la ruta más corta, genera las indicaciones para conducir y las escribe en un archivo de texto.
Utilizar una capa de análisis de red existente
En este modelo, no se crea una capa de análisis de red en el modelo como está en el ejemplo DriveTimePolygonsService. En su lugar, se utiliza la capa de ruta existente, Ruta. (Esta capa se creó mediante la herramienta Hacer la capa de la ruta). Se puede utilizar la capa existente ya que ninguna de las propiedades de análisis para la capa de ruta, tal como atributo de impedancia, aparecieron como parámetros de modelo. En el ejemplo DriveTimePolygonsService, los valores de corte predeterminados (una propiedad de análisis para las capas del área de servicio) aparecieron como un parámetro de modelo, de modo que se requirió la herramienta Crear la capa de área de servicio como un proceso de modelo.
Tenga en cuenta que si alguna de las propiedades de análisis de ruta, tal como atributo de impedancia, va a aparecer como parámetro de modelo, se debe utilizar la herramienta Hacer la capa de la ruta como un primer proceso en el modelo.
La capa de Ruta que se utilizó como una variable de entrada en el modelo se creó al agregar primero el dataset de red Streets_ND en ShortestRouteService.mxd y después al utilizar la herramienta Hacer la capa de la ruta. Para este ejemplo, se utilizaron los siguientes parámetros para la herramienta Hacer la capa de la ruta. Los valores predeterminados se utilizaron para los parámetros que no se mencionaron en esta tabla.
Parámetro |
Valor |
Entrada de la red de análisis |
Streets_ND |
Nombre de capa de salida |
Ruta |
Atributo de impedancia |
TravelTime |
Acumuladores |
TravelTime;Meters |
Política de giro en U |
ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY |
Procesos de modelo
La herramienta Agregar ubicaciones agrega los puntos digitalizados por el usuario como paradas en la capa de ruta. El parámetro Ubicaciones de entrada para la herramienta se especifica a través de un parámetro de modelo, Paradas de entrada. Este parámetro es un tipo de datos de conjunto de entidades. El esquema y la simbología para el conjunto de entidades derivan del archivo InputStops.lyr que se encuentra dentro de la carpeta ToolData.
El esquema para el conjunto de entidades de Paradas de entrada contiene un campo de texto, Nombre. Este campo se puede utilizar para proporcionar los nombres de paradas mientras genera indicaciones para conducir al asignar la propiedad de Nombre al campo de nombre en Asignaciones de campos, como se ilustra a continuación. Si el usuario no especifica el valor para el campo de nombre, se utilizan los valores predeterminados de Ubicación 1, Ubicación 2, etc., para los nombres de paradas.
Debido a que se utiliza la misma capa de ruta para cada ejecución del modelo, se deben quitar todas las paradas existentes antes de agregar las paradas nuevas. Para eliminar las paradas existentes, se desmarca la opción Adjuntar a ubicaciones existentes, que se ilustra a continuación.
La herramienta Solucionar calcula la ruta más corta en base al atributo de red TravelTime y a otras opciones como se especificó en la capa de Ruta. La ruta que se calculó se escribe en la subcapa Rutas de la capa de ruta de salida.
Las capas de análisis de red (tal como Ruta) no son tipos de datos de parámetros de salida compatible con los clientes de ArcGIS Server. Por lo tanto la herramienta Seleccionar datos se utiliza para obtener la subcapa Rutas desde la capa Ruta.
La herramienta Indicaciones se utiliza para generar las indicaciones para conducir y darles salida en un archivo de texto. El archivo de texto de salida que contiene las indicaciones para conducir se crea en el directorio de trabajo en el servidor con la variable en línea %scratchworkspace%. La variable SolveSucceeded que deriva de la herramienta Resolver se utiliza como una condición previa para la herramienta Indicaciones. Esto significa que el archivo de indicaciones se genera sólo si la herramienta Solucionar puede encontrar una ruta entre los puntos de entrada.
Capa de herramienta
La capa de herramienta Calcular ruta más corta e indicaciones de texto se crea al arrastrar el modelo Calcular ruta más corta e indicaciones de texto en la tabla de contenido de ArcMap. Debido a que el modelo actualiza la capa de Ruta existente, la salida de la capa de herramienta deriva su simbología de la subcapa Rutas dentro de la capa Ruta en la tabla de contenido.
Publicar
SanFranciscoBaseMap.mxd se publica como un servicio de mapas. ShortestRouteService.mxd se publica como un servicio de geoprocesamiento sin servicio de mapas de resultado, de la siguiente forma:
- En la ventana Catálogo, haga clic derecho en SanFranciscoBaseMap.mxd y haga clic en Publicar en ArcGIS Server.
- Acepte todos los valores predeterminados.
- En la ventana Catálogo, navegue hasta la conexión administrativa del servidor en el nodo Servidores SIG, haga clic derecho, y elija Agregar nuevo servicio. Asigne un nombre al servicio ShortestRouteService y elija Servicio de geoprocesamiento como el tipo.
- Haga clic en Siguiente.
- En el siguiente panel, elija Sincrónico para el Tipo de ejecución. Para la opción Las herramientas que expone el servicio de geoprocesamiento se almacenan en, elija Un mapa y especifique ShortestRouteService.mxd para el Documento de mapa. Como es una prueba del servicio, marque Mostrar mensajes.
- Haga clic en Siguiente. A partir de este punto, puede aceptar los valores predeterminados que le proporciona el asistente y crear el servicio.
Utilizar
- Abra ArcMap con un documento en blanco.
- Cree una conexión a ArcGIS Server en la ventana Catálogo si no existe ninguna.
- Agregue el servicio de mapas SanFranciscoBaseMap a la tabla de contenido de ArcMap.
- En la ventana Catálogo, en el nodo de conexión de usuario Servidores SIG, expanda la caja de herramientas ShortestRouteService y abra la herramienta Calcular ruta más corta e indicaciones de texto. La ilustración siguiente muestra el resultado de estos pasos:
- Agregar dos o más puntos para crear paradas. Opcionalmente, especifique los nombres para cada parada y haga clic en Aceptar para ejecutar la tarea.
Después de finalizar la tarea, la tabla de contenido contiene la capa de salida Ruta más corta, como se ilustra a continuación. Las paradas de entrada no son generadas como salida desde la tarea pero se agregan a la tabla de contenido desde el nodo Entradas en la ventana Resultados.
- El archivo de texto que contiene las indicaciones se copia desde el directorio de trabajos del servidor al espacio de trabajo temporal para la sesión actual de ArcMap. Este archivo de texto que contiene las indicaciones se puede visualizar al hacer doble clic en la ventana Resultados.
Generar indicaciones HTML
La herramienta Indicaciones que se utiliza en el modelo Calcular ruta más corta e indicaciones de texto puede generar las indicaciones en formato de texto o XML. Las indicaciones en formato XML se pueden convertir a un archivo HTML con un buen formato al aplicar una hoja de estilo mediante una secuencia de comandos Python. La secuencia de comandos, ApplyStyleSheet.py, que se encuentra en la carpeta Secuencia de comandos dentro de la carpeta ShortestRoute, se puede utilizar para convertir las indicaciones de formato XML a HTML. La carpeta de secuencias de comandos también contiene el archivo de hoja de estilo, Dir2WebDocumentNoMaps.xsl, que especifica el formato del archivo HTML.
Instalar la biblioteca Python externa
La secuencia de comandos ApplyStyleSheet.py utiliza una biblioteca Python externa, libxml2. La biblioteca no se proporciona con ArcGIS y no es compatible con Esri. Es un software externo, de terceros. Necesitará descargar e instalar esta biblioteca en los equipos SOC de ArcGIS Server. Navegue hasta http://xmlsoft.org/sources/win32/python/, descargue la última libxml2 instalación para Python 2.6 (por ejemplo, libxml2-python-2.7.4.win32-py2.6.exe: es posible que las versiones anteriores no funcionen). Después de realizar la descarga, haga doble clic en el archivo ejecutable para instalar la biblioteca.
Crear la herramienta de secuencia de comandos
Para utilizar la secuencia de comandos ApplyStyleSheet.py en el modelo, esta se agrega a la caja de herramientas ShortestRouteService como una herramienta de secuencia de comandos denominada Convertir indicaciones a HTML. Esta herramienta de secuencia de comandos toma el archivo de hoja de estilo y el archivo XML como entrada y genera un archivo HTML de salida.
Agregar la herramienta de secuencia de comandos al modelo
Se cambia el nombre del modelo Generar ruta más corta e indicaciones de texto y se guarda como Generar ruta más corta e indicaciones HTML con el fin de agregar la herramienta de secuencia de comandos Convertir indicaciones a HTML. En este modelo, el parámetro de tipo de archivo de salida para la herramienta Indicaciones se cambia a XML. Esta archivo XML y el archivo Dir2WebDocumentNoMaps.xsl se utilizan como variables de entrada para la herramienta de secuencia de comandos. El archivo HTML de salida se escribe en el directorio de trabajos en el servidor mediante la variable en línea %scratchworkspace%.
Publicar y utilizar
El modelo Calcular ruta más corta e indicaciones HTML se puede publicar como una nueva tarea dentro del servicio de geoprocesamiento ShortestRouteService que se creó anteriormente, como se describe a continuación:
- Cree la capa de herramienta Calcular ruta más corta e indicaciones HTML en ShortestRouteService.mxd al arrastrar el modelo Calcular ruta más corta e indicaciones HTML desde la ventana de Catálogo hasta la tabla de contenido de ArcMap.
- Guarde ShortestRouteService.mxd.
- En la ventana de Catálogo, detenga e inicie el servicio de geoprocesamiento ShortestRouteService.
El servicio ShortestRouteService ahora debería tener una segunda tarea denominada Calcular ruta más corta e indicaciones HTML. Esta tarea es similar a la tarea Calcular ruta más corta e indicaciones de texto excepto en que genera las indicaciones en formato HTML.