Saya bertanya-tanya, bagaimana mungkin untuk menyimpan set besar data cloud titik pindaian laser di PostGIS, dengan aspek waktu untuk memprosesnya dalam pikiran. Saya tahu, ada objek geometri Point
di PostGIS. Tapi sejauh yang saya tahu itu menyimpan setiap titik dalam tupel baru, yang dapat membuat mencari titik tertentu menjadi proses yang sangat lambat, jika beberapa juta atau lebih dari mereka disimpan.
Saya menemukan sebuah makalah dari HSR Universtiy of Applied Sciences Rapperswill, membahas topik ini. Ini menunjukkan tiga cara untuk menyimpan data seperti: Whole data in one tupel
, Each point in one tupel
atau Splitting Data into Blocks
yang direferensikan oleh info-meja, memegang meluas dari setiap blok. Karena cara ketiga tampaknya paling berguna untuk menemukan titik tersimpan, saya ingin tahu apakah ada yang sudah membuat beberapa pengalaman dengannya?
Makalah ini dapat ditemukan di sini: http://wiki.hsr.ch/Datenbanken/files/pgsql_point_cloud.pdf
Last but not least, saya gagah di sebuah proyek di github, yang sepertinya berhubungan dengan point cloud sopan santun di PostgeSQL. Sayangnya tidak banyak informasi tentang itu di internet. Jadi pertanyaan yang sama di sini: Apakah seseorang telah membuat beberapa pengalaman dengannya? Apakah bisa digunakan untuk tujuan seperti itu?
Proyek dapat ditemukan di sini: https://github.com/pramsey/pointcloud
Saya juga akan senang mendengar tentang saran, ide, atau pengalaman lain, jika ada. Tetapi saya harus mengakui, bahwa solusi non-komersial lebih disukai.
sumber
Jawaban:
Ada banyak pertanyaan Anda. Jawaban singkatnya adalah ya, sangat mungkin untuk menyimpan data cloud titik besar di PostGIS dan menggunakannya untuk diproses. Kami telah membangun sistem lengkap yang melakukan ini.
Video ini sedikit ketinggalan zaman dengan angka-angkanya tetapi kami memiliki TB data seluler / terestrial dan udara dalam postgis yang dapat diakses melalui python untuk diproses di ujung belakang dan dengan ujung depan web memungkinkan tampilan 3D dan pengunduhan data. https://vimeo.com/39053196
Ini benar-benar tergantung pada bagaimana Anda memilih untuk menyimpan data di PostGIS dan bagaimana Anda akan mengaksesnya. Solusi yang bagus untuk data aerial mungkin adalah dengan mem-grid data dengan cara tertentu dan menggunakan multipoint untuk efisiensi. Namun, jika Anda bekerja dengan data seluler atau terestrial di mana kepadatan titik bisa antara 500-30000 + poin per meter persegi, pendekatan ini tidak berfungsi. Kemudian turun untuk melihat perangkat keras Anda dan jumlah pengguna bersamaan yang Anda harapkan. Rincian tentang ini dapat ditemukan di beberapa makalah kami http://www.mendeley.com/profiles/conor-mc-elhinney/
sumber
(Jawabannya didasarkan pada komentar saya dan orang lain di atas; belum benar-benar mengujinya)
Simpan poin sebagai MultiPointZM. Ukuran kisi terbaik mungkin akan tergantung pada pola akses dan Anda perlu melakukan beberapa pengujian pada ini. Grid biasa dengan indeks spasial harus membuat kueri cukup cepat. Jika akses 3D penting maka MultiPointZM bisa menjadi berbasis blok 3D (1) alih-alih kisi bidang 2D, maka (jika Anda memiliki PostGIS> = 2.0) Anda akan dapat menggunakan &&& untuk kueri 3D cepat.
Anda juga bisa menyimpan pola kisi dalam tabel terpisah, yang mungkin berguna misalnya saat memperbarui data dan memvalidasi bahwa blok MultiPointZM tetap dalam batasnya setelah diedit dll.
Menyimpan cap waktu atau data lain hanya akan mungkin untuk satu blok pada satu waktu, tetapi beberapa data biner / kategori dapat disimpan dengan memisahkan setiap blok berdasarkan atribut jika tidak ada terlalu banyak kategori dan / atau atribut.
Jika Anda akhirnya harus menyimpan data sebagai PointZM yang terpisah, maka kunci asing pada tabel kisi + indeks B-Tree akan membuat memuat hanya titik-titik tertentu (mungkin) jauh lebih cepat daripada hanya queyrying tabel secara langsung, bahkan dengan spasial indeks.
(1) Jika rentang nilai-Z kecil (ini jalan, bagaimana pun juga), ini mungkin tidak masuk akal.
sumber