Saya bertanya-tanya metode penyimpanan apa yang akan menghasilkan pembacaan tercepat dari vektor peta untuk rendering. SHP? PostGres? SQLite? (Mereka tidak sering berubah dan saya tidak perlu fungsi spasial untuk vektor-vektor ini).
Saya bertanya-tanya metode penyimpanan apa yang akan menghasilkan pembacaan tercepat dari vektor peta untuk rendering. SHP? PostGres? SQLite? (Mereka tidak sering berubah dan saya tidak perlu fungsi spasial untuk vektor-vektor ini).
Jawaban:
Ada beberapa tes yang sangat cepat dari shapefile versus database (PostGIS) untuk MapServer dalam presentasi ini (dari 2007).
Singkatnya:
Dan waktu secara rinci, yang juga dapat membantu untuk memutuskan apakah format penyimpanan merupakan faktor penting.
PostGIS Shapefile
Start mapserv process 15ms 15ms
Load mapfile 3ms 3ms
Connect to DB 14ms n/a
Query 20ms n/a
Fetch 7ms n/a
Draw 11ms 28ms
Write Image 8ms 8ms
Network Delay 3ms 3ms
Selalu gunakan FastCGI di MapServer jika menggunakan database, karena koneksi database dapat digunakan kembali, jika tidak, koneksi baru harus dibuat pada setiap permintaan.
Kecepatan membaca shapefile (dan data dari database) tergantung pada implementasi pengkodean spesifik.
Kode sumber untuk MapServer membuka shapefile dapat dilihat di sini . Mengikuti komentar Anda dapat melihat betapa pentingnya memiliki indeks. Biasanya Anda hanya bisa membaca file dalam satu arah untuk mendapatkan catatan, tetapi dengan indeks Anda bisa membaca dalam dua arah.
345 /* Read the .shx file to get the offsets to each record in */
346 /* the .shp file.
Lain adalah contoh membuka shapefile dapat dilihat pada sumber Python untuk PyShp . Sekali lagi Anda dapat melihat bagaimana indeks digunakan untuk menemukan bentuk tertentu secara langsung.
Keterbatasan format DBF (batas ukuran bidang, tidak ada dukungan nol, batas penyimpanan teks), juga harus dipertimbangkan ketika memutuskan apakah akan menggunakan database atau tidak.
Basis data juga menawarkan cara untuk mengamankan data, lebih mudah bergabung dan membuat tampilan, mencatat dan banyak fitur lain yang tidak akan Anda dapatkan dengan file mandiri.
Berlawanan dengan apa yang dikatakan dariapra, pengalaman saya dalam mengembangkan Maperitive memberi tahu saya bahwa hambatan terbesar adalah pemuatan data yang sebenarnya sebelum rendering. Itu semua sangat tergantung pada seberapa besar keseluruhan dataset tersimpan dan seberapa besar dataset yang Anda coba render dalam sekali jalan. Jika Anda dapat memuat semuanya ke dalam memori, maka shapefile mungkin lebih baik daripada menggunakan mesin basis data.
Program mana yang akan Anda gunakan untuk rendering? Ini dapat mempengaruhi hasil. Bagaimanapun, memiliki shapefile dengan indeks spasial (mis. Http://mapserver.org/utilities/shptree.html ) yang digunakan seringkali merupakan teknik tercepat. Terlepas dari itu: itu tergantung pada aplikasi Anda, tetapi caching hasil yang Anda rujuk sering jauh lebih berguna untuk meningkatkan kinerja.
Shapefile akan menjadi yang tercepat dan mungkin taruhan terbaik Anda. Ada overhead untuk setiap database SQL, lalu ada pengelolaan pengembalian set hasil besar (konversi dari tipe data database ke tipe data asli juga akan memperlambat hal-hal).
Coba gunakan paket open source dari maptools.org untuk membaca Anda. Alat-alat ArcGIS, meskipun dibuat khusus, memiliki sedikit overhead untuk memulai dan mahal.
Semoga ini membantu