def update_fusion_tables(self): """ update polygon in fusion tables. Do not call this method, use save method when change instance data """ logging.info("updating fusion tables %s" % self.key()) cl = self._get_ft_client() table_id = cl.table_id(settings.FT_TABLE) geo_kml = path_to_kml(json.loads(self.geo)) cl.sql("update %s set geo = '%s', type = '%s' where rowid = '%s'" % (table_id, geo_kml, self.fusion_tables_type(), self.fusion_tables_id))
def create_fusion_tables(self): logging.info("saving to fusion tables report %s" % self.key()) cl = self._get_ft_client() table_id = cl.table_id(settings.FT_TABLE) geo_kml = path_to_kml(json.loads(self.geo)) rowid = cl.sql("insert into %s ('geo', 'added_on', 'type', 'report_id') VALUES ('%s', '%s', %d, %d)" % (table_id, geo_kml, self.added_on, self.fusion_tables_type(), self.cell.report.key().id())) self.fusion_tables_id = int(rowid.split('\n')[1]) rowid = cl.sql("update %s set rowid_copy = '%s' where rowid = '%s'" % (table_id, self.fusion_tables_id, self.fusion_tables_id)) self.put()
def create_fusion_tables(self): logging.info("saving to fusion tables %s" % self.key()) cl = self._get_ft_client() table_id = cl.table_id(settings.FT_TABLE) geo_kml = path_to_kml(json.loads(self.geo)) rowid = cl.sql("insert into %s ('geo', 'added_on', 'type', 'report_id') VALUES ('%s', '%s', %d, %d)" % (table_id, geo_kml, self.added_on, self.fusion_tables_type(), self.cell.report.key().id())) self.fusion_tables_id = int(rowid.split('\n')[1]) rowid = cl.sql("update %s set rowid_copy = '%s' where rowid = '%s'" % (table_id, self.fusion_tables_id, self.fusion_tables_id)) self.put()
def polygon_stats(format=None): reports = request.args.get('reports', None) if not reports: abort(400) try: reports = map(int, reports.split(',')) except ValueError: logging.error("bad format for report id") abort(400) try: reports = [Report.get_by_id(x) for x in reports] except ValueError: logging.error("can't find some report") abort(404) #TODO: test if polygon is ccw # exchange lat, lon -> lon, lat polygon = json.loads(request.args.get('polygon', None)) polygon.append(polygon[0]) logging.info(polygon) logging.info(path_to_kml([polygon])) if not polygon: abort(404) ee = Stats() normalized_poly = [(coord[1], coord[0]) for coord in polygon] stats = ee.get_stats_for_polygon([(str(r.key().id()), r.assetid) for r in reports], [normalized_poly]) this_report = ReportType.factory(format) this_report.init("custom polygon") try: this_report.write_header() for i, s in enumerate(stats): r = reports[i] this_report.write_row(r, s, None, path_to_kml([polygon])) this_report.write_footer() return this_report.response("report_polygon") except (KeyError, ValueError, IndexError): abort(404)
def polygon_stats(format=None): reports = request.args.get('reports', None) if not reports: abort(400) try: reports = map(int, reports.split(',')) except ValueError: logging.error("bad format for report id") abort(400) try: reports = [Report.get_by_id(x) for x in reports] except ValueError: logging.error("can't find some report") abort(404) #TODO: test if polygon is ccw # exchange lat, lon -> lon, lat polygon = json.loads(request.args.get('polygon', None)) polygon.append(polygon[0]) logging.info(polygon) logging.info(path_to_kml([polygon])) if not polygon: abort(404) ee = Stats() normalized_poly = [(coord[1], coord[0]) for coord in polygon] stats = ee.get_stats_for_polygon([(str(r.key().id()), r.assetid) for r in reports], [normalized_poly]) this_report = ReportType.factory(format) this_report.init("custom polygon") try: this_report.write_header() for i,s in enumerate(stats): r = reports[i] this_report.write_row(r, s, None, path_to_kml([polygon])) this_report.write_footer() return this_report.response("report_polygon") except (KeyError, ValueError, IndexError): abort(404)