Als onderdeel van het Waze Connected Citizen Program (CCP)<\/A>, krijgen partners toegang tot realtime verkeersopstoppingen en incidenten die via de Waze-app worden gemeld (in XML- en JSON-formaten). Er zijn al technieken en documentatie<\/A> over hoe deze gegevens in een ArcGIS-platform kunnen worden gebruikt met GeoEvent.<\/P><\/P>In deze blog zal ik een techniek beschrijven om deze gegevens te gebruiken in ArcGIS Online via Python en Windows Taakplanner. Het initiële Python-script<\/A> is ontwikkeld door Joel Meier<\/A> die ik heb aangepast om te passen bij de voorgestelde workflow. Ook een speciale vermelding voor mijn collega’s Edmund Hall<\/A> en Louis Tian<\/A> die mij hebben geholpen met debuggen. En last but not least wil ik Andrew Stauffer<\/A> bedanken voor het helpen van ons partner en het maximale uit het Waze CCP<\/A> te halen.<\/P><\/P>
<\/P>
In deze blog zal ik een techniek beschrijven om deze gegevens te gebruiken in ArcGIS Online via Python en Windows Taakplanner. Het
Lijn Feature Layer Sjabloon<\/STRONG><\/SPAN><\/P>
import<\/SPAN> xml.<\/SPAN>etree.<\/SPAN>ElementTree as<\/SPAN> ETimport<\/SPAN> urllib.<\/SPAN>requestimport<\/SPAN> arcpyfrom<\/SPAN> datetime import<\/SPAN> datetimenamespaces =<\/SPAN> {<\/SPAN>'georss'<\/SPAN> :<\/SPAN> '<\/'>http:\/\/www.georss.orggeorss'<\/'>,<\/'> 'linqmap'<\/'>:'http://www.linqmap.com' }tree = ET.ElementTree(file=urllib.request.urlopen('##URL for XML waze connection##'))root = tree.getroot()channel_head = []fcp = "##URL to Point - Feature Layer##"fcl = "##URL to Line - Feature Layer##"for member in root.findall('channel/item'): channel =[] Title = member.find('title').text.upper()try: point = member.find('georss:point', namespaces)) line = member.find('georss:line', namespaces))except: pass print('Fail Stage 0') if point != None: 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:street', namespaces)) > 0: Street = member.find('linqmap:street', namespaces).text else: Street = '' if len(member.findall('linqmap:subtype', namespaces)) > 0 and member token">.<\/SPAN>vind(<\/SPAN>'linqmap:subtype'<\/SPAN>, <\/SPAN>namespaces)<\/SPAN>.<\/SPAN>tekst is<\/SPAN> niet<\/SPAN> None:<\/SPAN> Subtype =<\/SPAN> lid.<\/SPAN>vind(<\/SPAN>'linqmap:subtype'<\/SPAN>, <\/SPAN>namespaces)<\/SPAN>.<\/SPAN>tekst.<\/SPAN>vervang(<\/SPAN>'_'<\/SPAN>, <\/SPAN>' '<\/SPAN>)<\/SPAN>.<\/SPAN>capitalizeer(<\/SPAN>)<\/span>anders<\/span>:<\/span> Subtype =<\/span> ''<\/span> UUID =<\/span> lid.<\/span>vind(<\/span>'linqmap:uuid'<\/span>, <\/span>namespaces)<\/span>.<\/span>tekst Betrouwbaarheid =<\/span> lid.<\/span>vind(<\/span>'linqmap:reliability'<\/span>, <\/span>namespaces)<\/span>.<\/span>tekstals<\/span> len(<\/span>lid.<\/span>vindalles(<\/span>'linqmap:reportDescription'<\/span>, <\/span>namespaces)<\/span>)<\/span> ><\/span> 0<\/span>:<\/span> Beschrijving =<\/span> lid.<\/span>vind(<\/span>'linqmap:reportDescription'<\/span>, <\/span>namespaces)<\/span>.<\/span>tekstanders<\/span>:<\/span> Beschrijving =<\/span> ''<\/span> Type < spanclass= "operatortoken" > = < \/ span > lid < spanclass= " punctuationtoken " > . < \/ span > vind < spanclass= " punctuationtoken " > ( < \/ span > < spanclass= " stringtoken " > 'linqmap:type' < \/ span > , namespaces < spanclass= " punctuationtoken " > ) < \/ span > . tekst < spanclass= " punctuationtoken " > . vervang < spanclass= " punctuationtoken " > ( < \/ span > < spanclass= " stringtoken " > '_' < \/ span > , < spanclass= " stringtoken " > ' ' < \/ span > ) . capitalizeer ( ) punt < spanclass= " operatortoken " > = lid . vind ( 'georss:point', namespaces ) . tekst . vervang ( ' -', ',-' ) . split ( ' ' ) rij = Subtype, Type, Titel, DatumGerapporteerd, Stad, Straat, UUID, Betrouwbaarheid, Beschrijving, float(punt[1]), float(punt[0]) cursor = arcpy.da.InsertCursor(fcp, ["ReportSubtype", "ReportType", "Title", "DateReported", "City", "Street", "UUID", "Reliability", "Description", "SHAPE@X", "SHAPE@Y"]) cursor.insertRow(rij) verwijder cursor print('fase 1') behalve: passeren print('mislukte Fase 1') elif lijn != None: als Titel != 'IRREGULARITY': probeer: Datum = lid.vind('pubDate').tekst DatumGerapporteerd = datetime.strptime(Datum, '%a %b %d %H:%M:%S %z %Y') als len(lid.vindalles('linqmap:city', namespaces)) > 0: Stad = lid.vind('linqmap:city', namespaces).tekst anders: Stad = '' als len(lid.vindalles('linqmap:startNode', namespaces)) > 0: StartNode = lid.vind('linqmap:startNode', namespaces).tekst anders: StartNode = '' als len(<\/SPAN>member.<\/SPAN>findall(<\/SPAN>'linqmap:endNode'<\/SPAN>,<\/SPAN> namespaces)<\/SPAN>)<\/SPAN> ><\/SPAN> 0<\/SPAN>:<\/SPAN> EndNode =<\/SPAN> member.<\/SPAN>find(<\/SPAN>'linqmap:endNode'<\/SPAN>,<\/SPAN> namespaces)<\/SPAN>.<\/SPAN>textanders<\/SPAN>:<\/SPAN> EndNode =<\/SPAN> ''<\/SPAN>als<\/SPAN> len(<\/SPAN>member.<\/span>findall(<\/span>'linqmap:reportDescription'<\/span>,<\/span> namespaces)<\/span>)<\/span> ><\/span> 0<\/span>:<\/span> Description =<\/span> member.<\/span>find(<\/span>'linqmap:reportDescription'<\/span>,<\/span> namespaces)<\/span>.<\/span>textanders<\/span>:<\/span> Description =<\/span> ''<\/span>als<\/span> len(<\/span>member.<\/span>findall(<\/span>'linqmap:street'<\/span>,<\/span> namespaces)<\/span>)<\/span> ><\/span> 0<\/span>:<\/span> Street =<\/span> member.<\/span>find(<\/span>'linqmap:street'<\/span>,<\/span> namespaces)<\/span>.<\/span>textanders<\/span>:<\/span> Street =<\/span> ''<\/span> UUID < spanclass= "operatortoken" > = < \/ span > member < spanclass= " punctuationtoken " > . < \/ span > find < spanclass= " punctuationtoken " > ( < \/ span > < spanclass= " stringtoken " > 'linqmap:uuid' < \/ span > , namespaces < spanclass= " punctuationtoken " > ) < \/ span > . text Type < spanclass= " operatortoken " > = < \/ span > member < spanclass= " punctuationtoken " > . < \/ span > find < spanclass= " punctuationtoken " > ( < \/ span > < spanclass= " stringtoken " > 'linqmap:type' < \/ span > , namespaces < spanclass= " punctuationtoken " > ) < \/ span > . text . replace ( '_' , ' ' ) . capitalize ( ) Length < spanclass= " operatortoken " > = < \/ span > member < spanclass= " punctuationtoken " > . find ( 'linqmap:length' , namespaces ) . text Level < spanclass= " operatortoken " > = < \/ span > member < spanclass= " punctuationtoken " > . find ( 'linqmap:level' , namespaces ) . text line < spanclass= " operatortoken " > = < \/ span > member . find ( 'georss:line' , namespaces ) . text . replace ( '\n' , '' ) . replace ( ' ' , '],[' ) . replace ( '],[-' , ', -' ) . split ( ', ' ) Speed = member.find('linqmap:speed', namespaces).text Delay = member.find('linqmap:delay', namespaces).text cur = arcpy.da.InsertCursor(fcl, ["Speed","Delay","Title","ReportType","DateReported","City","Street","Length","ReportLevel","UUID","StartNode","EndNode","Description","SHAPE@"]) array = arcpy.Array() voor coords in line: xy = coords.split('],[') array.add(arcpy.Point(xy[1], xy[0])) cur.insertRow([Speed, Delay, Title, Type, DateReported, City, Street, Length, Level, UUID, StartNode, EndNode, Description, arcpy.Polyline(array)]) verwijder cur print( token">'fase 2'<\/SPAN>)<\/SPAN>behalve<\/SPAN>:<\/SPAN>passeren<\/SPAN>printen<\/SPAN>(<\/SPAN>'mislukte Fase 2'<\/SPAN>)<\/SPAN>anders<\/SPAN>:<\/SPAN>proberen<\/SPAN>:<\/SPAN> Datum =<\/SPAN> lid.<\/SPAN>vinden(<\/SPAN>'updateDate'<\/SPAN>)<\/SPAN>.<\/SPAN>tekst DatumGerapporteerd =<\/SPAN> datetime.<\/SPAN>strptime(<\/SPAN>Datum, <\/SPAN> '%a %b %d %H:%M:%S %z %Y'<\/SPAN>)<\/SPAN>als<\/SPAN> len(<\/SPAN>lid.<\/SPAN>vindenalles(<\/SPAN>'linqmap:city'<\/Span>,<\/span> namespaces<\/) > 0:<\/) Stad <span clasS=\"operator toKen\">=<\/) lid<SPAn clasS=\"punctuatiON toKen\"><\/>vinden<\(</span>'linqmap:city', namespaces<\)</span><\.>tekstanders:<\/span> Stad =<\/span> ''als len<(</span>lid<.>vindenalles<(</span>'linqmap:startNode', namespaces<)</span><)</span> > 0:<\/span> StartNode =<\/span> lid<.>vinden<(</span>'linqmap:startNode', namespaces<)</span><.>tekstanders:<\/span> StartNode =<\/span> ''als len<(</span>lid<.>vindenalles<(</span>'linqmap:endNode',"DateReported","City","Street","Length","ReportLevel","UUID","StartNode","EndNode","Description","SHAPE@"]) array = arcpy.Array()voor coords in line: xy = coords.split('],[') array.add(arcpy.Point(xy[1], xy[0])) cur.insertRow([Speed, Delay, Title, Type, DateReported, City, Street, Length, Level, UUID, StartNode, EndNode, Description, arcpy.Polyline(array)])verwijder curprint('fase 3')behalve:passerenprint('mislukte fase 3')anders:print('Fout')<\/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><<emojI_31 >><<emojI_32 >><<emojI_33 >><<emojI_34 >><<emojI_35 >><<emojI_36 >><<emojI_37 >><<emojI_38 >><<emojI_39 >><<emojI_40 >><<emojI_41 >><<emojI_42 >><<emojI_43 >><<emojI_44 >><<emojI_45 >><<emojI_46 >><<emojI_47 >><<emojI_48 >><<emojI_49 >><<emojI_50 >><<emojI_51 >><<emojI_52 >><<emojI_53 >><<emojI_54 >><<emojI_55 >><<emojI_56 >><<emojI_57 >><<emojI_58 >><<emojI_59 >><<emojI_60 >><<emojI_61 >><<emojI_62 >><<emojI_63 >><<emojI_64 ></ span >< span >> << emoj I _ 65 >> < / span >< span >> << emoj I _ 66 >> < / span >< span >> << emoj I _ 67 >> < / span >< span >> << emoj I _ 68 >> < / span >< span >> << emoj I _ 69 >> < / span >< span >> << emoj I _ 70 >> < / span >< span >> << emoj I _ 71 >> < / span >< span >> << emoj I _ 72 >> < / span >< span >> << emoj I _ 73 >> < / span >< span >> << emoj I _ 74 >> < / span >< span >> << emoj I _ 75 >> < / span >< span >> << emoj I _ 76 >> < / span >< span >> << emoj I _ 77 >> < / span >< span >> << emoj I _ 78 >> < / span >< span >> << emoj I _ 79 >> < / span >< span >> << emoj I _ 80 >> < / span >< span >> << emoj I _ 81 >> < / span >< span >> << emoj I _ 82 >> < / span >< span >> << emoj I _ 83 >> < / span >< span >> << emoj I _ 84 >> < / span >< span >> << emoj I _ 85 >> < / span >< span >> << emoj I _ 86 >> < / span >< span >> << emoj I _ 87 >> < / span >< span >> << emoj I _ 88 >> < / span >< span >> << emoj I _ 89 >> < / span >< span>> << em oj I _90>> > << e moj I _91>> > << e moj I _92>> > << e moj I _93>> > << e moj I _94>> > << e moj I _95>> > << e moj I _96>> > << e moj I _97>> > << e moj I _98>> > << e moj I _99>> > << e moj I _100>> > << e moj I _101>> > << e moj I _102>> > << e moj I _103>> > << e moj I _104>> > << e moj I _105>> > << e moj I _106>> > << e moj I _107>> > << e moj I _108>> > << e moj I _109>> > << e moj I _110>> > << e moj I _111>> > << e moj I _112>> > << e moj I _113>> </ sp a n> < sp a n>>> <<< EMOJ_I__114>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__115>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__116>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__117>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__118>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__119>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__120>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__121>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__122>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__123>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__124>>> <<< / SPAN>>> <<< SPAN>>> <<< EMOJ_I__125>>> <<< / SPAN >>><<<SP AN >>><<< EMOJ_I__126 >>><<<SP AN >>><<< EMOJ_I__127 >>><<<SP AN >>><<< EMOJ_I__128 >>><<<SP AN >>><<< EMOJ_I__129 >>><<<SP AN >>><<< EMOJ_I__130 >>><<<SP AN >>><<< EMOJ_I__131 >>><<<SP AN >>><<< EMOJ_I__132 >>><<<SP AN >>><<< EMOJ_I__133 >>><<<SP AN >>><<< EMOJ_I__134 >>><<<SP AN >>><<< EMOJ_I__135 >>><<<SP AN >>><<< EMOJ_I__136 >>><<<SP AN >>><<< EMOJ_I__137 >>><<<SP AN >>><<< EMOJ_I__138 >>><<<SP AN >>><<< EMOJ_I__139 >>><<<SP AN >>><<< EMOJ_I__140 >>><<<SP AN >>><<< EMOJ_I__141 >>><<<SP AN >>><<< EMOJ_I__142 >>><<<SP AN >>><<< EMOJ_I__143 >>><<<SP AN >>><<< EMOJ_I__144 >>><<<SP AN >>><<< EMOJ_I__145 >>><<<SP AN >>><<< EMOJ_I__146 >>><<<SP AN >>><<< EMOJ_I__147 >>><<<SP AN >>><<< EMOJ_I__148 >>><<<< SPAN>>>><<EM OJ_I __149>>>><<S PAN>>>><<E MOJ_I __150>>>><<S PAN>>>><<E MOJ_I __151>>>><<S PAN>>>><<E MOJ_I __152>>>><<S PAN>>>><<E MOJ_I __153>>>><<S PAN>>>><<E MOJ_I __154>>>><<S PAN>>>><<E MOJ_I __155>>>>
Nice write up...
I like this approach. What a great way to take advantage of all this data with such a small infrastructure investment. You could also change some of the formatting of the text in the alerts before pushing it into the feature service. For example changing "WEATHERHAZARD" to just "Hazard". I did this with GeoEvent Server but this this would be pretty simple to do in the python script. Here is an example we put together with GeoEvent Server for Indiana: Indiana Waze Operations Dashboard.
Great thanks for sharing this. Great job!
Thanks Eric Rodenberg
Thanks Tom Brenneman. Yeah, good pickup.
And thanks so much for sharing the dashboard. I love it
Nice article. I appreciate the time & effort that you put into this to make it work, as well as the script shareable. I just configured your code and attempted to run it and I am not getting past the 'Fail Stage 0' print function. Any clue on what I am missing? I have attached my code as well to cover up any loose ends.
<SPAN class="keyword token">import</SPAN> xml<SPAN class="punctuation token">.</SPAN>etree<SPAN class="punctuation token">.</SPAN>ElementTree <SPAN class="keyword token">as</SPAN> ET <SPAN class="keyword token">import</SPAN> urllib<SPAN class="punctuation token">.</SPAN>request <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> datetime namespaces <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'georss'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.georss.org%2Fgeorss" target="_blank">http://www.georss.org/georss</A><SPAN>'</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'linqmap'</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.linqmap.com" target="_blank">http://www.linqmap.com</A><SPAN>'</SPAN></SPAN> <SPAN class="punctuation token">}</SPAN> tree <SPAN class="operator token">=</SPAN> ET<SPAN class="punctuation token">.</SPAN>ElementTree<SPAN class="punctuation token">(</SPAN>file<SPAN class="operator token">=</SPAN>urllib<SPAN class="punctuation token">.</SPAN>request<SPAN class="punctuation token">.</SPAN>urlopen<SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fna-georss.waze.com%2Frtserver%2Fweb%2FTGeoRSS%3Ftk%3Dccp_partner%26ccp_partner_name" target="_blank">https://na-georss.waze.com/rtserver/web/TGeoRSS?tk=ccp_partner&ccp_partner_name</A><SPAN>'</SPAN></SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> root <SPAN class="operator token">=</SPAN> tree<SPAN class="punctuation token">.</SPAN>getroot<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> channel_head <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> fcp <SPAN class="operator token">=</SPAN> <SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fservices6.arcgis.com%2Fl7uujk4hHifqabRB%2Farcgis%2Frest%2Fservices%2FWaze_Data_Arizona%2FFeatureServer" target="_blank">https://services6.arcgis.com/l7uujk4hHifqabRB/arcgis/rest/services/Waze_Data_Arizona/FeatureServer</A><SPAN>"</SPAN></SPAN> fcl <SPAN class="operator token">=</SPAN> <SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fservices6.arcgis.com%2Fl7uujk4hHifqabRB%2Farcgis%2Frest%2Fservices%2FWaze_Data_Arizona_Line%2FFeatureServer%2F" target="_blank">https://services6.arcgis.com/l7uujk4hHifqabRB/arcgis/rest/services/Waze_Data_Arizona_Line/FeatureServer/</A><SPAN>"</SPAN></SPAN> <SPAN class="keyword token">for</SPAN> member <SPAN class="keyword token">in</SPAN> root<SPAN class="punctuation token">.</SPAN>findall<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'channel/item'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> channel <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> Title <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'title'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text<SPAN class="punctuation token">.</SPAN>upper<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> point <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:point'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN> line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Fail Stage 0'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> point <SPAN class="operator token">!=</SPAN> None<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'pubDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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>City <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> <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:subtype'</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="operator token">and</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="keyword token">is</SPAN> str<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">(</SPAN><SPAN class="punctuation token">)</SPAN> point <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:point'</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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">' '</SPAN><SPAN class="punctuation token">)</SPAN> row <SPAN class="operator token">=</SPAN> Subtype<SPAN class="punctuation token">,</SPAN> Type<SPAN class="punctuation token">,</SPAN> Title<SPAN class="punctuation token">,</SPAN> DateReported<SPAN class="punctuation token">,</SPAN> City<SPAN class="punctuation token">,</SPAN> Street<SPAN class="punctuation token">,</SPAN> UUID<SPAN class="punctuation token">,</SPAN> Reliability<SPAN class="punctuation token">,</SPAN> Description<SPAN class="punctuation token">,</SPAN> float<SPAN class="punctuation token">(</SPAN>point<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>float<SPAN class="punctuation token">(</SPAN>point<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> cursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcp<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"ReportSubtype"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation 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">"UUID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Reliability"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Description"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"SHAPE@X"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"SHAPE@Y"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> cursor<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cursor <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 1'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 1'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> line <SPAN class="operator token">!=</SPAN> None<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">if</SPAN> Title <SPAN class="operator token">!=</SPAN> <SPAN class="string token">'IRREGULARITY'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'pubDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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> City <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:startNode'</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> StartNode <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:startNode'</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> StartNode <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: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">.</SPAN>text 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">(</SPAN><SPAN class="punctuation token">)</SPAN> Length <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:length'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Level <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:level'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</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">'\n'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN><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>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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">', '</SPAN><SPAN class="punctuation token">)</SPAN> Speed <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:speed'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Delay <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:delay'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text cur <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Speed"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Delay"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation 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="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><SPAN class="string token">'],['</SPAN><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">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> xy<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> cur<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>Speed<SPAN class="punctuation token">,</SPAN>Delay<SPAN class="punctuation token">,</SPAN>Title<SPAN class="punctuation token">,</SPAN>Type<SPAN class="punctuation token">,</SPAN>DateReported<SPAN class="punctuation token">,</SPAN>City<SPAN class="punctuation token">,</SPAN>Street<SPAN class="punctuation token">,</SPAN>Length<SPAN class="punctuation token">,</SPAN>Level<SPAN class="punctuation token">,</SPAN>UUID<SPAN class="punctuation token">,</SPAN>StartNode<SPAN class="punctuation token">,</SPAN>EndNode<SPAN class="punctuation token">,</SPAN>Description<SPAN class="punctuation token">,</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Polyline<SPAN class="punctuation token">(</SPAN>array<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cur <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 2'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 2'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'updateDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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> City <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:startNode'</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> StartNode <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:startNode'</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> StartNode <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: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:id'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text 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">(</SPAN><SPAN class="punctuation token">)</SPAN> Length <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:length'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Level <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:trend'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</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">'\n'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN><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>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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">', '</SPAN><SPAN class="punctuation token">)</SPAN> Speed <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:speed'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Delay <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:delaySeconds'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text cur <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Speed"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Delay"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation 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="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><SPAN class="string token">'],['</SPAN><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">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> xy<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> cur<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>Speed<SPAN class="punctuation token">,</SPAN>Delay<SPAN class="punctuation token">,</SPAN>Title<SPAN class="punctuation token">,</SPAN>Type<SPAN class="punctuation token">,</SPAN>DateReported<SPAN class="punctuation token">,</SPAN>City<SPAN class="punctuation token">,</SPAN>Street<SPAN class="punctuation token">,</SPAN>Length<SPAN class="punctuation token">,</SPAN>Level<SPAN class="punctuation token">,</SPAN>UUID<SPAN class="punctuation token">,</SPAN>StartNode<SPAN class="punctuation token">,</SPAN>EndNode<SPAN class="punctuation token">,</SPAN>Description<SPAN class="punctuation token">,</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Polyline<SPAN class="punctuation token">(</SPAN>array<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cur <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 3'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 3'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Error'</SPAN><SPAN class="punctuation token">)</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><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><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><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><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>
Cédric Despierre Corporon, have you seen this very interesting blog post?
No worries. I've learnt so much from the GeoNet community.
And I'd like to help where I can in return
The URL to your XML feed seems incomplete - https://na-georss.waze.com/rtserver/web/TGeoRSS?tk=ccp_partner&ccp_partner_name
The feed to your XML URL should look like - https://world-georss.waze.com/rtserver/web/TGeoRSS?tk=?&ccp_partner_name=Test&polygon=34.582214,32.581065;35.389709,32.460638;35.760498,31.998286;35.364990,31.341432;34.326782,31.496128;34.582214,32.581065;34.582214,32.581065&format=XML&types=traffic,alerts,irregularities
Also, I noticed that your script included links to feature services rather than feature layers – e.g. https://services6.arcgis.com/l7uujk4hHifqabRB/arcgis/rest/services/Waze_Data_Arizona_Line/FeatureServer/
I think in your case, adding a 0 to the end should fix this issue
https://services6.arcgis.com/l7uujk4hHifqabRB/arcgis/rest/services/Waze_Data_Arizona_Line/FeatureServer/0
And as long as the schemas of your feature layers are setup correctly; the script should run fine.
Let me know if you come across anymore issues.
Gee
Gee,
Thanks for the quick response. I formatted the code the way that you suggested: https://world-georss.waze.com/rtserver/web/TGeoRSS?tk=?&ccp_partner_name=My_Agency_Name&polygon=-114.047000,37.020000;-109.037000,36.994000;-109.026000,31.307000;-111.092000,31.326000;-114.794000,32.464000;-114.498000,34.126000;-114.596000,34.841000;-114.673000,36.076000;-114.047000,37.020000;-114.047000,37.020000&format=XML&types=traffic,alerts,irregularities
And I am getting an HTTP Status 503 - invalid token when I attempt to run the code in Python. When I add ccp_partner function similar to how the original URL is formatted the code works but I get the "Fail Stage 0", as well as "Fail Stage 3".
I also reproduced the same workflow that you mentioned when creating the Point & Line Feature Services. I am not sure what I am missing.
Hi Eric,
Can you make sure the the XML URL is the same as what's found on your Waze CCP Partner Portal > Get Waze Data, Waze XML Feed and the STATUS of the Waze XML Feed is Live.
Afterwards, make sure the XML feed is working properly by pasting it into Google Chrome. You may have to get back to Waze if the link is not working.
I'm also assuming that you're using Python from ArcGIS Pro to run the script ("C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe").
If that is the case, make sure that you're logged into ArcGIS Pro with the same credentials as the ArcGIS Online account (to ensure you have the right privileges to write into the feature layers).
If not, change the feature layers to public (feature layer overview > Share, Everyone), and run the script. *should only be performed in test scenarios
Hello Gee,
This is what my option looks like in Get Waze Data Portal. Do you think the "na-georss" vs "world-georss" could be impacting the way that the python script processes the XML Data?
Thank you. This is a tremendous script if I am able to get it working.
Hi Eric,
Yes, this could be the reason.
I'd be more than happy to take a closer look (and come up with a solution) if you could email me your Waze XML Feed?
Hi again,
The issue was due to you guys living in the Northern Hemisphere
Subsequently, the Python script wasn't passing lons and lats properly.
The modified script is attached below (I also emailed you this script updated with your own XML feed and feature layers).
Essentially anyone living in Northern America should be using this script rather than what is posted on the blog.
*If you're interested in the details please compare - lines 49, 93, 99, 141 & 147.
<SPAN class="keyword token">import</SPAN> xml<SPAN class="punctuation token">.</SPAN>etree<SPAN class="punctuation token">.</SPAN>ElementTree <SPAN class="keyword token">as</SPAN> ET <SPAN class="keyword token">import</SPAN> urllib<SPAN class="punctuation token">.</SPAN>request <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> datetime namespaces <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'georss'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.georss.org%2Fgeorss" target="_blank">http://www.georss.org/georss</A><SPAN>'</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'linqmap'</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.linqmap.com" target="_blank">http://www.linqmap.com</A><SPAN>'</SPAN></SPAN> <SPAN class="punctuation token">}</SPAN> tree <SPAN class="operator token">=</SPAN> ET<SPAN class="punctuation token">.</SPAN>ElementTree<SPAN class="punctuation token">(</SPAN>file<SPAN class="operator token">=</SPAN>urllib<SPAN class="punctuation token">.</SPAN>request<SPAN class="punctuation token">.</SPAN>urlopen<SPAN class="punctuation token">(</SPAN>'<SPAN class="comment token">##URL for XML waze connection##'))</SPAN> root <SPAN class="operator token">=</SPAN> tree<SPAN class="punctuation token">.</SPAN>getroot<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> channel_head <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> fcp <SPAN class="operator token">=</SPAN> "<SPAN class="comment token">##URL to Point - Feature Layer##"</SPAN> fcl <SPAN class="operator token">=</SPAN> "<SPAN class="comment token">##URL to Line - Feature Layer##"</SPAN> <SPAN class="keyword token">for</SPAN> member <SPAN class="keyword token">in</SPAN> root<SPAN class="punctuation token">.</SPAN>findall<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'channel/item'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> channel <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> Title <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'title'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text<SPAN class="punctuation token">.</SPAN>upper<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> point <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:point'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN> line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Fail Stage 0'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> point <SPAN class="operator token">!=</SPAN> None<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'pubDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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> City <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> <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:subtype'</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="operator token">and</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="keyword token">is</SPAN> <SPAN class="operator token">not</SPAN> None<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">(</SPAN><SPAN class="punctuation token">)</SPAN> point <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:point'</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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">','</SPAN><SPAN class="punctuation token">)</SPAN> row <SPAN class="operator token">=</SPAN> Subtype<SPAN class="punctuation token">,</SPAN> Type<SPAN class="punctuation token">,</SPAN> Title<SPAN class="punctuation token">,</SPAN> DateReported<SPAN class="punctuation token">,</SPAN> City<SPAN class="punctuation token">,</SPAN> Street<SPAN class="punctuation token">,</SPAN> UUID<SPAN class="punctuation token">,</SPAN> Reliability<SPAN class="punctuation token">,</SPAN> Description<SPAN class="punctuation token">,</SPAN> float<SPAN class="punctuation token">(</SPAN>point<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>float<SPAN class="punctuation token">(</SPAN>point<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> cursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcp<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"ReportSubtype"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation 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">"UUID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Reliability"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Description"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"SHAPE@X"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"SHAPE@Y"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> cursor<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cursor <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 1'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 1'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> line <SPAN class="operator token">!=</SPAN> None<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">if</SPAN> Title <SPAN class="operator token">!=</SPAN> <SPAN class="string token">'IRREGULARITY'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'pubDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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> City <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:startNode'</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> StartNode <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:startNode'</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> StartNode <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: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">.</SPAN>text 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">(</SPAN><SPAN class="punctuation token">)</SPAN> Length <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:length'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Level <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:level'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</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">'\n'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN><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>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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'],['</SPAN><SPAN class="punctuation token">)</SPAN> Speed <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:speed'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Delay <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:delay'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text cur <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Speed"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Delay"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation 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="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><SPAN class="string token">', '</SPAN><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">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> xy<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> cur<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>Speed<SPAN class="punctuation token">,</SPAN>Delay<SPAN class="punctuation token">,</SPAN>Title<SPAN class="punctuation token">,</SPAN>Type<SPAN class="punctuation token">,</SPAN>DateReported<SPAN class="punctuation token">,</SPAN>City<SPAN class="punctuation token">,</SPAN>Street<SPAN class="punctuation token">,</SPAN>Length<SPAN class="punctuation token">,</SPAN>Level<SPAN class="punctuation token">,</SPAN>UUID<SPAN class="punctuation token">,</SPAN>StartNode<SPAN class="punctuation token">,</SPAN>EndNode<SPAN class="punctuation token">,</SPAN>Description<SPAN class="punctuation token">,</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Polyline<SPAN class="punctuation token">(</SPAN>array<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cur <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 2'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 2'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN> Date <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'updateDate'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text DateReported <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>strptime<SPAN class="punctuation token">(</SPAN>Date<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">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:city'</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> City <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:city'</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> City <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:startNode'</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> StartNode <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:startNode'</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> StartNode <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: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:id'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text 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">(</SPAN><SPAN class="punctuation token">)</SPAN> Length <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:length'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Level <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:trend'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text line <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'georss:line'</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">'\n'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN><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>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>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'],['</SPAN><SPAN class="punctuation token">)</SPAN> Speed <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:speed'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text Delay <SPAN class="operator token">=</SPAN> member<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'linqmap:delaySeconds'</SPAN><SPAN class="punctuation token">,</SPAN> namespaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>text cur <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>fcl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Speed"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Delay"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Title"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ReportType"</SPAN><SPAN class="punctuation 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="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><SPAN class="string token">', '</SPAN><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">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> xy<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> cur<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>Speed<SPAN class="punctuation token">,</SPAN>Delay<SPAN class="punctuation token">,</SPAN>Title<SPAN class="punctuation token">,</SPAN>Type<SPAN class="punctuation token">,</SPAN>DateReported<SPAN class="punctuation token">,</SPAN>City<SPAN class="punctuation token">,</SPAN>Street<SPAN class="punctuation token">,</SPAN>Length<SPAN class="punctuation token">,</SPAN>Level<SPAN class="punctuation token">,</SPAN>UUID<SPAN class="punctuation token">,</SPAN>StartNode<SPAN class="punctuation token">,</SPAN>EndNode<SPAN class="punctuation token">,</SPAN>Description<SPAN class="punctuation token">,</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Polyline<SPAN class="punctuation token">(</SPAN>array<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">del</SPAN> cur <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'stage 3'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">pass</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fail Stage 3'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Error'</SPAN><SPAN class="punctuation token">)</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><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><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><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><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>
Attached below is a screenshot of your area to demonstrate the script is working
Thanks, where do you actually run the code?
That was the trick! I appreciate the quick response to fix the code. This is a tremendous script for users trying to get Waze data that do not have access to GeoEvent Server. Thanks Gee for making this available to the community!
-Eric
Hi Ori,
Use Python in ArcGIS Pro to run the code.
But, first copy the script into a text editor and save it with the extension .py
And if you have Python in ArcGIS Pro setup - Right click on that file > Run with ArcGIS Pro
No worries, glad I could help.
I also want to thank Joel Meier for developing the initial python script.
Mark Chilcott - this might interest you and the team
Thanks, does it have to be ArcGIS Pro?
You need to have ArcGIS Pro or ArcMap installed to use the module arcpy
And if you intend on using ArcMap, you'll have to amend the syntax slightly to cater for Python 2.x
Alternatively, you could look into using the ArcGIS API for Python
Seeing people use this makes me wish I put some actual error handling in here
All good Joel.
In terms of error handling, the only thing I changed was - ability to handle missing elements and self closing tags.
For Example
<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:subtype'</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="operator token">and</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="keyword token">is</SPAN> <SPAN class="operator token">not</SPAN> None<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><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
And, I haven't come across any errors since changing this
Great job on this! Has anyone done anything to deal with duplicate records getting created as the data gets consumed and loaded into AGOL? Maybe filter by date or some other field when ingesting the data? Any ideas?
Thanks Jonathan Pollack,
Have a look at this post - https://community.esri.com/groups/departments-of-transportation/blog/2019/02/04/traffic-study-reports-utilising-waze-data-and-arcgis-insights
Sometime in the near future, I'll update the script to ONLY ingest data into AGOL, when something changes in the XML feed.
Thanks for sharing the code! BTW, is it the only way to use Waze data by becoming a CCP member?
Thanks Gee.
But could you please help me on this. I've run this script using ArcGIS Pro, but there are errors like the one below.
How to fix it?
Geethaka Fernando
https://community.esri.com/groups/departments-of-transportation/blog/2018/10/31/python-script-to-ingest-waze-data-to-arcgis-online
I got the same error. Did you get it solved?
Hello Gee, I love this write up, thanks for sharing? Are you at the UC this year? If so I would love to meet up and see if you can help me quickly set this up. I have made my feature layers and altered the script, but I get the same error that Noorhaizarinie Zaini gets when executing it from Pro.
Thanks!
Hello Gene, when I originally wrote this script it was for python 2.7 and it looks like from that error Noorhaizarinie Zaini gets is from trying to run it in python3. The parse function in python3 is different in some regard. you could try changing
to tree <SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">=</SPAN> ET<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.fromstring</SPAN><SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">(</SPAN>file<SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">=</SPAN>urllib<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.</SPAN>request<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.</SPAN>urlopen<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">(</SPAN>'<SPAN class="" style="color: slategray; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">##URL for XML waze connection##'))</SPAN>tree <SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit;">=</SPAN> ET<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit;">.</SPAN>ElementTree<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit;">(</SPAN>file<SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit;">=</SPAN>urllib<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit;">.</SPAN>request<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit;">.</SPAN>urlopen<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit;">(</SPAN>'<SPAN class="" style="color: slategray; border: 0px; font-weight: inherit;">##URL for XML waze connection##')) </SPAN>
tree <SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">=</SPAN> ET<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.fromstring</SPAN><SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">(</SPAN>file<SPAN class="" style="color: #a67f59; background: rgba(255, 255, 255, 0.5); border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">=</SPAN>urllib<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.</SPAN>request<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">.</SPAN>urlopen<SPAN class="" style="color: #999999; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">(</SPAN>'<SPAN class="" style="color: slategray; border: 0px; font-weight: inherit; margin: 0px; padding: 0px;">##URL for XML waze connection##'))</SPAN>
I am at the UC so I dont have a test environment to see if this works but I'm fairly certian it has to do with that line of code reading the xml from the url.
I was able to execute the python script, but I am getting the below error. Can you elaborate on how the script is supposed to access and edit the feature layer?
fail Stage 1cannot open 'https://services1.arcgis.com/Hug9pbs2TYetbCha/arcgis/rest/services/Waze_Point_Feature_Layer/FeatureServer'
Ok, I figured this one out. I needed to use the individual feature service with its index number at the end. Like this:
https://services1.arcgis.com/Hug9pbs2TYetbCha/arcgis/rest/services/Waze_Point_Feature_Layer/FeatureServer/0
Does anyone know of a way to modify the script so that it doesn't copy over duplicate rows every time the script is ran? I have two feature layers, one that holds all of the data, and is accumulated over time as the script is ran every 5 minutes, and another with a filter showing only the events that have been reported in the last 10 minutes. I am noticing that events are getting copied over multiple times and the data set is growing very fast. Thanks!
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.