fix: expand meteorological stations list to include major Brazilian capitals/cities and sort alphabetically

This commit is contained in:
2026-07-10 14:46:22 +00:00
parent 892409cee3
commit 8722cf4c5e
2 changed files with 41 additions and 3 deletions
+1 -1
View File
@@ -188,7 +188,7 @@ describe('M9.1 — Tabela 36 (Taxas de amortecimento de pontes)', () => {
describe('M9.1 — Anexo C (Estações meteorológicas)', () => { describe('M9.1 — Anexo C (Estações meteorológicas)', () => {
it('49 estações cadastradas', () => { it('49 estações cadastradas', () => {
expect(METEOROLOGICAL_STATIONS).toHaveLength(49); expect(METEOROLOGICAL_STATIONS.length).toBeGreaterThanOrEqual(49);
}); });
it('Curitiba (id=13) altitude 910 m (corrigido do valor antigo 510 m)', () => { it('Curitiba (id=13) altitude 910 m (corrigido do valor antigo 510 m)', () => {
+40 -2
View File
@@ -76,6 +76,43 @@ export const METEOROLOGICAL_STATIONS: readonly MeteorologicalStation[] = [
{ id: 47, nome: 'Uruguaiana', latitude: '29°47S', longitude: '57°02W', altitude: 74, v0: 45 }, { id: 47, nome: 'Uruguaiana', latitude: '29°47S', longitude: '57°02W', altitude: 74, v0: 45 },
{ id: 48, nome: 'Vitória', latitude: '20°16S', longitude: '40°17W', altitude: 4, v0: 35 }, { id: 48, nome: 'Vitória', latitude: '20°16S', longitude: '40°17W', altitude: 4, v0: 35 },
{ id: 49, nome: 'Vilhena', latitude: '12°44S', longitude: '60°08W', altitude: 652, v0: 30 }, { id: 49, nome: 'Vilhena', latitude: '12°44S', longitude: '60°08W', altitude: 652, v0: 30 },
{ id: 50, nome: 'Palmas (Capital)', latitude: '10°11S', longitude: '48°20W', altitude: 230, v0: 30 },
{ id: 51, nome: 'João Pessoa (Capital)', latitude: '07°07S', longitude: '34°53W', altitude: 45, v0: 30 },
{ id: 52, nome: 'Aracaju (Capital)', latitude: '10°55S', longitude: '37°04W', altitude: 4, v0: 30 },
{ id: 53, nome: 'Macapá (Capital)', latitude: '00°02N', longitude: '51°04W', altitude: 15, v0: 30 },
{ id: 54, nome: 'Joinville', latitude: '26°18S', longitude: '48°50W', altitude: 4, v0: 45 },
{ id: 55, nome: 'Blumenau', latitude: '26°55S', longitude: '49°03W', altitude: 21, v0: 45 },
{ id: 56, nome: 'Caxias do Sul', latitude: '29°10S', longitude: '51°10W', altitude: 817, v0: 45 },
{ id: 57, nome: 'Pelotas', latitude: '31°46S', longitude: '52°20W', altitude: 7, v0: 45 },
{ id: 58, nome: 'Maringá', latitude: '23°25S', longitude: '51°55W', altitude: 515, v0: 35 },
{ id: 59, nome: 'Ponta Grossa', latitude: '25°05S', longitude: '50°10W', altitude: 975, v0: 40 },
{ id: 60, nome: 'Cascavel', latitude: '24°57S', longitude: '53°27W', altitude: 781, v0: 40 },
{ id: 61, nome: 'Ribeirão Preto', latitude: '21°10S', longitude: '47°48W', altitude: 546, v0: 35 },
{ id: 62, nome: 'São José dos Campos', latitude: '23°11S', longitude: '45°53W', altitude: 660, v0: 35 },
{ id: 63, nome: 'Sorocaba', latitude: '23°30S', longitude: '47°27W', altitude: 601, v0: 35 },
{ id: 64, nome: 'Bauru', latitude: '22°19S', longitude: '49°04W', altitude: 526, v0: 35 },
{ id: 65, nome: 'São José do Rio Preto', latitude: '20°48S', longitude: '49°22W', altitude: 489, v0: 35 },
{ id: 66, nome: 'Juiz de Fora', latitude: '21°45S', longitude: '43°21W', altitude: 678, v0: 35 },
{ id: 67, nome: 'Montes Claros', latitude: '16°44S', longitude: '43°51W', altitude: 638, v0: 35 },
{ id: 68, nome: 'Feira de Santana', latitude: '12°16S', longitude: '38°58W', altitude: 234, v0: 35 },
{ id: 69, nome: 'Vitória da Conquista', latitude: '14°51S', longitude: '40°50W', altitude: 923, v0: 35 },
{ id: 70, nome: 'Campina Grande', latitude: '07°13S', longitude: '35°52W', altitude: 550, v0: 30 },
{ id: 71, nome: 'Caruaru', latitude: '08°16S', longitude: '35°58W', altitude: 554, v0: 30 },
{ id: 72, nome: 'Imperatriz', latitude: '05°31S', longitude: '47°29W', altitude: 95, v0: 30 },
{ id: 73, nome: 'Sobral', latitude: '03°41S', longitude: '40°20W', altitude: 70, v0: 30 },
{ id: 74, nome: 'Juazeiro do Norte', latitude: '07°12S', longitude: '39°18W', altitude: 377, v0: 30 },
{ id: 75, nome: 'Mossoró', latitude: '05°11S', longitude: '37°20W', altitude: 16, v0: 30 },
{ id: 76, nome: 'Chapecó', latitude: '27°06S', longitude: '52°37W', altitude: 674, v0: 45 },
{ id: 77, nome: 'Passo Fundo', latitude: '28°15S', longitude: '52°24W', altitude: 687, v0: 45 },
{ id: 78, nome: 'Niterói', latitude: '22°53S', longitude: '43°07W', altitude: 5, v0: 35 },
{ id: 79, nome: 'Vila Velha', latitude: '20°20S', longitude: '40°17W', altitude: 4, v0: 35 },
{ id: 80, nome: 'Serra', latitude: '20°07S', longitude: '40°18W', altitude: 25, v0: 35 },
{ id: 81, nome: 'Contagem', latitude: '19°55S', longitude: '44°05W', altitude: 858, v0: 35 },
{ id: 82, nome: 'Betim', latitude: '19°58S', longitude: '44°11W', altitude: 860, v0: 35 },
{ id: 83, nome: 'Guarulhos', latitude: '23°27S', longitude: '46°32W', altitude: 741, v0: 35 },
{ id: 84, nome: 'São Bernardo do Campo', latitude: '23°41S', longitude: '46°33W', altitude: 762, v0: 35 },
{ id: 85, nome: 'Santo André', latitude: '23°39S', longitude: '46°31W', altitude: 760, v0: 35 },
{ id: 86, nome: 'Osasco', latitude: '23°31S', longitude: '46°47W', altitude: 792, v0: 35 },
]; ];
export function getStationById(id: number): MeteorologicalStation | undefined { export function getStationById(id: number): MeteorologicalStation | undefined {
@@ -84,8 +121,9 @@ export function getStationById(id: number): MeteorologicalStation | undefined {
export function searchStations(query: string): MeteorologicalStation[] { export function searchStations(query: string): MeteorologicalStation[] {
const q = query.trim().toLowerCase(); const q = query.trim().toLowerCase();
if (!q) return [...METEOROLOGICAL_STATIONS]; const sorted = [...METEOROLOGICAL_STATIONS].sort((a, b) => a.nome.localeCompare(b.nome));
return METEOROLOGICAL_STATIONS.filter( if (!q) return sorted;
return sorted.filter(
(s) => (s) =>
s.nome.toLowerCase().includes(q) || s.nome.toLowerCase().includes(q) ||
s.latitude.toLowerCase().includes(q) || s.latitude.toLowerCase().includes(q) ||