Toleransi argumen untuk ST_RemoveRepeatedPoints di PostGIS

Charlie Hofmann 09/15/2017. 1 answers, 47 views
postgis geojson ogr2ogr multipoint

Saya memiliki tabel PostGIS multipoint dengan 8.000 atau lebih poin yang mewakili persimpangan di grid jalanan kota. Saya ingin membersihkan meja ini untuk menghapus poin yang berada dalam jarak 100 meter dari titik lainnya.

Melihat ST_RemoveRepeatedPoints , ST_RemoveRepeatedPoints tampaknya merupakan cara terbaik untuk melakukannya. Namun ketika saya mencoba contohnya, sepertinya saya tidak bisa mendapatkan parameter toleransi untuk bekerja sesuai harapan saya.

Sebagai contoh:

SELECT ST_AsText(ST_RemoveRepeatedPoints(
            'MULTIPOINT((4 4), (1 1), (1 0), (0 3), (4 4))', 100.0)); 

Pengembalian:

MULTIPOINT((4 4), (1 1), (1 0), (0 3)) 

Itu menghapus titik duplikat (4 4), namun mengingat bahwa saya menetapkan parameter toleransi menjadi 100, saya akan mengharapkan untuk menghapus semua poin (kecuali satu) mengingat bahwa semuanya ada dalam 100 unit satu sama lain.

Apa yang saya hilang Dan apa cara terbaik untuk menjalankan operasi ini menggunakan PostGIS atau ogr2ogr?

1 Answers


dbaston 09/04/2017.

Ada masalah terbuka dengan ST_RemoveRepeatedPoints dimana parameter toleransi tidak berfungsi saat fungsi dipanggil dengan MultiPoint.

Jika Anda perlu melakukan operasi pembersihan satu kali, Anda bisa menjalankan sesuatu seperti ini:

DELETE FROM my_table a
WHERE EXISTS (SELECT 1 FROM my_table b 
              WHERE a.id < b.id 
              AND ST_DWithin(a.geom, b.geom, 100)) 
1 comments
Charlie Hofmann 09/04/2017
Mengagumkan! Saya tidak akan pernah menemukan laporan bug itu sendiri - sangat dihargai. Mencoba solusi Anda di bawah ini dan bekerja dengan sempurna. Terima kasih!

Related questions

Hot questions

Language

Popular Tags