God’s Eye View: globo, interacción IA y límites honestos de datos
Normalizador sísmico de God’s Eye View: vacío, inválido y filtrado no son lo mismo
Inspecciona validación y selección de etiquetas con dieciocho pruebas aisladas de números estrictos, IDs y filtro M2,5.
Qué aprenderás
- Valida el snapshot completo antes de sustituir
- Filtrar no equivale a validar
- Registros y etiquetas siguen contratos distintos
Antes de empezar
- JavaScript y JSON básicos
- Coordenadas y tiempos de fuente
Explicar registros, validación, presentación e IA opcional mediante casos sintéticos.
Conclusiones clave
- Un snapshot vacío aceptado difiere de entrada malformada.
- El filtro de magnitud forma parte de un contrato mayor.
- Límites de etiquetas no son conteos de la fuente.
Valida el snapshot completo antes de sustituir
normalizeEarthquakeSnapshot devuelve null si features no es array o falla una comprobación estructural. Un array vacío válido devuelve un resultado vacío. El adaptador lanza error por datos malformados, permitiendo distinguir fallo de una observación vacía aceptada.
Las coordenadas son longitud, latitud y profundidad opcional en kilómetros. Longitud y latitud deben ser números finitos dentro de rango; las cadenas numéricas no se convierten. Profundidad también debe ser finita si está presente. Un registro malformado rechaza todo el snapshot, no genera silenciosamente una sustitución parcial.
Filtrar no equivale a validar
Magnitudes ausentes o inferiores a 2,5 se omiten porque no acreditan pertenencia al subconjunto mostrado. Magnitud superior a diez o no finita invalida el snapshot. Si se declara tipo geométrico debe ser Point, pero omitirlo se acepta aquí; no lo llames validador completo del esquema GeoJSON.
Los registros incluidos necesitan IDs estables únicos. Un ID ausente recibe un identificador por índice que puede colisionar con uno explícito y causar rechazo. Lugar y tiempo pueden quedar desconocidos. mapAnalystRecord también conserva números desconocidos como null sin convertir cadenas en mediciones.
Registros y etiquetas siguen contratos distintos
La cohorte copia y ordena por prioridad e identidad, y limita su tamaño a un máximo de 96. Es presupuesto visual, no límite de terremotos existentes. Una etiqueta ambiental no es interactiva; otras interacciones tienen sus propios responsables dentro de la capa.
Dieciocho casos ejecutan normalizador, mapper y selector exactos extraídos por AST con entradas sintéticas. Cubren vacío e inválido, rangos, umbral, ausencias, duplicados, colisiones de fallback y selección estable sin modificar entrada. No ejecutan Cesium, feed real, navegador ni ciclo de aplicación.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Prueba vacío válido e inválido por separado.
- 2
Comprueba orden de coordenadas y tipos estrictos.
- 3
Incluye duplicados y colisiones de IDs alternativos.
- 4
Verifica límites sin mutar la entrada.
Ejemplo para copiar
{
"features": [
{
"id": "synthetic-event",
"geometry": {
"type": "Point",
"coordinates": [
10,
20,
5
]
},
"properties": {
"mag": 3,
"place": "Evento didáctico sintético",
"time": 100
}
}
]
}Preguntas frecuentes
¿Se aceptan coordenadas como cadenas numéricas?
No. Se comprueba finitud numérica sin conversión.
¿El límite 96 significa que solo se descargaron 96 eventos?
No. Limita la cohorte de etiquetas, no la población del feed.
Fuentes
- God’s Eye View / src/layers/earthquakes/model.jsFuente verificada 2026-09-14
- God’s Eye View / src/layers/earthquakes/source.jsFuente verificada 2026-09-14
- God’s Eye View / docs/CURRENT-STATE.mdFuente verificada 2026-09-14