Office of Enterprise Technology Visualization of Historic Rainfall September 23, 2015 All content in [] is something that needs to be filled in by the author and the brackets removed. All other slide elements and components should be left as is. Presented By: Justin W. Conklin, Database Administrator OET Vision: To be recognized as a first-class technology organization by the customers we serve.
Background Flood Control District of Maricopa County Flood Warning Branch ALERT Map. 313 Rain Gages throughout Maricopa County and beyond logging rainfall totals in near real time. Historic data from 1980 to present Google Maps application to visualize data. 9/23/2015 www.maricopa.gov/technology
The Problem Google Maps is very good for viewing simple data, getting directions, etc. Lack powerful analytical capabilities of Esri software and programming APIs. How to effectively visualize 35 years worth of rainfall data. How to leverage the spatial analysis and geoprocessing capabilities of Esri and make the final product interoperable with the Google Maps application. 9/23/2015 www.maricopa.gov/technology
The Solution (server side) Geoprocessing Service (Python) Query NovoStar 5 database, download comma delimited values (php) http://alert.fcd.maricopa.gov/php/hist_rain_GETtxt.php?ME=09&DE=08&YE=2014&TE=23:30:00&TS=1d Create X, Y event Layer Interpolate points (Natural Neighbor) Export to .png 9/23/2015 www.maricopa.gov/technology
The Solution (server side) for line in urllib2.urlopen("http://alert.fcd.maricopa.gov/php/hist_rain_GETtxt.php?ME=" + Month + "&DE=" + Day + "&YE=" + Year + "&TE=" + TimeEnd + "&TS=" + TimeStart): if not "<" in line and not ":" in line and not "----" in line: RainRaw.write(line) RainRaw.close result = arcpy.MakeXYEventLayer_management("\\\\fcdsgis.flood.maricopa.gov\\GISWork\\jwc\\InterpolateRainfall\\RainRaw.txt", "Xcoord", "Ycoord", "RainPoints", sr) result = arcpy.NaturalNeighbor_3d("\\\\fcdsgis\\giswork\\jwc\\InterpolateRainfall\\InterpolatedRainfall.gdb\\Gauges", "RainTotal", "\\\\fcdsgis\\giswork\\jwc\\InterpolateRainfall\\InterpolatedRainfall.gdb\\RainRaster", "2746.304") result = arcpy.mapping.ExportToPNG(map_document = mxd, out_png = r"\\fcdsarcgis04\arcgisserver\directories\arcgisjobs\flood\interpolaterain_gpserver\Rain.png", transparent_color = "255, 255, 255") 9/23/2015 www.maricopa.gov/technology
The Solution (client side) JavaScript Call Geoprocessing task with user supplied parameters Add overlay to map <script src="http://js.arcgis.com/3.13/"></script> var gpURL = "http://gis.fcd.maricopa.gov/arcgis/rest/services/Flood/InterpolateRain/GPServer/Script"; var gp = new Geoprocessor(gpURL); dom.byId(“rainButton").onclick = executeGP; 9/23/2015 www.maricopa.gov/technology
The Solution (client side) function executeGP() { var params = { "Month":document.getElementById("ME").value, "Day":document.getElementById("DE").value, "Year":document.getElementById("YE").value, "TimeEnd":document.getElementById("TE").value, "TimeStart":document.getElementById("TS").value }; gp.submitJob(params, completeCallback); function completeCallback(jobInfo) { var JobID = jobInfo.jobId; var pngURL = "http://gis.fcd.maricopa.gov/arcgis/rest/directories/arcgisjobs/flood/interpolaterain_gpserver/Rain.png?" + Math.floor((Math.random() * 100) + 10000) initialize(pngURL); function initialize(RainLayer) { rainOverlay = new google.maps.GroundOverlay(RainLayer, imageBounds); rainOverlay.setMap(map); 9/23/2015 www.maricopa.gov/technology
Demonstration http://alert.fcd.maricopa.gov/alert/Google/v3/gmap.html 9/23/2015 www.maricopa.gov/technology
Anthem Storm - July 31, 2012 Interpolated Surface Point Data Storm Report: http://alert.fcd.maricopa.gov/alert/WY12/StormRpt_Jul2012_R1.pdf 9/23/2015 www.maricopa.gov/technology
South Mountain Storm- August 12, 2014 Storm Report: http://alert.fcd.maricopa.gov/alert/WY14/StormRpt_08122014_R1.pdf 9/23/2015 www.maricopa.gov/technology
August 19, 2014 Storm Report: http://alert.fcd.maricopa.gov/alert/WY14/StormRpt_08192014.pdf 9/23/2015 www.maricopa.gov/technology
Wickenburg Storm - July 18, 2015 1 Hour Rainfall Totals 5pm – 6pm Storm Report: http://alert.fcd.maricopa.gov/alert/WY15/StormRpt_07182015_Rev1.pdf 9/23/2015 www.maricopa.gov/technology
Conclusion ArcMap API for JavaScript and Google Maps API working together. Leverages analytical capabilities of ArcGIS. Effectively visualize 35 years of rainfall data. 9/23/2015 www.maricopa.gov/technology
Questions? http://fcd.maricopa.gov http://alert.fcd.maricopa.gov/alert/Google/v3/gmap.html 9/23/2015 www.maricopa.gov/technology
Flash Flood Potential Quantitative Precipitation Forecast (QPF) Assigns a value 0-4 for each forecast zone Updated every hour Python script Read in text values from ffp.txt Update forecast zone feature class Export to .kml 9/23/2015 www.maricopa.gov/technology
Flash Flood Potential 9/23/2015 www.maricopa.gov/technology
Flood Warning Messages Using GovDelivery Subscription based ASP.NET input Update feature class Export to kml 9/23/2015 www.maricopa.gov/technology