Saya mencoba untuk menulis banyak file titik ASPRS LAS ke dalam File ESRI Geodatabase menggunakan kompilasi GDAL 1.9.2 saya. Driver FileGDB untuk GDAL / OGR tampaknya sangat lambat saat menulis file besar, membutuhkan waktu 45 menit untuk menulis hanya 8 juta catatan titik. Kecepatan tulis FileGDB menggunakan GDAL pada drive SATA3 berada pada urutan 200 kilobyte per detik, yang sangat lambat ketika saya mencoba mengonversi data terrabyte.
Saya perhatikan dalam dokumentasi FileGDB bahwa mendefinisikan makro FGDB_BULK_LOAD akan meningkatkan kinerja untuk dataset besar, tapi saya tidak melihat perubahan kinerja ketika saya menulis baris ke file "nmake.opt" dengan teks "FGDB_BULK_LOAD = YA" segera setelah FGDB_LIB baris.
Memang, FileGDB bukan cara yang ideal untuk menyimpan miliaran catatan data titik, tapi itu keluhan untuk waktu lain. Sudahkah saya menggunakan fitur FGDB_BULK_LOAD dengan benar? Apakah itu seharusnya dalam kode sumber saya , bukan build GDAL?
Terima kasih.
UPDATE: Penggunaan Yang Tepat: (Dijawab dalam obrolan)
The FGDB_BULK_LOAD
Pengaturan benar disimpan sebagai variabel lingkungan untuk proses GDAL / OGR. Ini diatur pada baris perintah selama panggilan ogr exe seperti yang ditunjukkan oleh Ragi. Menggunakan fungsi GDAL, dapat diatur pemrograman untuk seluruh proses dengan
CPLSetConfigOption("FGDB_BULK_LOAD", "YES");
atau hanya untuk utas saat ini menggunakan
CPLSetThreadLocalConfigOption("FGDB_BULK_LOAD", "YES");
FGDB_BULK_LOAD
harus diatur sebelum panggilan FGdbDataSource::CreateLayer()
. Tidak jelas apakah OGRCleanupAll()
tidak disetel variabel ini, tetapi aman untuk memanggil beberapa kali untuk memastikan.
Menggunakan opsi itu meningkatkan kinerja sekitar 5,5x lebih cepat untuk menulis jutaan hingga puluhan juta poin.