Pytanie: Jaki jest najlepszy sposób na obliczenie interpolacji z odwrotną ważoną odległością (IDW) w Pythonie dla lokalizacji punktowych?Interpolacja odwrotna ważona (IDW) z pythonem
Niektóre tła: Obecnie używam RPy2 do interfejsu z R i jego modułem Gstat. Niestety, moduł gstat jest w konflikcie z arcgiscriptingiem, który dostałem, uruchamiając analizę opartą na RPy2 w oddzielnym procesie. Nawet jeśli problem został rozwiązany w najnowszej/przyszłej wersji, a wydajność może zostać poprawiona, nadal chciałbym usunąć moją zależność od zainstalowania R.
Strona internetowa gstat zapewnia samodzielny plik wykonywalny, który jest łatwiejszy do pakiet z moim skryptem python, ale nadal mam nadzieję na rozwiązanie Python, które nie wymaga wielu zapisów na dysku i uruchamiania procesów zewnętrznych. Liczba wywołań funkcji interpolacji, oddzielnych zestawów punktów i wartości, może zbliżyć się do 20 000 w przetwarzaniu, które wykonuję.
Potrzebuję interpolacji dla punktów, więc użycie funkcji IDW w ArcGIS do generowania rastrów brzmi jeszcze gorzej niż przy użyciu R, pod względem wydajności ..... chyba że istnieje sposób na skuteczne maskowanie tylko punktów Potrzebuję. Nawet przy tej modyfikacji nie spodziewałbym się, że wydajność będzie tak wspaniała. Przyjrzę się tej opcji jako innej alternatywie. AKTUALIZACJA: Problem polega na tym, że jesteś powiązany z rozmiarem komórki, z której korzystasz. Jeśli zmniejszysz rozmiar komórki, aby uzyskać lepszą dokładność, przetwarzanie zajmuje dużo czasu. Trzeba również postępować, wyodrębniając punkty ..... po całej brzydkiej metodzie, jeśli chcesz wartości dla określonych punktów.
Spojrzałem na scipy documentation, ale nie wygląda na to, że istnieje prosty sposób obliczenia IDW.
Zastanawiam się nad uruchomieniem własnej implementacji, prawdopodobnie przy użyciu niektórych funkcji scipy, aby zlokalizować najbliższe punkty i obliczyć odległości.
Czy brakuje mi czegoś oczywistego? Czy istnieje moduł Pythona Nie widziałem, że robi dokładnie to, co chcę? Czy tworzenie własnych implementacji za pomocą scipy jest mądrym wyborem?
Denis, Wcześniej zapytałeś, ile punktów miałem ... najwyżej mam kilka tysięcy punktów źródłowych, więc nie muszę się martwić. Jest to bardzo pomocne, dziękuję! –
@majgis, nie ma za co. N = 100000 Nask = 100000 na ~ 24 s 2d, 27 s 3d, na moim starym mac g4 ppc. (W celu interpolacji danych 2D do jednolitej siatki, matplotlib.delaunay jest ~ 10 razy szybszy - patrz http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data) – denis
Zobacz ostrzeżenie [tutaj] (http: // stackoverflow.com/questions/6238250/multivariate-spline-interpolation-in-python-scipy) : "IDW to wybór * straszny * w prawie każdym przypadku ...". Niemniej jednak IDW może mieć rozsądną kombinację prostoty, szybkości i płynności dla * Twoich * danych. – denis