Lagi

Bagaimana cara menginterpolasi data yang hilang dari tetangga di PostGIS?


Saya memiliki kumpulan data dengan data titik di negara tertentu. Katakanlah dataset saya terlihat seperti ini:

pohon_id | spesies | usia | geom ------------------------------ 0 | Abu | nol|… 1 | Beech | 70 | … 2 | Abu | 10 |… 3 | Beech | 70 | … 4 | Beech | nol| … 5 | Beech | 60 | … |… |… | …

Seperti yang Anda lihat, dataset memiliki beberapa data yang hilang. Contohnya,pohon_id 0tidak memiliki usia. Oleh karena itu saya ingin menginterpolasi nilai-nilai yang hilang itu dari radius 100 meter.

Saya mencari rata-rata spesies. Hasilnya juga harus mencakup jumlah pohon contoh yang digunakan. Tabel hasil kemudian dapat terlihat seperti ini:

pohon_id | usia_rata-rata | sampel ---------------------------- 0 | 11,8 | 113 3 | 12.2 | 97 5 | 50.7 | 272… |… |…

Bisakah Anda membantu saya memulai dengan beberapa kode kueri PostgreSQL?


Ok jadi mari kita mulai lagi ini adalah jawaban untuk melakukan apa yang Anda inginkan, tetapi ini hanya akan berguna dalam konteks yang tidak berarti. Misalnya untuk membuat adegan 3D di mana beberapa data hilang dan Anda ingin menggambar "pohon medium lokal" untuk setiap spesies.

Saya berasumsi tabel asli Anda disebut "mytrees".

Buat dua alias a & b dari tabel mytrees , gabungkan b ke tabel jika dalam radius pencarian Anda, lalu rangkum data untuk setiap titik menggunakan agregat.

SELECT a.tree_id, a.species, avg(b.age) as age_avg, count(*) as sample, a.geom FROM mytrees a LEFT JOIN mytrees b ON ST_DWithin(a.geom,b.geom,100) AND a .species = b.species KELOMPOK MENURUT a.tree_id, a.species, a.geom ORDER BY a.tree_id

Sekali lagi peringatan terakhir, itu akan berhasil tetapi JANGAN GUNAKAN ITU untuk analisis data yang berarti. Hanya untuk rendering atau sebagai bukti konsep.

Diedit: menggunakan ST_DDalam seperti yang disarankan oleh John Barça, jauh lebih mudah


Tonton videonya: Cara Interpolasi Tabel-T (Oktober 2021).