else: try: setattr(self, key, value) except Exception: app.logger.exception("Unknown run config key: %s. Ignoring." % key) if self.behavior: try: b = urllib2.urlopen(self.behavior) self.cached_behavior = json.loads(b.read()) except: pass db.register([Run]) from tables import * # Pytables representation of a model run class ModelResultsTable(IsDescription): particle = UInt8Col() time = Time32Col() latitude = Float32Col() longitude = Float32Col() depth = Float32Col() u_vector = Float32Col() v_vector = Float32Col() w_vector = Float32Col()
geo = loads(self.bbox) else: return marker_positions THRESHOLD=100000 # Google maps is y,x not x,y if isinstance(geo, Point): marker_positions.append((geo.coords[0][1], geo.coords[0][0])) elif isinstance(geo, list): total = 0 for g in geo: if isinstance(g, Polygon): total += len(g.exterior.coords) if total > THRESHOLD: return None marker_positions.append([(pt[1], pt[0]) for pt in g.exterior.coords]) elif isinstance(g, MultiPolygon): for subg in g: total += len(subg.exterior.coords) if total > THRESHOLD: return None marker_positions.append([(pt[1], pt[0]) for pt in subg.exterior.coords]) else: for pt in geo.exterior.coords: marker_positions.append((pt[1], pt[0])) return marker_positions db.register([Shoreline])
for k, v in variables.items(): # Strip out numpy arrays into BSON encodable things. cleaned_var = { key : clean(value) for key, value in v.items() } cleaned_info[k] = cleaned_var self.variables = cleaned_info except: app.logger.warning("Could not calculate bounds for this dataset") raise def google_maps_coordinates(self): marker_positions = [] if self.geometry: geo = loads(self.geometry) elif self.bbox: geo = loads(self.bbox) else: return marker_positions if isinstance(geo, Point): marker_positions.append((geo.coords[0][1], geo.coords[0][0])) else: for pt in geo.exterior.coords: # Google maps is y,x not x,y marker_positions.append((pt[1], pt[0])) return marker_positions db.register([Dataset])