def test_peta_jakarta_aggregates(self): json_response = PetaJakartaAPI.get_aggregate_report(1, "rw") LOGGER.debug('JSON Response %s' % json_response)
def save_hazard_data(self): if self.dummy_report_folder: filename = os.path.join(self.working_dir, self.dummy_report_folder, 'flood_data.json') hazard_geojson = DummySourceAPI.get_aggregate_report(filename) else: hazard_geojson = PetaJakartaAPI.get_aggregate_report( self.duration, self.level) if not hazard_geojson: raise PetaJakartaAPIError("Can't access PetaJakarta REST API") with open(self.hazard_path, 'w+') as f: f.write(hazard_geojson) # Save the layer as shp file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer(self.hazard_path, file_info.baseName(), 'ogr', False) target_name = 'flood_data.shp' self.hazard_path = os.path.join(self.report_path, target_name) QgsVectorFileWriter.writeAsVectorFormat(hazard_layer, self.hazard_path, 'CP1250', None, 'ESRI Shapefile') file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer(self.hazard_path, file_info.baseName(), 'ogr') # hazard_layer.startEditing() # field = QgsField('flooded', QVariant.Int) # hazard_layer.dataProvider().addAttributes([field]) # hazard_layer.commitChanges() # idx = hazard_layer.fieldNameIndex('flooded') # expression = QgsExpression('count > 0') # expression.prepare(hazard_layer.pendingFields()) # # hazard_layer.startEditing() # for feature in hazard_layer.getFeatures(): # feature[idx] = expression.evaluate(feature) # hazard_layer.updateFeature(feature) # # hazard_layer.commitChanges() # writing keywords keyword_io = KeywordIO() keywords = { 'field': 'state', 'hazard': 'generic', 'hazard_category': 'single_event', 'keyword_version': '3.5', 'layer_geometry': 'polygon', 'layer_mode': 'classified', 'layer_purpose': 'hazard', 'title': 'Flood', 'value_map': '{"high": [4], "medium": [3], ' '"low": [2], ' '"unaffected": ["None","","NULL",0,1]}', 'vector_hazard_classification': 'generic_vector_hazard_classes' } keyword_io.write_keywords(hazard_layer, keywords) # copy layer styles style_path = self.flood_fixtures_dir('flood_data_classified_state.qml') target_style_path = os.path.join(self.report_path, 'flood_data.qml') shutil.copy(style_path, target_style_path) # archiving hazard layer with ZipFile(self.hazard_zip_path, 'w') as zf: for root, dirs, files in os.walk(self.report_path): for f in files: _, ext = os.path.splitext(f) if 'flood_data' in f: filename = os.path.join(root, f) zf.write(filename, arcname=f)
def save_hazard_data(self): if self.dummy_report_folder: filename = os.path.join( self.working_dir, self.dummy_report_folder, 'flood_data.json') hazard_geojson = DummySourceAPI.get_aggregate_report(filename) else: hazard_geojson = PetaJakartaAPI.get_aggregate_report( self.duration, self.level) if not hazard_geojson: raise PetaJakartaAPIError("Can't access PetaJakarta REST API") with open(self.hazard_path, 'w+') as f: f.write(hazard_geojson) # Save the layer as shp file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer( self.hazard_path, file_info.baseName(), 'ogr', False) target_name = 'flood_data.shp' self.hazard_path = os.path.join(self.report_path, target_name) QgsVectorFileWriter.writeAsVectorFormat( hazard_layer, self.hazard_path, 'CP1250', None, 'ESRI Shapefile') file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer( self.hazard_path, file_info.baseName(), 'ogr') # hazard_layer.startEditing() # field = QgsField('flooded', QVariant.Int) # hazard_layer.dataProvider().addAttributes([field]) # hazard_layer.commitChanges() # idx = hazard_layer.fieldNameIndex('flooded') # expression = QgsExpression('count > 0') # expression.prepare(hazard_layer.pendingFields()) # # hazard_layer.startEditing() # for feature in hazard_layer.getFeatures(): # feature[idx] = expression.evaluate(feature) # hazard_layer.updateFeature(feature) # # hazard_layer.commitChanges() # writing keywords keyword_io = KeywordIO() keywords = { 'field': 'state', 'hazard': 'generic', 'hazard_category': 'single_event', 'keyword_version': '3.5', 'layer_geometry': 'polygon', 'layer_mode': 'classified', 'layer_purpose': 'hazard', 'title': 'Flood', 'value_map': '{"high": [4], "medium": [3], ' '"low": [2], ' '"unaffected": ["None","","NULL",0,1]}', 'vector_hazard_classification': 'generic_vector_hazard_classes' } keyword_io.write_keywords(hazard_layer, keywords) # copy layer styles style_path = self.flood_fixtures_dir( 'flood_data_classified_state.qml') target_style_path = os.path.join( self.report_path, 'flood_data.qml') shutil.copy(style_path, target_style_path) # archiving hazard layer with ZipFile(self.hazard_zip_path, 'w') as zf: for root, dirs, files in os.walk(self.report_path): for f in files: _, ext = os.path.splitext(f) if 'flood_data' in f: filename = os.path.join(root, f) zf.write(filename, arcname=f)
def save_hazard_data(self): hazard_geojson = PetaJakartaAPI.get_aggregate_report( self.duration, self.level) if not hazard_geojson: raise PetaJakartaAPIError("Can't access PetaJakarta REST API") with open(self.hazard_path, 'w+') as f: f.write(hazard_geojson) # Save the layer as shp file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer(self.hazard_path, file_info.baseName(), 'ogr', False) target_name = 'flood_data.shp' self.hazard_path = os.path.join(self.report_path, target_name) QgsVectorFileWriter.writeAsVectorFormat(hazard_layer, self.hazard_path, 'CP1250', None, 'ESRI Shapefile') file_info = QFileInfo(self.hazard_path) hazard_layer = QgsVectorLayer(self.hazard_path, file_info.baseName(), 'ogr') hazard_layer.startEditing() field = QgsField('flooded', QVariant.Int) hazard_layer.dataProvider().addAttributes([field]) hazard_layer.commitChanges() idx = hazard_layer.fieldNameIndex('flooded') expression = QgsExpression('count > 0') expression.prepare(hazard_layer.pendingFields()) hazard_layer.startEditing() for feature in hazard_layer.getFeatures(): feature[idx] = expression.evaluate(feature) hazard_layer.updateFeature(feature) hazard_layer.commitChanges() # writing keywords keyword_io = KeywordIO() keywords = { 'field': 'flooded', 'hazard': 'flood', 'hazard_category': 'single_event', 'keyword_version': '3.3', 'layer_geometry': 'polygon', 'layer_mode': 'classified', 'layer_purpose': 'hazard', 'title': 'Flood', 'value_map': '{"wet": [1], "dry": [0]}', 'vector_hazard_classification': 'flood_vector_hazard_classes' } keyword_io.write_keywords(hazard_layer, keywords) # archiving hazard layer with ZipFile(self.hazard_zip_path, 'w') as zf: for root, dirs, files in os.walk(self.report_path): for f in files: _, ext = os.path.splitext(f) if 'flood_data' in f: filename = os.path.join(root, f) zf.write(filename, arcname=f)