Las redes no estructuradas tienen su lugar.
Es posible que desee ver el Marco de modelado del sistema terrestre (ESMF). Tienen un código para volver a cuadricular, específicamente para este propósito, y también han hecho algunas cosas ingeniosas con código paralelo. Todo el sistema está diseñado para acoplar modelos, por lo que también puede haber otras cosas útiles allí.
Algunas otras notas:
"No hay forma de hacer esto de manera eficiente para un número significativo de puntos"
bueno, eficiente es algo relativo: una vez que tienes la cuadrícula en una estructura de árbol, puedes buscarla en O (logn), que puede ser bastante rápido, aunque no O (1), como buscar en una cuadrícula regular es.
Además, parece que si bien la interpolación debe realizarse en cada paso, si las cuadrículas no se adaptan, la asignación de una cuadrícula a otra permanece constante. Por lo tanto, puede calcular ese mapeo (es decir, qué elemento en cada cuadrícula corresponde a qué elemento en el otro) de la manera que sea conveniente, almacenarlo y luego nunca necesita calcularlo nuevamente (hasta que las cuadrículas cambien).
Eso lo deja con el código de interpolación, donde querrá equilibrar la precisión con el rendimiento, la interpolación lineal simple a través de un triángulo es rápida y puede ser lo suficientemente buena.
"Pensé en usar kd-tree para buscar el nodo más cercano de un punto dado, luego usaría las funciones de forma de ese elemento"
recuerde que el nodo más cercano no le proporciona el elemento, por lo que querrá hacer un poco más para encontrar el elemento que desea. Una opción sería usar un rtree en su lugar, que almacena / busca por cuadro delimitador: obtendrá más de un elemento con cada búsqueda, pero luego puede verificar cuál de ellos es correcto directamente.