Пример #1
0
 def run(self):
 
     result = LeaseBlock.objects.all()
     
     #GeoPhysical
     if self.input_parameter_distance_to_shore:
         result = result.filter(max_distance__gte=self.input_min_distance_to_shore, max_distance__lte=self.input_max_distance_to_shore)
     if self.input_parameter_depth:
         input_min_depth = feet_to_meters(-self.input_min_depth)
         input_max_depth = feet_to_meters(-self.input_max_depth)
         result = result.filter(min_depth__lte=input_min_depth, max_depth__gte=input_max_depth)
     if self.input_parameter_substrate:
         input_substrate = [s.substrate_name for s in self.input_substrate.all()]
         result = result.filter(majority_substrate__in=input_substrate)
     if self.input_parameter_sediment:
         input_sediment = [s.sediment_name for s in self.input_sediment.all()]
         result = result.filter(majority_sediment__in=input_sediment)
     #Wind Energy
     if self.input_parameter_wind_speed:
         input_wind_speed = mph_to_mps(self.input_avg_wind_speed)
         result = result.filter(min_wind_speed__gte=input_wind_speed)
     if self.input_parameter_wea:
         input_wea = [wea.wea_id for wea in self.input_wea.all()]
         result = result.filter(wea_number__in=input_wea)
     if self.input_parameter_distance_to_awc:
         result = result.filter(awc_min_distance__lte=self.input_distance_to_awc)
     #Shipping
     if self.input_filter_ais_density:
         result = result.filter(ais_mean_density__lte=1)
     if self.input_filter_distance_to_shipping:
         result = result.filter(tsz_min_distance__gte=self.input_distance_to_shipping)
         
     self.geometry_final_area = sum([r.geometry.area for r in result.all()])
     leaseblock_ids = [r.id for r in result.all()]
     self.lease_blocks = ','.join(map(str, leaseblock_ids))
     
     if self.lease_blocks == '':
         self.satisfied = False
     else:
         self.satisfied = True
     return True        
Пример #2
0
 def run(self):
 
     result = LeaseBlock.objects.all()
     
     #import pdb
     #pdb.set_trace()
     #GeoPhysical
     if self.input_parameter_distance_to_shore:
         #why isn't this max_distance >= input.min_distance && min_distance <= input.max_distance ???
         result = result.filter(avg_distance__gte=self.input_min_distance_to_shore, avg_distance__lte=self.input_max_distance_to_shore)
     if self.input_parameter_depth:
         #note:  converting input to negative values and converted to meters (to match db)
         input_min_depth = feet_to_meters(-self.input_min_depth, 3)
         input_max_depth = feet_to_meters(-self.input_max_depth, 3)
         #result = result.filter(min_depth__lte=input_min_depth, max_depth__gte=input_max_depth)
         result = result.filter(avg_depth__lte=input_min_depth, avg_depth__gte=input_max_depth)
         result = result.filter(avg_depth__lt=0) #not sure this is doing anything, but do want to ensure 'no data' values are not included
     '''
     if self.input_parameter_substrate:
         input_substrate = [s.substrate_name for s in self.input_substrate.all()]
         result = result.filter(majority_substrate__in=input_substrate)
     if self.input_parameter_sediment:
         input_sediment = [s.sediment_name for s in self.input_sediment.all()]
         result = result.filter(majority_sediment__in=input_sediment)
     '''
     #Wind Energy
     if self.input_parameter_wind_speed:
         #input_wind_speed = mph_to_mps(self.input_avg_wind_speed)
         result = result.filter(min_wind_speed_rev__gte=self.input_avg_wind_speed)
     if self.input_parameter_wea:
         input_wea = [wea.wea_id for wea in self.input_wea.all()]
         result = result.filter(wea_number__in=input_wea)
     if self.input_parameter_distance_to_awc:
         result = result.filter(awc_min_distance__lte=self.input_distance_to_awc)
     #Shipping
     if self.input_filter_ais_density:
         result = result.filter(ais_mean_density__lte=1)
     if self.input_filter_distance_to_shipping:
         result = result.filter(tsz_min_distance__gte=self.input_distance_to_shipping)
      
     dissolved_geom = result[0].geometry
     for lb in result:
         try:
             dissolved_geom = dissolved_geom.union(lb.geometry)
         except:
             pass
     
     from django.contrib.gis.geos import MultiPolygon
     if type(dissolved_geom) == MultiPolygon:
         self.geometry_dissolved = dissolved_geom
     else:
         self.geometry_dissolved = MultiPolygon(dissolved_geom, srid=dissolved_geom.srid)
     self.active = True
     
     
     self.geometry_final_area = sum([lb.geometry.area for lb in result.all()])
     leaseblock_ids = [lb.id for lb in result.all()]
     self.lease_blocks = ','.join(map(str, leaseblock_ids))
     
     #pdb.set_trace()
     
     
     if self.lease_blocks == '':
         self.satisfied = False
     else:
         self.satisfied = True
     return True