la domanda: Qual è il modo migliore per calcolare la distanza inversa ponderate (IDW) interpolazione in Python, per le posizioni dei punti?Inverse Distance Weighted (IDW) interpolazione con Python
Alcuni background: Attualmente sto usando RPy2 per interfacciarlo con R e il suo modulo gstat. Sfortunatamente, il modulo gstat è in conflitto con arcgisscripting che ho ottenuto eseguendo l'analisi basata su RPy2 in un processo separato. Anche se questo problema è stato risolto in una versione recente/futura, e l'efficienza può essere migliorata, vorrei comunque rimuovere la mia dipendenza dall'installazione di R.
Il sito Web gstat fornisce un eseguibile autonomo, che è più facile da pacchetto con il mio script python, ma mi auguro ancora una soluzione Python che non richieda più scritture su disco e lanci processi esterni. Il numero di chiamate alla funzione di interpolazione, di insiemi separati di punti e valori, può avvicinarsi a 20.000 nell'elaborazione che sto eseguendo.
Ho specificamente bisogno di interpolare per punti, quindi usare la funzione IDW in ArcGIS per generare suoni di raster è ancora peggio che usare R, in termini di prestazioni ..... a meno che non ci sia un modo per mascherare in modo efficiente solo i punti Ho bisogno. Anche con questa modifica, non mi aspetterei che le prestazioni siano così eccezionali. Vedrò questa opzione come un'altra alternativa. AGGIORNARE: Il problema qui è che sei legato alla dimensione della cella che stai utilizzando. Se riduci la dimensione della cella per ottenere una maggiore precisione, l'elaborazione richiede molto tempo. È inoltre necessario eseguire il follow-up estraendo per punti ..... un metodo troppo brutto se si desidera valori per punti specifici.
Ho visto lo scipy documentation, ma non sembra che ci sia un modo semplice per calcolare IDW.
Sto pensando di implementare la mia implementazione, possibilmente utilizzando alcune delle funzionalità di scipy per individuare i punti più vicini e calcolare le distanze.
Mi manca qualcosa di ovvio? C'è un modulo Python che non ho visto che fa esattamente quello che voglio? Creare la mia implementazione con l'aiuto di scipy è una scelta saggia?
Denis, prima hai chiesto quanti punti avessi ... al massimo avrò un paio di migliaia di punti sorgente, quindi non abbastanza da preoccuparmi. Questo è molto utile, grazie! –
@majgis, prego. N = 100000 Nask = 100000 take ~ 24 sec 2d, 27 sec 3d, sul mio vecchio mac g4 ppc. (Per l'interpolazione dei dati 2d su una griglia uniforme, matplotlib.delaunay è ~ 10 volte più veloce - consultare http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data) – denis
Vedere l'avviso [qui] (http: // stackoverflow.com/questions/6238250/multivariate-spline-interpolation-in-python-scipy) : "IDW è una scelta * terribile * in quasi tutti i casi ...". Tuttavia IDW può avere una ragionevole combinazione di semplicità, velocità e fluidità per * i * dati *. – denis