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