Le griglie non strutturate hanno il loro posto.
Potresti voler dare un'occhiata al Earth System Modeling Framework (ESMF). Hanno un po 'di codice per ri-grigliare - appositamente per questo scopo - e hanno fatto anche cose interessanti con codice parallelo. L'intero sistema è progettato per accoppiare modelli, quindi potrebbero esserci anche altre cose utili.
Alcune altre note:
"nessun modo per farlo in modo efficiente per un numero significativo di punti"
bene, l'efficienza è una cosa relativa - una volta che hai la griglia in una struttura ad albero, puoi cercarla in O (logn), che può essere dannatamente veloce, anche se non O (1), come cercare una griglia normale è.
Inoltre, sembra che mentre l'interpolazione debba essere eseguita in ogni momento, se le griglie non si adattano, la mappatura da una griglia all'altra rimane costante. Quindi puoi calcolare quella mappatura (cioè quale elemento in ciascuna griglia corrisponde a quale elemento nell'altra) in qualunque modo sia conveniente, memorizzarlo, e quindi non dovrai mai calcolarlo (fino a quando le griglie cambiano).
Ciò ti lascia con il codice di interpolazione - dove vorrai bilanciare l'accuratezza con le prestazioni - l'interpolazione lineare semplice attraverso un triangolo è veloce e può essere abbastanza buona.
"Ho pensato di usare kd-tree per cercare il nodo più vicino di un dato punto, quindi avrei usato le funzioni di forma di quell'elemento"
ricorda che il nodo più vicino non ti fornisce l'elemento, quindi ti consigliamo di fare un po 'di più per trovare l'elemento che desideri. Un'opzione sarebbe quella di usare invece un rtree, che memorizza / ricerca per riquadro di selezione - otterrai più di un elemento con ogni ricerca, ma puoi quindi verificare quale di questi è direttamente corretto.