Skip to content

Commit 54e194e

Browse files
Merge pull request #91 from bcgov/map-symbol-standardization
Small changes to labels in pdf map, and removal of duplicate bs layer after analysis
2 parents fa088d5 + 35266fb commit 54e194e

4 files changed

Lines changed: 77 additions & 69 deletions

File tree

analysis/resources/bs-map.qgz

-2.02 KB
Binary file not shown.

analysis/util/qgis_map_robot.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ def bs_map_exporter(qgis_project:str, burn_severity_geojson:str, fire_perimeter_
8787
ref_map = layout.referenceMap()
8888
ref_map.zoomToExtent(new_extent)
8989
scale = ref_map.scale()
90-
new_scale = math.ceil(scale/10000)*10000 #up scale value to nearest 10,000
90+
new_scale = math.ceil(scale/5000)*5000 #up scale value to nearest 5,000
9191
ref_map.setScale(new_scale)
9292
layout.refresh()
9393

9494
# export'o-rama
9595
exporter = QgsLayoutExporter(layout)
9696
pdf_settings = QgsLayoutExporter.PdfExportSettings()
97-
pdf_settings.dpi = 92
97+
pdf_settings.dpi = 300
9898
pdf_settings.exportMetadata = False
9999
exporter.exportToPdf( output ,pdf_settings)
100100

frontend/src/components/ol-maps/OLMap.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ interface OLMapProps {
3030
selectedDbYear?: string | null;
3131
onVisibleFiresChange?: (fireNumbers: string[]) => void;
3232
onMapInit?: (map: Map) => void;
33+
refreshTrigger?: number;
3334
}
3435

3536
const OLMap: React.FC<OLMapProps> = ({
@@ -39,7 +40,8 @@ const OLMap: React.FC<OLMapProps> = ({
3940
selectedDbFire,
4041
selectedDbYear,
4142
onVisibleFiresChange,
42-
onMapInit
43+
onMapInit,
44+
refreshTrigger = 0
4345
}) => {
4446
const { isAuthenticated } = useAuth();
4547
const { firePointsGeoJSON, firePolysGeoJSON } = useFireData();
@@ -107,7 +109,8 @@ const OLMap: React.FC<OLMapProps> = ({
107109
// else if (burnSeverity === 'Medium') fillColor = 'rgba(230,152,0,0.7)';
108110
// else if (burnSeverity === 'Low') fillColor = 'rgba(255,255,0,0.7)';
109111
// else if (burnSeverity === 'Unburned') fillColor = 'rgba(152,230,0,0.7)'
110-
return new Style({ fill: new Fill({ color: fillColor }), stroke: new Stroke({ color: '#333', width: 1 }) });
112+
return new Style({ fill: new Fill({ color: fillColor }) });
113+
// return new Style({ fill: new Fill({ color: fillColor }), stroke: new Stroke({ color: '#333', width: 1 }) });
111114
}
112115
});
113116

@@ -310,7 +313,7 @@ const OLMap: React.FC<OLMapProps> = ({
310313
setShowSummary(false);
311314
}
312315
}
313-
}, [selectedDbFire, selectedDbYear, fetchAndDisplayBurnGeometry]);
316+
}, [selectedDbFire, selectedDbYear, refreshTrigger, fetchAndDisplayBurnGeometry]);
314317

315318

316319
useEffect(() => {

frontend/src/pages/severity-configuration.tsx

Lines changed: 69 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ const ConfigurationApp: React.FC = () => {
4343
const [selectedFire, setSelectedFire] = useState<FireOption | null>(null);
4444
// const [fires, setFires] = useState<Fire[]>([]);
4545
const [analysisFire, setAnalysisFire] = useState<string | null>(null);
46-
const resultsLayerRef = useRef<VectorLayer | null>(null);
47-
const [resultsFeatureCollection, setResultsFeatureCollection] = useState<any | null>(null);
46+
// const resultsLayerRef = useRef<VectorLayer | null>(null);
47+
// const [resultsFeatureCollection, setResultsFeatureCollection] = useState<any | null>(null);
4848
const currentYear = String(new Date().getFullYear());
4949
const [visibleFireNumbers, setVisibleFireNumbers] = useState<string[] | null>(null);
5050
const [error, setError] = useState<string | null>(null);
51+
const [refreshTrigger, setRefreshTrigger] = useState<number>(0);
5152

5253

5354
const availableYears = useMemo(() => {
@@ -149,61 +150,64 @@ const ConfigurationApp: React.FC = () => {
149150
// };
150151

151152

152-
const fetchAndDisplayBurnGeometry = useCallback(async (fireNumber: string) => {
153-
if (!mapInstance) return;
154-
try {
155-
const featureCollection = await getFireData(selectedYear, fireNumber);
153+
// const fetchAndDisplayBurnGeometry = useCallback(async (fireNumber: string) => {
154+
// if (!mapInstance) return;
155+
// try {
156+
// const featureCollection = await getFireData(selectedYear, fireNumber);
156157

157-
setResultsFeatureCollection(featureCollection);
158-
159-
if (resultsLayerRef.current) {
160-
mapInstance.removeLayer(resultsLayerRef.current);
161-
}
158+
// setResultsFeatureCollection(featureCollection);
162159

163-
const vectorSource = new VectorSource({
164-
features: new GeoJSON().readFeatures(featureCollection, {
165-
featureProjection: 'EPSG:3857',
166-
dataProjection: 'EPSG:4326'
167-
})
168-
});
160+
// if (resultsLayerRef.current) {
161+
// mapInstance.removeLayer(resultsLayerRef.current);
162+
// }
169163

170-
const newLayer = new VectorLayer({
171-
source: vectorSource,
172-
opacity: 0.6,
173-
style: (feature) => {
174-
const burnSeverity = feature.get('BURN_SEVERITY_RATING') || feature.get('severity_class') || 'Unknown';
175-
let fillColor = BURN_SEVERITY_COLOURS[burnSeverity.toLowerCase() as keyof typeof BURN_SEVERITY_COLOURS];
176-
// if (burnSeverity === 'High') fillColor = 'rgba(214,26,29,0.7)';
177-
// else if (burnSeverity === 'Medium') fillColor = 'rgba(230,152,0,0.7)';
178-
// else if (burnSeverity === 'Low') fillColor = 'rgba(255,255,0,0.7)';
179-
// else if (burnSeverity === 'Unburned') fillColor = 'rgba(152,230,0,0.7)'
180-
return new Style({ fill: new Fill({ color: fillColor }), stroke: new Stroke({ color: '#333', width: 1 }) });
181-
}
182-
});
183-
newLayer.setOpacity(0.6);
184-
mapInstance.addLayer(newLayer);
185-
resultsLayerRef.current = newLayer;
164+
// const vectorSource = new VectorSource({
165+
// features: new GeoJSON().readFeatures(featureCollection, {
166+
// featureProjection: 'EPSG:3857',
167+
// dataProjection: 'EPSG:4326'
168+
// })
169+
// });
186170

187-
if (vectorSource.getFeatures().length > 0) {
188-
const extent = vectorSource.getExtent();
189-
//fitMapToExtent(extent);
190-
}
191-
} catch (error) {
192-
console.error('Failed to fetch or display burn geometry:', error);
193-
if (resultsLayerRef.current) {
194-
mapInstance.removeLayer(resultsLayerRef.current);
195-
resultsLayerRef.current = null;
196-
}
197-
}
198-
}, [mapInstance, selectedYear]);
171+
// const newLayer = new VectorLayer({
172+
// source: vectorSource,
173+
// opacity: 0.6,
174+
// style: (feature) => {
175+
// const burnSeverity = feature.get('BURN_SEVERITY_RATING') || feature.get('severity_class') || 'Unknown';
176+
// let fillColor = BURN_SEVERITY_COLOURS[burnSeverity.toLowerCase() as keyof typeof BURN_SEVERITY_COLOURS];
177+
// // if (burnSeverity === 'High') fillColor = 'rgba(214,26,29,0.7)';
178+
// // else if (burnSeverity === 'Medium') fillColor = 'rgba(230,152,0,0.7)';
179+
// // else if (burnSeverity === 'Low') fillColor = 'rgba(255,255,0,0.7)';
180+
// // else if (burnSeverity === 'Unburned') fillColor = 'rgba(152,230,0,0.7)'
181+
// return new Style({ fill: new Fill({ color: fillColor })});
182+
// // return new Style({ fill: new Fill({ color: fillColor }), stroke: new Stroke({ color: '#333', width: 1 }) });
183+
// }
184+
// });
185+
// newLayer.setOpacity(0.6);
186+
// mapInstance.addLayer(newLayer);
187+
// resultsLayerRef.current = newLayer;
188+
189+
// if (vectorSource.getFeatures().length > 0) {
190+
// const extent = vectorSource.getExtent();
191+
// //fitMapToExtent(extent);
192+
// }
193+
// } catch (error) {
194+
// console.error('Failed to fetch or display burn geometry:', error);
195+
// if (resultsLayerRef.current) {
196+
// mapInstance.removeLayer(resultsLayerRef.current);
197+
// resultsLayerRef.current = null;
198+
// }
199+
// }
200+
// }, [mapInstance, selectedYear]);
199201

200202
const addAnalysisLayer = useCallback(() => {
201-
if (!mapInstance) return;
203+
console.log('Analysis complete. triggering map results')
204+
setRefreshTrigger(prev => prev + 1);
205+
// if (!mapInstance) return;
202206

203-
if (selectedFire && selectedFire.fireNumber) {
204-
fetchAndDisplayBurnGeometry(selectedFire.fireNumber);
205-
}
206-
}, [mapInstance, selectedFire, fetchAndDisplayBurnGeometry]);
207+
// if (selectedFire && selectedFire.fireNumber) {
208+
// fetchAndDisplayBurnGeometry(selectedFire.fireNumber);
209+
// }
210+
}, []);
207211

208212
//useEffect for init of map
209213
useEffect(() => {
@@ -289,21 +293,21 @@ const ConfigurationApp: React.FC = () => {
289293
}, [center, zoom, mapInstance]);
290294

291295
// useEffect to update map with analysis results
292-
useEffect(() => {
293-
if (!mapInstance) return;
296+
// useEffect(() => {
297+
// if (!mapInstance) return;
294298

295-
// This effect runs when a new fire is selected, or when an analysis is triggered.
296-
console.log('selectedFire', selectedFire)
297-
if (selectedFire && selectedFire.fireNumber) {
298-
fetchAndDisplayBurnGeometry(selectedFire.fireNumber);
299-
} else {
300-
// If no fire is selected, clear the results layer.
301-
if (resultsLayerRef.current) {
302-
mapInstance.removeLayer(resultsLayerRef.current);
303-
resultsLayerRef.current = null;
304-
}
305-
}
306-
}, [selectedFire,analysisFire, fetchAndDisplayBurnGeometry, mapInstance]);
299+
// // This effect runs when a new fire is selected, or when an analysis is triggered.
300+
// console.log('selectedFire', selectedFire)
301+
// if (selectedFire && selectedFire.fireNumber) {
302+
// fetchAndDisplayBurnGeometry(selectedFire.fireNumber);
303+
// } else {
304+
// // If no fire is selected, clear the results layer.
305+
// if (resultsLayerRef.current) {
306+
// mapInstance.removeLayer(resultsLayerRef.current);
307+
// resultsLayerRef.current = null;
308+
// }
309+
// }
310+
// }, [selectedFire,analysisFire, fetchAndDisplayBurnGeometry, mapInstance]);
307311
return (
308312
<MapContext.Provider value={{
309313
map: mapInstance,
@@ -351,6 +355,7 @@ const ConfigurationApp: React.FC = () => {
351355
onVisibleFiresChange={setVisibleFireNumbers}
352356
selectedDbFire={selectedDbFire}
353357
selectedDbYear={selectedYear}
358+
refreshTrigger={refreshTrigger}
354359
/>
355360
</div>
356361
<div className="bcgov-basemap-selector">

0 commit comments

Comments
 (0)