[3908] | 1 | # -*- coding: cp1252 -*- |
---|
| 2 | """Common filenames and locations for topographic data, meshes and outputs. |
---|
| 3 | """ |
---|
| 4 | |
---|
| 5 | from os import sep, environ, getenv, getcwd |
---|
| 6 | from os.path import expanduser |
---|
| 7 | import sys |
---|
| 8 | from time import localtime, strftime, gmtime |
---|
| 9 | from anuga.utilities.polygon import read_polygon, plot_polygons, polygon_area, is_inside_polygon |
---|
| 10 | |
---|
| 11 | if sys.platform == 'win32': |
---|
| 12 | home = getenv('INUNDATIONHOME') |
---|
| 13 | user = getenv('USERPROFILE') |
---|
| 14 | |
---|
| 15 | else: |
---|
| 16 | home = getenv('INUNDATIONHOME', sep+'d'+sep+'xrd'+sep+'gem'+sep+'2'+sep+'ramp'+sep+'risk_assessment_methods_project'+sep+'inundation') |
---|
| 17 | user = getenv('LOGNAME') |
---|
| 18 | print 'USER:', user |
---|
| 19 | |
---|
| 20 | # INUNDATIONHOME is the inundation directory, not the data directory. |
---|
| 21 | home += sep +'data' |
---|
| 22 | |
---|
| 23 | #Making assumptions about the location of scenario data |
---|
| 24 | state = 'western_australia' |
---|
| 25 | scenario_dir_name = 'busselton_tsunami_scenario_2006' |
---|
| 26 | |
---|
| 27 | # onshore data provided by WA DLI |
---|
| 28 | onshore_name = ''# original |
---|
| 29 | |
---|
| 30 | # AHO + DPI data |
---|
| 31 | offshore_name1 = 'XY100011610' |
---|
| 32 | offshore_name2 = 'XY100011611' |
---|
| 33 | offshore_name3 = 'XY100011613' |
---|
| 34 | offshore_name4 = 'XY100011614' |
---|
| 35 | offshore_name5 = 'XY100011616' |
---|
| 36 | offshore_name6 = 'XY100011617' |
---|
| 37 | offshore_name7 = 'XY100011618' |
---|
| 38 | offshore_name8 = 'XY100011621' |
---|
| 39 | offshore_name9 = 'XY100011623' |
---|
| 40 | offshore_name10 = 'XY100011745' |
---|
| 41 | offshore_name11 = 'XY100011746' |
---|
| 42 | offshore_name12 = 'XY100017530' |
---|
| 43 | offshore_name13 = 'XY100017532' |
---|
| 44 | offshore_name14 = 'XY100017538' |
---|
| 45 | offshore_name15 = 'XY100017540' |
---|
| 46 | offshore_name16 = 'XYBR66' |
---|
| 47 | offshore_name17 = 'XYBR70' |
---|
| 48 | offshore_name18 = 'XYBR80' |
---|
| 49 | offshore_name19 = 'XYBR88' |
---|
| 50 | offshore_name20 = 'XYBR93' |
---|
| 51 | offshore_name21 = 'XYBR0110' |
---|
| 52 | offshore_name22 = 'XYWADPI' |
---|
| 53 | |
---|
| 54 | # developed by NM&I |
---|
| 55 | coast_name = 'coastline' |
---|
| 56 | |
---|
| 57 | boundary_basename = 'SU-AU' # Mw ? |
---|
| 58 | |
---|
| 59 | #swollen/ all data output |
---|
| 60 | basename = 'source' |
---|
| 61 | codename = 'project.py' |
---|
| 62 | |
---|
| 63 | #Derive subdirectories and filenames |
---|
| 64 | local_time = strftime('%Y%m%d_%H%M%S',gmtime()) |
---|
| 65 | meshdir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'meshes'+sep |
---|
| 66 | datadir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'topographies'+sep |
---|
| 67 | gaugedir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'gauges'+sep |
---|
| 68 | polygondir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'polygons'+sep |
---|
| 69 | boundarydir = home+sep+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'boundaries'+sep |
---|
| 70 | outputdir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'outputs'+sep |
---|
| 71 | outputtimedir = outputdir + local_time + sep |
---|
| 72 | polygondir = home+sep+state+sep+scenario_dir_name+sep+'anuga'+sep+'polygons'+sep |
---|
| 73 | |
---|
| 74 | gauge_filename = gaugedir + 'busselton_gauges.csv' |
---|
| 75 | community_filename = gaugedir + 'CHINS_v2.csv' |
---|
| 76 | community_broome = gaugedir + 'community_busselton.csv' |
---|
| 77 | codedir = getcwd()+sep |
---|
| 78 | codedirname = codedir + 'project.py' |
---|
| 79 | meshname = outputtimedir + 'mesh_' + basename |
---|
| 80 | |
---|
| 81 | # Necessary if using point datasets, rather than grid |
---|
| 82 | onshore_dem_name = datadir + onshore_name |
---|
| 83 | offshore_dem_name1 = datadir + offshore_name1 |
---|
| 84 | offshore_dem_name2 = datadir + offshore_name2 |
---|
| 85 | offshore_dem_name3 = datadir + offshore_name3 |
---|
| 86 | offshore_dem_name4 = datadir + offshore_name4 |
---|
| 87 | offshore_dem_name5 = datadir + offshore_name5 |
---|
| 88 | offshore_dem_name6 = datadir + offshore_name6 |
---|
| 89 | offshore_dem_name7 = datadir + offshore_name7 |
---|
| 90 | offshore_dem_name8 = datadir + offshore_name8 |
---|
| 91 | offshore_dem_name9 = datadir + offshore_name9 |
---|
| 92 | offshore_dem_name10 = datadir + offshore_name10 |
---|
| 93 | offshore_dem_name11 = datadir + offshore_name11 |
---|
| 94 | offshore_dem_name12 = datadir + offshore_name12 |
---|
| 95 | offshore_dem_name13 = datadir + offshore_name13 |
---|
| 96 | offshore_dem_name14 = datadir + offshore_name14 |
---|
| 97 | offshore_dem_name15 = datadir + offshore_name15 |
---|
| 98 | offshore_dem_name16 = datadir + offshore_name16 |
---|
| 99 | offshore_dem_name17 = datadir + offshore_name17 |
---|
| 100 | offshore_dem_name18 = datadir + offshore_name18 |
---|
| 101 | offshore_dem_name19 = datadir + offshore_name19 |
---|
| 102 | offshore_dem_name20 = datadir + offshore_name20 |
---|
| 103 | offshore_dem_name21 = datadir + offshore_name21 |
---|
| 104 | offshore_dem_name22 = datadir + offshore_name22 |
---|
| 105 | |
---|
| 106 | coast_dem_name = datadir + coast_name |
---|
| 107 | |
---|
| 108 | combined_dem_name = datadir + 'broome_combined_elevation' |
---|
| 109 | |
---|
| 110 | ############################### |
---|
| 111 | # Domain definitions |
---|
| 112 | ############################### |
---|
| 113 | |
---|
| 114 | # bounding box for clipping MOST/URS output (much bigger than study area) |
---|
| 115 | ##south = degminsec2decimal_degrees(-19,0,0) |
---|
| 116 | ##north = degminsec2decimal_degrees(-17,15,0) |
---|
| 117 | ##west = degminsec2decimal_degrees(120,0,0) |
---|
| 118 | ##east = degminsec2decimal_degrees(122,30,0) |
---|
| 119 | ## |
---|
| 120 | ##d0 = [south, west] |
---|
| 121 | ##d1 = [south, east] |
---|
| 122 | ##d2 = [north, east] |
---|
| 123 | ##d3 = [north, west] |
---|
| 124 | ##poly_bc, zone = convert_points_from_latlon_to_utm([d0, d1, d2, d3]) |
---|
| 125 | ##refzone = zone |
---|
| 126 | |
---|
| 127 | # bounding polygon for study area |
---|
| 128 | polyAll = read_polygon(polygondir+'extent.csv') |
---|
| 129 | |
---|
| 130 | # plot bounding polygon and make sure BC info surrounds it |
---|
| 131 | #plot_polygons([polyAll, poly_bc],'boundingpoly',verbose=False) |
---|
| 132 | print 'Area of bounding polygon', polygon_area(polyAll)/1000000.0 |
---|
| 133 | |
---|
| 134 | ################################################################### |
---|
| 135 | # Clipping regions for export to asc and regions for clipping data |
---|
| 136 | ################################################################### |
---|
| 137 | |
---|
| 138 | # exporting asc grid |
---|
| 139 | eastingmin = 406215.87 |
---|
| 140 | eastingmax = 440208.78 |
---|
| 141 | northingmin = 7983427.73 |
---|
| 142 | northingmax = 8032834.52 |
---|
| 143 | |
---|
| 144 | ############################### |
---|
| 145 | # Interior region definitions |
---|
| 146 | ############################### |
---|
| 147 | |
---|
| 148 | # broome digitized polygons |
---|
| 149 | poly_busselton1 = read_polygon(polygondir+'buss_Local_Polygon_update.csv') |
---|
| 150 | poly_busselton2 = read_polygon(polygondir+'buss_Close2_update.csv') |
---|
| 151 | poly_busselton3 = read_polygon(polygondir+'buss_Coast_update.csv') |
---|
| 152 | |
---|
| 153 | plot_polygons([polyAll,poly_broome1,poly_broome2,poly_broome3],'boundingpoly2',verbose=False) |
---|
| 154 | print 'Area of local polygon', polygon_area(poly_broome1)/1000000.0 |
---|
| 155 | print 'Area of close polygon', polygon_area(poly_broome2)/1000000.0 |
---|
| 156 | print 'Area of coastal polygon', polygon_area(poly_broome3)/1000000.0 |
---|
| 157 | |
---|
| 158 | for i in poly_broome3: |
---|
| 159 | v = is_inside_polygon(i,poly_broome1, verbose=False) |
---|
| 160 | if v == False: print v |
---|
| 161 | |
---|
| 162 | def number_mesh_triangles(interior_regions, bounding_poly, remainder_res): |
---|
| 163 | from anuga.utilities.polygon import polygon_area |
---|
| 164 | |
---|
| 165 | # TO DO check if any of the regions fall inside one another |
---|
| 166 | no_triangles = 0.0 |
---|
| 167 | area = polygon_area(bounding_poly) |
---|
| 168 | for i,j in interior_regions: |
---|
| 169 | this_area = polygon_area(i) |
---|
| 170 | no_triangles += this_area/j |
---|
| 171 | area -= this_area |
---|
| 172 | print j, this_area/1000000., area/1000000. |
---|
| 173 | no_triangles += area/remainder_res |
---|
| 174 | return int(no_triangles/0.7) |
---|