Changeset 7592
- Timestamp:
- Dec 17, 2009, 9:35:51 AM (14 years ago)
- Location:
- anuga_work/production/new_south_wales/batemans_bay
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_work/production/new_south_wales/batemans_bay/compare_inundation_areas.py
r7577 r7592 35 35 boundary_file_name = 'wave_energy_summary.csv' 36 36 out_file_name_madsen = 'area_comparisons_madsen.csv' 37 out_file_name_surf_sim = 'area_comparisons_surf_sim.csv' 37 38 out_file_name_energy = 'area_comparisons_energy.csv' 38 39 out_file_name_anuga = 'area_comparisons_anuga.csv' … … 42 43 boundary_file = join(boundary_path,boundary_file_name) 43 44 out_file_madsen = join(boundary_path, out_file_name_madsen) 45 out_file_surf_sim = join(boundary_path, out_file_name_surf_sim) 44 46 out_file_energy = join(boundary_path, out_file_name_energy) 45 47 out_file_anuga = join(boundary_path, out_file_name_anuga) … … 54 56 ## 'Event3_HAT':58284, 55 57 'Puysegur_200yr':58129, 56 ##'Puysegur_500yr':58115,58 'Puysegur_500yr':58115, 57 59 'Puysegur_1000yr':58226, 58 60 'Puysegur_5000yr':58286, … … 64 66 'New_Hebrides_5000yr':51424,} 65 67 68 # Set True to skip over features already created, False to recreate all features 69 do_all = False 70 66 71 # Dictionaries for storing area comparison 67 72 area_comp_madsen = defaultdict(list) 68 73 area_comp_energy = defaultdict(list) 69 74 area_percent_madsen = defaultdict(list) 75 area_comp_surf_sim = defaultdict(list) 76 area_percent_surf_sim = defaultdict(list) 70 77 area_percent_energy = defaultdict(list) 71 78 area_total_anuga = defaultdict(list) … … 83 90 run_up_madsen = line_split[3][0:5] 84 91 run_up_energy = line_split[4][0:5] 92 run_up_surf_sim = line_split[6][0:5] 85 93 event_name = False 86 94 for key, value in event_dict.iteritems(): … … 89 97 if event_name == False: 90 98 continue 91 raster_path = join(filePath,event_name,' raster.gdb')99 raster_path = join(filePath,event_name,'area_comparisons.gdb') 92 100 93 101 … … 96 104 #break 97 105 98 do_all = True106 99 107 100 108 … … 104 112 energy_run_up_height = str(run_up_energy) 105 113 energy_run_up_name = run_up_energy.replace('.','_')[0:5] 114 surf_sim_name = run_up_surf_sim.replace('.','_')[0:5] 106 115 107 116 … … 124 133 ## if do_all!=True: 125 134 ## print 'continuing' 126 if gp.Exists(elevation_less_final_dis):135 if (gp.Exists(elevation_less_final_dis) and do_all == False): 127 136 print 'analysis already done, skipping to next one' 128 137 else: 129 138 # Process: Extract elevation data by Mask... 130 139 print 'check if elevation already extracted' 131 if gp.Exists(elevation_extract)!=True:140 if (gp.Exists(elevation_extract)!=True or do_all == True): 132 141 print 'not already extracted' 133 142 print 'extracting by mask' … … 138 147 # Process: Reclassify elevation data 139 148 print 'check if elevation already reclassified' 140 if gp.Exists(elevation_reclass)!=True:149 if (gp.Exists(elevation_reclass)!=True or do_all == True): 141 150 print 'reclassify based on elevation height of:', run_up_height 142 151 reclass_level = "-200 "+run_up_height+" 1;"+run_up_height+" 300 0" … … 147 156 # Process: Raster to Polygon... 148 157 print 'check if already converted from raster to polyon' 149 if gp.Exists(elevation_poly)!=True:158 if (gp.Exists(elevation_poly)!=True or do_all == True): 150 159 print 'raster to polyon' 151 160 gp.RasterToPolygon_conversion(elevation_reclass, elevation_poly, "NO_SIMPLIFY", "VALUE") … … 173 182 gp.Dissolve_management(elevation_less_final,elevation_less_final_dis,'inundation_ID') 174 183 175 184 #################################################################################### 185 ## Extract areas for Madsen surf similarity analytical solution 186 #################################################################################### 187 print '\nDoing Madsen surf_similarity solution...' 188 # Local variables... 189 elevation = filePath+"elevation\\elevation.gdb\\elevation" 190 elevation_extract = filePath+"elevation\\elevation.gdb\\elevation_extract" 191 inundation_area1 = "N:\\georisk_models\\inundation\data\\new_south_wales\\batemans_bay_tsunami_scenario_2009\\anuga\\polygons\\polygons.gdb\inundation_area1" 192 elevation_reclass = filePath+"elevation\\elevation.gdb\\elevation_"+surf_sim_name+"_reclass" 193 elevation_poly = filePath+"elevation\\features.gdb\\elevation_"+surf_sim_name+"_poly" 194 elevation_less = filePath+"elevation\\features.gdb\\elevation_"+surf_sim_name+"_less" 195 batemans_bay_SMARTLINE = "N:\\georisk_models\\inundation\\data\\new_south_wales\\coastline\\batemans_bay_SMARTLINE.shp" 196 elevation_surf_sim_less_final = filePath+"elevation\\features.gdb\\elevation_"+surf_sim_name+"_less_final" 197 elevation_surf_sim_less_final_dis = filePath+"elevation\\features.gdb\\elevation_"+surf_sim_name+"_less_final_dis" 198 199 # Check if already done... 200 ## if do_all!=True: 201 ## print 'continuing' 202 if (gp.Exists(elevation_surf_sim_less_final_dis) and do_all == False): 203 print 'analysis already done, skipping to next one' 204 else: 205 # Process: Extract elevation data by Mask... 206 print 'check if elevation already extracted' 207 if (gp.Exists(elevation_extract)!=True or do_all == True): 208 print 'not already extracted' 209 print 'extracting by mask' 210 gp.ExtractByMask_sa(elevation, inundation_area1, elevation_extract) 211 else: 212 print 'extracted elevation already exists' 213 214 # Process: Reclassify elevation data 215 print 'check if elevation already reclassified' 216 if (gp.Exists(elevation_reclass)!=True or do_all == True): 217 print 'reclassify based on elevation height of:', run_up_height 218 reclass_level = "-200 "+run_up_height+" 1;"+run_up_height+" 300 0" 219 gp.Reclassify_sa(elevation_extract, "Value", reclass_level, elevation_reclass, "DATA") 220 else: 221 print 'elevation has previously been reclassified for this height:', run_up_height 222 223 # Process: Raster to Polygon... 224 print 'check if already converted from raster to polyon' 225 if (gp.Exists(elevation_poly)!=True or do_all == True): 226 print 'raster to polyon' 227 gp.RasterToPolygon_conversion(elevation_reclass, elevation_poly, "NO_SIMPLIFY", "VALUE") 228 else: 229 print 'elevation raster already converted to polygon' 230 231 # Process: Select... 232 print 'select by attribute' 233 gp.Select_analysis(elevation_poly, elevation_less, "\"GRIDCODE\" = 1") 234 235 # Process: Create layer... 236 print 'creating layers' 237 gp.MakeFeatureLayer(batemans_bay_SMARTLINE,'smartline_layer') 238 gp.MakeFeatureLayer(elevation_less,'elevation_layer') 239 240 # Process: Select Layer By Location... 241 print 'select by location' 242 gp.SelectLayerByLocation_management('elevation_layer', "INTERSECT", 'smartline_layer', "", "NEW_SELECTION") 243 print 'joining' 244 print 'inundation_area1',inundation_area1 245 print 'energy_less_final',elevation_surf_sim_less_final 246 gp.SpatialJoin_analysis('elevation_layer',inundation_area1, elevation_surf_sim_less_final,"JOIN_ONE_TO_ONE","","","INTERSECTS") 247 248 print 'dissolving fields' 249 gp.Dissolve_management(elevation_surf_sim_less_final,elevation_surf_sim_less_final_dis,'inundation_ID') 176 250 177 251 #################################################################################### … … 193 267 ## if do_all!=True: 194 268 ## print 'continuing' 195 if gp.Exists(energy_less_final_dis):269 if (gp.Exists(energy_less_final_dis) and do_all == False): 196 270 print 'analysis already done, skipping to next one' 197 271 else: 198 272 # Process: Extract elevation data by Mask... 199 273 print 'check if elevation already extracted' 200 if gp.Exists(elevation_extract)!=True:274 if (gp.Exists(elevation_extract)!=True or do_all == True): 201 275 print 'not already extracted' 202 276 print 'extracting by mask' … … 207 281 # Process: Reclassify elevation data 208 282 print 'check if elevation already reclassified' 209 if gp.Exists(energy_reclass)!=True:283 if (gp.Exists(energy_reclass)!=True or do_all == True): 210 284 print 'reclassify based on elevation height of:', energy_run_up_height 211 285 reclass_level = "-200 "+energy_run_up_height+" 1;"+energy_run_up_height+" 300 0" … … 216 290 # Process: Raster to Polygon... 217 291 print 'check if already converted from raster to polyon' 218 if gp.Exists(energy_poly)!=True:292 if (gp.Exists(energy_poly)!=True or do_all == True): 219 293 print 'raster to polyon' 220 294 gp.RasterToPolygon_conversion(energy_reclass, energy_poly, "NO_SIMPLIFY", "VALUE") … … 254 328 inundation = raster_path + "\\"+ inundation_name[0] 255 329 inundation_area1 = "N:\\georisk_models\\inundation\data\\new_south_wales\\batemans_bay_tsunami_scenario_2009\\anuga\\polygons\\polygons.gdb\inundation_area1" 256 inundation_extract = "inundation_ "+run_up_name+"_extract"257 inundation_reclass = "inundation_ "+run_up_name+"_reclass"258 inundation_poly = "inundation_ "+run_up_name+"_poly"259 inundation_less = "inundation_ "+run_up_name+"_less"330 inundation_extract = "inundation_extract" 331 inundation_reclass = "inundation_reclass" 332 inundation_poly = "inundation_poly" 333 inundation_less = "inundation_less" 260 334 inundation_less_final = "inundation_less_final" 261 335 inundation_less_final_dis = "inundation_less_final_dis" 262 336 263 337 # Check if already done... 264 if gp.Exists(inundation_less_final_dis):338 if (gp.Exists(inundation_less_final_dis) and do_all == False): 265 339 print 'analysis already done, skipping to next one' 266 340 else: 267 341 # Process: Extract inundation data by Mask... 268 342 print 'check if inundation already extracted' 269 if gp.Exists(inundation_extract)!=True:343 if (gp.Exists(inundation_extract)!=True or do_all == True): 270 344 print 'not already extracted' 271 345 print 'extracting by mask' … … 276 350 # Process: Reclassify inundation data 277 351 print 'check if inundation already reclassified' 278 if gp.Exists(inundation_reclass)!=True:352 if (gp.Exists(inundation_reclass)!=True or do_all == True): 279 353 print 'reclassify based on inundation' 280 354 gp.Reclassify_sa(inundation_extract, "Value", "-200 0 1;0 300 0", inundation_reclass, "DATA") … … 284 358 # Process: Raster to Polygon... 285 359 print 'check if already converted from raster to polyon' 286 if gp.Exists(inundation_poly)!=True:360 if (gp.Exists(inundation_poly)!=True or do_all == True): 287 361 print 'raster to polyon' 288 362 gp.RasterToPolygon_conversion(inundation_reclass, inundation_poly, "NO_SIMPLIFY", "VALUE") … … 329 403 330 404 # Search feature class for areas 405 print 'get Madsen surf similarity areas' 406 surf_sim_area_dict = {} 407 #analytical_areas = [] 408 cur = gp.SearchCursor(elevation_surf_sim_less_final_dis) 409 sRow = cur.Next() 410 while sRow: 411 if not(sRow.GetValue("inundation_ID")in surf_sim_area_dict): 412 surf_sim_area_dict[sRow.GetValue("inundation_ID")] = sRow.GetValue("Shape_Area") 413 else: 414 surf_sim_area_dict[sRow.GetValue("inundation_ID")] = (surf_sim_area_dict[sRow.GetValue("inundation_ID")]+sRow.GetValue("Shape_Area")) 415 #analytical_areas.append(sRow.GetValue("Shape_Area")) 416 sRow = cur.Next() 417 #print analytical_areas 418 print surf_sim_area_dict 419 420 # Search feature class for areas 331 421 print 'get Energy areas' 332 422 energy_area_dict = {} … … 367 457 if not key in analytical_area_dict: 368 458 #analytical_area_dict[key] = None 369 area_comp_madsen[key].append( None)370 area_percent_madsen[key].append( None)459 area_comp_madsen[key].append(-999999) 460 area_percent_madsen[key].append(-999999) 371 461 else: 372 462 diff_madsen = anuga_area_dict[key]-analytical_area_dict[key] … … 374 464 area_comp_madsen[key].append(diff_madsen) 375 465 area_percent_madsen[key].append(percent_diff_madsen) 466 467 if not key in surf_sim_area_dict: 468 #analytical_area_dict[key] = None 469 area_comp_surf_sim[key].append(-999999) 470 area_percent_surf_sim[key].append(-999999) 471 else: 472 diff_surf_sim = anuga_area_dict[key]-surf_sim_area_dict[key] 473 percent_diff_surf_sim = 100*diff_surf_sim/anuga_area_dict[key] 474 area_comp_surf_sim[key].append(diff_surf_sim) 475 area_percent_surf_sim[key].append(percent_diff_surf_sim) 376 476 377 477 if not key in energy_area_dict: 378 area_comp_energy[key].append( None)379 area_percent_energy[key].append( None)478 area_comp_energy[key].append(-999999) 479 area_percent_energy[key].append(-999999) 380 480 else: 381 481 diff_energy = anuga_area_dict[key]-energy_area_dict[key] … … 392 492 csv_anuga_sum = csv.writer(open(out_file_anuga_sum,'w')) 393 493 csv_madsen = csv.writer(open(out_file_madsen,'w')) 494 csv_surf_sim = csv.writer(open(out_file_surf_sim,'w')) 394 495 csv_energy = csv.writer(open(out_file_energy,'w')) 395 496 396 csv_anuga.writerow([1,2,3,4,5,6,7,8,9]) 397 csv_madsen.writerow([1,2,3,4,5,6,7,8,9]) 398 csv_energy.writerow([1,2,3,4,5,6,7,8,9]) 497 csv_anuga.writerow([1,2,3,4,5,6,7,8,9,10]) 498 csv_madsen.writerow([1,2,3,4,5,6,7,8,9,10]) 499 csv_energy.writerow([1,2,3,4,5,6,7,8,9,10]) 500 csv_surf_sim.writerow([1,2,3,4,5,6,7,8,9,10]) 399 501 400 502 for key, value in anuga_sum_areas.iteritems(): … … 408 510 area_total_anuga[key][i] 409 511 except NameError: 410 value_list_anuga.append( None)512 value_list_anuga.append(-9999) 411 513 else: 412 514 value_list_anuga.append(area_total_anuga[key][i]) … … 419 521 area_percent_madsen[key][i] 420 522 except NameError: 421 value_list_madsen.append( None)523 value_list_madsen.append(-9999) 422 524 else: 423 525 value_list_madsen.append(area_percent_madsen[key][i]) 424 526 csv_madsen.writerow(value_list_madsen) 527 528 for i in range(len(area_percent_surf_sim[1])): 529 value_list_surf_sim =[] 530 for key in area_percent_surf_sim: 531 try: 532 area_percent_surf_sim[key][i] 533 except NameError: 534 value_list_surf_sim.append(-9999) 535 else: 536 value_list_surf_sim.append(area_percent_surf_sim[key][i]) 537 csv_surf_sim.writerow(value_list_surf_sim) 425 538 426 539 for i in range(len(area_percent_energy[1])): … … 430 543 area_percent_energy[key][i] 431 544 except NameError: 432 value_list_energy.append( None)545 value_list_energy.append(-9999) 433 546 else: 434 547 value_list_energy.append(area_percent_energy[key][i]) -
anuga_work/production/new_south_wales/batemans_bay/plot_area_comp.py
r7577 r7592 9 9 boundary_path = "/nas/gemd/georisk_models/inundation/data/new_south_wales/batemans_bay_tsunami_scenario_2009/anuga/boundaries/" 10 10 in_file_name = 'area_comparisons_madsen.csv' 11 #in_file_name = 'area_comparisons_energy.csv' 11 ##in_file_name = 'area_comparisons_energy.csv' 12 ##in_file_name = 'area_comparisons_surf_sim.csv' 12 13 figure_name = 'area_comparisons_madsen.png' 14 ##figure_name = 'area_comparisons_energy.png' 15 ##figure_name = 'area_comparisons_surf_sim.png' 13 16 14 17 in_file = join(boundary_path, in_file_name) … … 38 41 ## key_list.append(key) 39 42 pylab.scatter(area_id_list,area_percent_list) 40 pylab.axis([0,1 0,-2000,2000])43 pylab.axis([0,11,-500,500]) 41 44 pylab.savefig(figure_path) -
anuga_work/production/new_south_wales/batemans_bay/plot_area_energy2.py
r7577 r7592 36 36 'Event3_MSL':58284, 37 37 'Puysegur_200yr':58129, 38 'Puysegur_500yr':58115,38 #'Puysegur_500yr':58115, 39 39 'Puysegur_1000yr':58226, 40 40 'Puysegur_5000yr':58286, -
anuga_work/production/new_south_wales/batemans_bay/project.py
r7577 r7592 8 8 from time import localtime, strftime, gmtime 9 9 from os.path import join, exists 10 import sys 10 11 11 12 … … 26 27 # Model specific parameters. 27 28 # One or all can be changed each time the run_model script is executed 28 tide = 1.0 # difference between MSL and HAT (1.0)29 tide = 0.0 # difference between MSL and HAT (1.0) 29 30 30 31 # the event number or the mux file name … … 34 35 ##event_number = 58284 #1 in 2000 yr Puysegur (Event 3) 35 36 ##event_number = 58286 #1 in 5000 yr Puysegur 36 event_number = 58346 #1 in 10000 yr Puysegur (Event 1)37 ##event_number = 58346 #1 in 10000 yr Puysegur (Event 1) 37 38 38 39 ##event_number = 51077 #1 in 200 yr New Hebrides … … 47 48 ######event_number = 58272 #1 in ~15000 yr Puysegur 48 49 ######event_number = 51445 #1 in ~15000 yr New Hebrides 50 51 if len(sys.argv) > 1: 52 event_number = int(sys.argv[1]) 53 else: 54 event_number = 58346 55 ##event_number_list = [7871,31583,31602,31714,31913] #1.5-2.0m 56 ##event_number_list = [31997,51268,51375,51436,51452] #1.5-2.0m 57 ##event_number_list = [58176,58286,58318,58337,58350] #1.5-2.0m 58 59 ##event_number_list = [31708,31831,31897,31961,31973] 60 ##event_number_list = [31981,51270,51328,51415,51460] 61 event_number_list = [51470,58274,58331,58348,58357,58360] 62 49 63 50 64 alpha = 0.1 # smoothing parameter for mesh -
anuga_work/production/new_south_wales/batemans_bay/wave_energy.py
r7586 r7592 14 14 15 15 16 def wave_energy(filepath, filebasename ):16 def wave_energy(filepath, filebasename, slope): 17 17 18 18 filepathlist = [] … … 152 152 # call run-up module 153 153 ##################################################################### 154 Run_up = run_up.Madsen(100, 0.017,max_stage,max_time)154 Run_up = run_up.Madsen(100,numpy.tan(slope),max_stage,max_time) 155 155 print 'Madsen runup', Run_up 156 156 run_up_list.append(Run_up) 157 157 158 Run_up_surf_sim = run_up.surf_sim(100, 0.03,max_stage,max_time)158 Run_up_surf_sim = run_up.surf_sim(100,numpy.tan(slope),max_stage,max_time) 159 159 print 'Madsen surf similarity runup', Run_up_surf_sim 160 160 run_up_list_surf_sim.append(Run_up_surf_sim) 161 161 162 energy_run_up = run_up.energy_conserv(max_energy, 1.0,0.8,9.81)162 energy_run_up = run_up.energy_conserv(max_energy,slope+0.2,slope,9.81) 163 163 energy_run_up_list.append(energy_run_up) 164 164 print 'energy run up', energy_run_up … … 182 182 outFilename= filepath +'/wave_energy_summary.csv' 183 183 outFile = file(outFilename,'w') 184 outFile.write('filename, max crest-integrated energy (J.s/m^2), max instantatneous energy J/m^2, Run up (Madsen), Energy run up , max stage (m) \n')184 outFile.write('filename, max crest-integrated energy (J.s/m^2), max instantatneous energy J/m^2, Run up (Madsen), Energy run up , max stage (m), Surf similarity run up (m)\n') 185 185 for filename in filepathlist: 186 186 outFile.write(filename+',') … … 229 229 index = 2872 230 230 filebasename = 'sts_gauge_' + str(index) +'.csv' 231 wave_energy(filepath, filebasename) 231 slope = 1 #degrees 232 wave_energy(filepath, filebasename, slope)
Note: See TracChangeset
for help on using the changeset viewer.