<\/HEAD>
Como parte del Waze Connected Citizen Program (CCP)<\/A>, los socios obtienen acceso a congestiones de tráfico e incidentes en tiempo real reportados a través de la aplicación Waze (en formatos XML y JSON). Ya existen técnicas y documentación<\/A> sobre cómo consumir estos datos en una plataforma ArcGIS usando GeoEvent.<\/P><\/P>
En este blog, describiré una técnica para consumir estos datos en ArcGIS Online mediante Python y el Programador de Tareas de Windows. El
script inicial de Python<\/A> fue desarrollado por Joel Meier<\/A> que modifiqué para ajustarlo al flujo de trabajo propuesto. También una mención especial a mis colegas Edmund Hall<\/A> y Louis Tian<\/A> quienes me ayudaron a depurar. Y por último, pero no menos importante, quiero agradecer a Andrew Stauffer<\/A> por ayudarnos como socio y sacar el máximo provecho del Waze CCP<\/A>.<\/P><\/P>
Capa de Entidad Puntual<\ /SPAN ><\ /H4 >OBJECTID (tipo: esriFieldTypeOID, alias: OBJECTID, Tipo SQL: sqlTypeOther, longitud: 0, nulo: falso, editable: falso)*<\ /STRONG ><\ /EM ><\ /SPAN ><\ /LI >DateReported (tipo: esriFieldTypeDate, alias: DateReported, Tipo SQL: sqlTypeTimestamp2, longitud: 0, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >Title (tipo: esriFieldTypeString, alias: Title, Tipo SQL: sqlTypeOther, longitud: 25, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >ReportType (tipo: esriFieldTypeString, alias: ReportType, Tipo SQL: sqlTypeOther, longitud: 25, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >ReportSubtype (tipo: esriFieldTypeString, alias: ReportSubtype, Tipo SQL: sqlTypeOther, longitud: 50, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >Street (tipo: esriFieldTypeString, alias: Street, Tipo SQL: sqlTypeOther, longitud: 256, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >City (tipo: esriFieldTypeString, alias: City, Tipo SQL: sqlTypeOther, longitud: 50, nulo: verdadero, editable: verdadero)<\ /EM ><\ /SPAN ><\ /LI >Description (tipo : esriFieldTypeString , alias : Description , Tipo SQL : sqlTypeOther , longitud : 1024 , nulo : verdadero , editable : verdadero )< \ / EM > < \ / SPAN > < \ / LI > < LI > < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">Reliability < EM >( tipo : esriFieldTypeInteger , alias : Reliability , Tipo SQL : sqlTypeOther , nulo : verdadero , editable : verdadero )< \ / EM > < \ / SPAN > < \ / LI > < LI > < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">UUID < EM >( tipo : esriFieldTypeString , alias : UUID , Tipo SQL : sqlTypeOther , longitud : 100 , nulo : verdadero , editable : verdadero )< \ / EM > < \ / SPAN > < \ / LI > < \ / UL > < UL style = "padding : 0px 0px 0px 30px ; "> < LI style = "margin : 0.2em 0px ; "> < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">CreationDate < EM >( tipo : esriFieldTypeDate , alias : CreationDate , Tipo SQL : sqlTypeOther , longitud : 8 , nulo : verdadero , editable : falso )< STRONG > *< \ / STRONG > < \ / EM > < \ / SPAN > < \ / LI > < LI style = "margin : 0.2em 0px ; "> < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">Creator < EM >( tipo : esriFieldTypeString , alias : Creator , Tipo SQL : sqlTypeOther , longitud : 128 , nulo : verdadero , editable : falso )< STRONG > *< \ / STRONG > < \ / EM > < \ / SPAN > < \ / LI > < LI style = "margin : 0.2em 0px ; "> < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">EditDate < EM >( tipo : esriFieldTypeDate , alias : EditDate , Tipo SQL : sqlTypeOther , longitud : 8 , nulo : verdadero , editable : falso )< STRONG > *< \ / STRONG > < \ / EM > < \ / SPAN > < \ / LI > < LI style = "margin : 0.2em 0px ; "> < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">Editor < EM >( tipo : esriFieldTypeString , alias : Editor , Tipo SQL : sqlTypeOther , longitud : 128 , nulo : verdadero , editable : falso )< STRONG > *< \ / STRONG > < \ / EM > < \ / SPAN > < \ / LI > < \ / UL > < P style = "text-align : right ; "> < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">< EM >< STRONG > *< \ / STRONG > campos pre-poblados< \ / EM > < \ / SPAN > < \ / P > < H4 id = "toc-hId-621495556" id = "toc-hId-621495556">< SPAN style = "text-decoration : line-through ; ">Capa de Entidad Lineal< \ / SPAN > < \ / H4 > < UL > < LI > < SPAN style = "text-decoration : line-through ; font-size : 13px ; ">OBJECTID < EM >( tipo : esriFieldTypeOID , alias : OBJECTID , Tipo SQL : sqlTypeOther , longitud : 0 , nulo : falso , editable : falso )< STRONG > *< \ / STRONG > < \ / EM > < \ / SPAN > </ LI> </ UL> Descripción, Tipo SQL: sqlTypeOther, longitud: 1024, nullable: true, editable: true)<\/EM><\/SPAN><\/LI>UUID (type: esriFieldTypeDouble, alias: UUID, SQL Type: sqlTypeOther, nullable: true, editable: true)<\/EM><\/SPAN><\/LI><\/UL>Shape__Length (type: esriFieldTypeDouble, alias: Shape__Length, SQL Type: sqlTypeDouble, nullable: true, editable: false)*<\/STRONG><\/EM><\/SPAN><\/LI>CreationDate (type: esriFieldTypeDate, alias: CreationDate, SQL Type: sqlTypeOther, length: 8, nullable: true, editable: false)*<\/STRONG><\/EM><\/SPAN><\/LI>Creator (type: esriFieldTypeString, alias: Creator, SQL Type: sqlTypeOther, length: 128, nullable: true, editable: false)*<\/STRONG><\/EM><\/SPAN><\/LI>EditDate (type: esriFieldTypeDate, alias: EditDate, SQL Type: sqlTypeOther, length: 8, nullable: true, editable: false)*<\/STRONG><\/EM><\/SPAN><\/LI>Editor (type: esriFieldTypeString, alias: Editor, SQL Type: sqlTypeOther, length: 128, nullable: true, editable: false)*<\/STRONG><\/EM><\/SPAN><\/LI><\/UL>*<\/STRONG>campos pre-poblados<\/EM><\/SPAN><\/P>Por favor asegúrese de usar los nombres exactos de campo y tipos<\/EM><\/STRONG>, (alternativamente tendría que ajustar el script).<\/SPAN><\/P>Una vez que las capas de entidades estén configuradas, por favor habilite la edición<\/STRONG> y configúrelas a PRIVATE<\/STRONG>.<\/SPAN><\/P>Por favor consulte "Waze Feed Technical Specifications [Get Waze Data]"<\/EM><\/STRONG> desde el Portal del Partner<\/A> para definiciones exactas sobre descripciones de campos.<\/P><\/BLOCKQUOTE><\/P>
Configurando el script de Python<\/H4>Reemplace las secciones de comentario (líneas 6, 9 y 10)<\/SPAN><\/EM> con su propio feed XML y URLs para sus capas de entidades de punto y línea.<\/P><SPAN class="keyword token">importar<\/SPAN> xml<SPAN class="punctuation token">.<\/SPAN>etree<SPAN class="punctuation token">.<\/SPAN>ElementTree <SPAN class="keyword token">como<\/SPAN> ET
<SPAN class="keyword token">importar<\/SPAN> urllib<SPAN class="punctuation token">.<\/SPAN>request
<SPAN class="keyword token">importar<\/SPAN> arcpy
<SPAN class="keyword token">desde<\/SPAN> datetime <SPAN class="keyword token">importar<\/SPAN> datetime
namespaces <SPAN class="operator token">=<\/SPAN> <SPAN class="punctuation token">{<\/ token">.<\/SPAN>find<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:subtype'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> namespaces<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">.<\/SPAN>text <SPAN class="keyword token">no es<\/SPAN> <SPAN class="operator token">None<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
Subtype <SPAN class="operator token">=<\/SPAN> member<SPAN class="punctuation token">.<\/SPAN>find<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:subtype'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> namespaces<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">.<\/SPAN>text<SPAN class="punctuation token">.<\/SPAN>replace<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'_'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">' '<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">.<\/SPAN>capitalize<SPAN class="punctuation token">(<\/SPAN><span class="punctuation token">)<\/span>
<span class="keyword token">else<\/span><span class="punctuation token">:<\/span>
Subtype <span class="operator token">=<\/span> <span class="string token">''<\/span>
UUID <span class="operator token">=<\/span> member<Span class="punctuation token">.<\/span>find<Span class="punctuation token">(<\/span><Span class="string token">'linqmap:uuid'<\/span><Span class="punctuation token">,<\/span> namespaces<Span class="punctuation token">)<\/span><Span class="punctuation token">.<\/span>text
Reliability <Span class="operator token">=<\/span> member<Span class="punctuation token">.<\/span>find<Span class="punctuation token">(<\/span><Span class="string token">'linqmap:reliability'<\/span><Span class="punctuation token">,<\/span> namespaces<Span class="punctuation token">)<\/span><Span class="punctuation token">.<\/span>text
<Span class="keyword token">if<\/span> len<Span class="punctuation token">(<\/span>member<Span class="punctuation token">.<\/span>findall<Span class="punctuation token">(<\/span><Span class="string token">'linqmap:reportDescription'<\/span><Span class="punctuation token">,<\/span> namespaces<Span class="punctuation token">)<\/span><Span class="punctuation token">)<\/span> <Span class="operator token">><\/span> <Span class="number token">0<\/span><Span class="punctuation token">:<\/span>
Description <Span class="operator token">=<\/span> member<Span class="punctuation token">.<\/span>find<Span class="punctuation token">(<\/span><Span class="string token">'linqmap:reportDescription'<\/span><Span class="punctuation token">,<\/span> namespaces<Span class="punctuation token">)<\/span><Span class="punctuation token">.<\/span>text
<Span class="keyword token">else<\/span><Span class="punctuation token">:<\/span>
Description <Span class="operator token">=<\/span> <Span class="string token">''<\/span>
Type <Span class="operator token">=<\/span> member<Span class="punctuation token">.<\/span>find<Span class="punctuation token">(<\/span><Span class="string token">'linqmap:type'<\/span><Span class="punctuation token">,<\/span> namespaces<Span class="punctuation token">)<\/span><Span class="punctuation token">.<\/span>text<Span class="punctuation token">.<\/span>replace<Span class="punctuation token">(<\/span><Span class="string token">'_'<\/span><Span class="punctuation token">,<\/span> <Span class="string token">' '<\/span><Span class="punctuation token">)<\/span><Span class="punctuation token">.<\/span>capitalize<Span class="punctuation token">(<\/pan>)
point <class="operatortoken">=</pan>member.find('georss:point',namespaces).text.replace(' -',',-').split(' ')
row <class="operatortoken">=</pan>Subtype,Type,Title,DateReported,City,Street,UUID,Reliability,Description,float(point[1] ) , float ( point[0] )
cursor <class="operatortoken" >=</ pan> arcpy.da.InsertCursor(fcp, ["ReportSubtype", "ReportType", "Title", "DateReported", "City", "Street", "UUID", "Reliability", "Description", "SHAPE@X", "SHAPE@Y"])
cursor.insertRow(row)
del cursor
print('etapa 1')
except:
pass
print('fallo Etapa 1')
elif line != None:
if Title != 'IRREGULARITY':
try:
Date = member.find('pubDate').text
DateReported = datetime.strptime(Date, '%a %b %d %H:%M:%S %z %Y')
if len(member.findall('linqmap:city', namespaces)) > 0:
City = member.find('linqmap:city', namespaces).text
else:
City = ''
if len(member.findall('linqmap:startNode', namespaces)) > 0:
StartNode = member.find('linqmap:startNode', namespaces).text
else:
StartNode = ''
if len<SPAN class="punctuation token">(<\/SPAN>member<SPAN class="punctuation token">.<\/SPAN>findall<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:endNode'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> namespaces<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="operator token">><\/SPAN> <SPAN class="number token">0<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
EndNode <SPAN class="operator token">=<\/SPAN> member<SPAN class="punctuation token">.<\/SPAN>find<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:endNode'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> namespaces<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">.<\/SPAN>text
<SPAN class="keyword token">else<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
EndNode <SPAN class="operator token">=<\/SPAN> <SPAN class="string token">''<\/SPAN>
<SPAN class="keyword token">if<\/SPAN> len<SPAN class="punctuation token">(<\/SPAN>member<SPAN class="punctuation token">.<\/SPAN>findall<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:reportDescription'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> namespaces<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="operator token">><\/SPAN> <SPAN class="number token">0<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
Description <SPAN class="operator token">=<\/SPAN> member<SPAN class="punctuation token">.<\/span>find<span class="punctuation token">(<\/span><span class="string token">'linqmap:reportDescription'<\/span><span class="punctuation token">,<\/span> namespaces<span class="punctuation token">)<\/span><span class="punctuation token">.<\/span>text
<span class="keyword token">else<\/span><span class="punctuation token">:<\/span>
Description <span class="operator token">=<\/span> <span class="string token">''<\/span>
<span class="keyword token">if<\/span> len<span class="punctuation token">(<\/span>member<span class="punctuation token">.<\/span>findall<span class="punctuation token">(<\/span><span class="string token">'linqmap:street'<\/span><span class="punctuation token">,<\/span> namespaces<span class="punctuation token">)<\/span><span class="punctuation token">)<\/span> <span class="operator token">><\/span> <span class="number token">0<\/span><span class="punctuation token">:<\/span>
Street <span class="operator token">=<\/span> member<span class="punctuation token">.<\/span>find<span class="punctuation token">(<\/span><span class="string token">'linqmap:street'<\/span><span class="punctuation token">,<\/span> namespaces<span class="punctuation token">)<\/span><span class="punctuation token">.<\/span>text
<span class="keyword token">else<\/span><span class="punctuation token">:<\/span>
Street <span class="operator token">=<\/span> <span class="string token">''<\/span>
UUID <span class="operator token">=<\/span> member<span class="punctuation token">.<\/span>find<span class="punctuation token">(<\/span><span class="string token">'linqmap:uuid'<\/span><span class="punctuation token">,<\/span> namespaces<span class="punctuation token">)<\/span><span class="punctuation token">.<\/</pan></translation>} token">'etapa 2'<\/SPAN><SPAN class="punctuation token">)<\/SPAN>
<SPAN class="keyword token">excepto<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
<SPAN class="keyword token">pasar<\/SPAN>
<SPAN class="keyword token">imprimir<\/SPAN><SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'falló Etapa 2'<\/SPAN><SPAN class="punctuation token">)<\/SPAN>
<SPAN class="keyword token">sino<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
<SPAN class="keyword token">intentar<\/SPAN><SPAN class="punctuation token">:<\/SPAN>
Fecha <SPAN class="operator token">=<\/SPAN> miembro<SPAN class="punctuation token">.<\/SPAN>encontrar<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'updateDate'<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">.<\/SPAN>texto
FechaReportada <SPAN class="operator token">=<\/SPAN> datetime<SPAN class="punctuation token">.<\/SPAN>strptime<SPAN class="punctuation token">(<\/SPAN>Fecha<SPAN class="punctuation token">, <\/SPAN><SPAN class="string token">'%a %b %d %H:%M:%S %z %Y'<\/SPAN><SPAN class="punctuation token">)<\/SPAN>
<SPAN class="keyword token">si<\/SPAN> len<SPAN class="punctuation token">(<\/SPAN>miembro<SPAN class="punctuation token">.<\/SPAN>encontrartodos<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'linqmap:city'<\/Span>, namespaces<Span class="punctuation token">)<\/Span>) > <Span class="number token">0<\/Span><Span class="punctuation token">:<\/Span>
Ciudad <Span class="operator token">=<\/Span> miembro<Span class="punctuation token">.<\/Span>encontrar<Span class="punctuation token">(<\/Span><Span class="string token">'linqmap:city'<\/Span>, namespaces<Span class="punctuation token">)<\/Span>.<Span class="punctuation token">texto
<Span class="keyword token">sino<\/Span><Span class="punctuation token">:<\/Span>
Ciudad <Span class="operator token">=<\/Span> <Span class="string token">''<\/Span>
<Span class="keyword token">si<\/Span> len<Span class="punctuation token">(<\/Span>miembro<Span class="punctuation token">.<\/Span>encontrartodos<Span class="punctuation token">(<\/Span><Span class="string token">'linqmap:startNode'<\/Span>, namespaces<Span class="punctuation token">)<\/Span>) > <Span class="number token">0<\/Span><Span class="punctuation token">:<\/Span>
NodoInicio <Span class="operator token">=<\/Span> miembro<Span class="punctuation token">.<\/span>encontrar<span class="punctuation token">(<span><span>'linqmap:startNode'</span>, namespaces)</span>.texto
<span clase= "keyword" >sino</span ><span clase= "puntuacion" >:</span >
NodoInicio <span clase= "operador" >=</span > <span clase= "cadena" >''</span >
<span clase= "keyword" >si</span > len<span clase= "puntuacion" >(</span >miembro<span clase= "puntuacion" >.</span >encontrartodos<span clase= "puntuacion" >(</span ><span clase= "cadena" >'linqmap:endNode'</span ><span clase= "puntuacion" >,</span > namespaces<span clase= "puntuacion" >)</span ><span clase= "puntuacion" >)</span > > <span clase= "numero" >0</span ><span clase= "puntuacion" >:</span >
NodoFin <span clase= "operador" >=</span > miembro<span clase= "puntuacion" >.</span >encontrar<span clase= "puntuacion" >(</span ><span clase= "cadena" >'linqmap:endNode'</span ><span clase= "puntuacion" >,</span > namespaces<span clase= "puntuacion" >)</span ><span clase= "puntuacion" >.</span >texto
<span clase= "keyword" >sino</span ><span clase= "puntuacion" >:</span >
NodoFin <span clase= "operador" >=</span > <span clase= "cadena" >''</span >
<span clase= "keyword" >si</span > len<span clase= "puntuacion" >(</span >miembro<span clase= "puntuacion" >.</span >encontrartodos<span clase= "puntuacion" >(</span ><span clase= "cadena" >'linqmap:reportDescription'</span ><span clase= "puntuacion" >,</span > namespaces<span clase= "puntuacion" >)</span ><span clase= "puntuacion" >)</span > > <span clase= "numero" >0</span ><span clase= "puntuacion" >:</span >
Descripción <span clase= "operador" >=</span > miembro<span clase= "puntuacion" >.</span >encontrar<span clase= "puntuacion" >(</span ><span clase= "cadena" >'linqmap:reportDescription'</span ><span clase= "puntuacion" >,</span > namespaces<span clase= "puntuacion" >)</span ><span clase= "puntuacion" >.</span >texto
<span clase= "keyword" >sino</span ><span clase= "puntuacion" >:</span >
Descripción < span classe = token">,</SPAN><SPAN class="string token">"DateReported"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"City"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Street"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Length"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportLevel"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"UUID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"StartNode"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"EndNode"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Description"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
array <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Array<SPAN class="punctuation token">()</SPAN>
<SPAN class="keyword token">for</SPAN> coords <SPAN class="keyword token">in</SPAN> line<SPAN class="punctuation token">:</SPAN>
xy <SPAN class="operator token">=</SPAN> coords<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">('],[')</SPAN>
array<SPAN class="punctuation token">.</SPAN>add<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN>xy<SPAN class="punctuation token">[1]</SPAN>, xy<SPAN class="punctuation token">[0]</Span>)</Span>)
cur<Span class="punctuation token">.</Span>insertRow<Span class="punctuation token">([</Span>Speed<span class="punctuation token">,</span>Delay<span class="punctuation token">,</span>Título<span class="punctuation token">,</span>Tipo<span class="punctuation token">,</span>DateReported<span class="punctuation token">,</span>Ciudad<span class="punctuation token">,</span>Calle<span class="punctuation token">,</span>Longitud<span class="punctuation token">,</span>Nivel<span class="punctuation token">,</span>UUID<span class="punctuation token">,</span>NodoInicio<span class="punctuation token">,</span>NodoFin<span class="punctuation token">,</span>Descripción<span class="punctuation token">,</span>arcpy<span class="punctuation token">.</span>Polyline<span class="punctuation token">(</span>array<span class="punctuation token">)</span>]</Span>)
<Span class="keyword token">del</Span> cur
<Span class="keyword token">print</Span>(<Span class="string token">'etapa 3'</Span>)
<Span class="keyword token">except</Span>:
<Span class="keyword token">pass</Span>
<Span class="keyword token">print</Span>(<Span class="string token">'fallo Etapa 3'</Span>)
<Span class="keyword token">else</Span>:
<Span class="keyword token">print</Span>(<Span class="string token">'Error'</Span>)<Span class="line-numbers-rows"><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN><\/SPAN><SPAN></span></span></span>
Programando el script
Una vez que el script de Python está en funcionamiento, use Windows Task Scheduler para ejecutar el script en intervalos de tiempo específicos, lo que añadirá nuevas características a las capas de entidades de ArcGIS Online (esta técnica mantendrá un historial de toda la información de tráfico desde la primera vez que ejecute el script).

Mostrando Información de Tráfico en Vivo
Para mostrar información de tráfico en vivo - cree vistas de capas de entidades y defina sus características para mostrar solo las características creadas en los últimos x minutos, siendo x la frecuencia con la que ha configurado el script de Python para ejecutarse.
He configurado el script de Python para ejecutarse cada 4 minutos - posteriormente las vistas de capas de entidades para mostrar características creadas en los últimos 4 minutos.

Una vez configurado, puede compartir estas vistas públicamente y mostrarlas en aplicaciones orientadas al público.
A continuación se muestran enlaces a nuestras vistas de capas de entidades y un mapa que muestra estas características junto con cierres de carreteras/aceras.
*haga clic aquí para saber más sobre nuestro proceso de solicitud para trabajos en carreteras/aceras

Enviar correo electrónico a personas específicas cuando se reporte un Accidente
Usé el método siguiente, alternativamente podría usar scripts similares en Python o crear su propio script en Python para activar un correo electrónico cuando se agreguen nuevas características a una capa de entidades.
Ejecute el script de correo electrónico que prefiera sobre una nueva vista de capa de entidades alojada (tipo geometría = punto), que solo muestre Accidentes (ReportType = "Accident"), donde DateReported fue en los últimos x minutos.

Y finalmente, configure Windows Task Scheduler para capturar cualquier nueva característica (accidentes) que ocurra en los últimos x minutos.
Espero que pueda aprovechar estos flujos de trabajo para adaptarlos a sus propias necesidades comerciales. Y por favor, no dude en compartir sus pensamientos, comentarios o preguntas en la sección de comentarios abajo.
¡Saludos! - Gee Fernando