Keuntungan menggunakan spatialite daripada shapefile? [Tutup]

35

Saya menemukan spatialite lebih berguna daripada shapefile karena tidak memiliki batasan shapefile dan juga portabel. Banyak orang di sini menggunakan shapefile untuk bertukar data dan bahkan para ahli tidak tahu tentang format baru ini.

Apa keuntungan menggunakan spatialite dibandingkan shapefile?

Apakah bisa digunakan sebagai pengganti shapefile?

Harap hanya fokus pada format yang portabel, yaitu dapat ditukar menggunakan stik USB. GML, GeoJSON, KML, CSV bukan merupakan opsi dan tidak dapat diedit secara langsung di GIS.

PEMBARUAN: Sudah lebih dari 5 tahun dan pengembangan baru diarahkan ke geopackage yang terkait dengan spasial.

Jadi sekarang pertanyaannya lebih seperti Keuntungan menggunakan GEOPACKAGE daripada GEODATABASE?

neogeomat
sumber

Jawaban:

27

Shapefile adalah denominator umum yang paling rendah dari pertukaran file data vektor SIG: kirim arsip shapefile, dan Anda dapat menjamin bahwa seseorang akan dapat membangun GIS dasar darinya.

Keunggulan SpatiaLite meliputi:

  • semuanya ada dalam satu file; tidak ada shp / shx / dbf / idx / prj per lapisan kekacauan.
  • logika serta data dapat dimasukkan, dalam bentuk VIEW dan PEMICU.
  • built-in indeks spasial, yang memungkinkan pencarian cepat area yang luas.
  • mereka nyata (jika sedikit terbatas, sebagian besar dalam akses multi-pengguna) sistem database, tanpa keahlian admin database diperlukan.

Tetapi ada beberapa kelemahan:

  • tidak semua orang bisa menggunakannya.
  • sebagian besar masih terbatas pada geometri yang dibangun dari node dan garis lurus; jika Anda membutuhkan splines dan permukaan, lihat di tempat lain.
scruss
sumber
8
Pos bagus, tetapi dua poin tentang indeks spasial. Shapefile juga dapat diindeks spasial, dan kedua Anda harus secara eksplisit bergabung dengan indeks spasial Spasial yang dapat mengarah pada beberapa kueri yang sulit. Saya masih lebih suka untuk memindahkan data dalam Spatialite DB, tetapi mengimpornya ke database PostGIS untuk mengambil keuntungan dari perencana kueri yang lebih kuat.
HeyOverThere
22

Shapefile terikat pada satu jenis geometri, sehingga Anda mendapatkan banyak file untuk satu proyek. Nama bidang juga dibatasi karena menggunakan format basis data antiquarian.

Dalam spatialite, Anda dapat menyimpan seluruh data proyek dalam satu file; dan beri nama bidang yang Anda inginkan (well, hampir).

Satu-satunya kelemahan dari spatialite adalah siklus pembaruan yang cepat, membuatnya sulit untuk membaca atau menulis data yang ditulis dalam versi lain (lebih lama).

AndreJ
sumber
15

Selain jawaban scruss, shapefile memiliki beberapa batasan:

  • panjang nama bidang maks adalah 10 karakter
  • ukuran file maksimum (.dbf / .shp) adalah 2GB
  • atribut numerik disimpan sebagai karakter (bilangan bulat / mengapung), menyebabkan masalah potensial dengan pembulatan dll
  • Nilai NULL diinterpretasikan secara berbeda antara sistem
Oyvind
sumber
4

Keuntungan terbesar, bagi saya, adalah sistem database relasional dalam format file tunggal. Di antara banyak manfaatnya adalah penggunaan fungsi spasial untuk membuat tampilan. Pertimbangkan kasus di mana Anda diberi satu set poin dan metodologi Anda adalah untuk buffer poin berdasarkan atribut, dan kemudian uji kebetulan buffer tersebut dengan fitur geografis lainnya. Menggunakan alur kerja ini dengan shapefile biasanya mengharuskan setiap operasi bertahan sebagai shapefile lain. Sekarang jika ada data Anda yang diperbarui, Anda harus menjalankan seluruh rantai lagi. Belum lagi di beberapa lingkungan, data input dapat diubah tanpa sepengetahuan Anda. Ini bukan masalah ketika Anda mengandalkan tampilan SQL untuk operasi geometri. (Saya sadar ada alat yang mengatasi masalah semacam ini dengan shapefile, tetapi pertanyaannya adalah tentang database spatiaLite.)

Scro
sumber
2

Segala sesuatu yang berada dalam satu file juga merupakan kerugian: Jauh lebih sulit untuk diperbaiki, jika ada yang rusak. Ukuran file juga, tampaknya mulai dari 3,7 MB, bahkan untuk dataset yang hampir kosong. Mereka juga tampaknya hanya mendukung bidang teks, integer dan float. Tidak ada tanggal / waktu atau bidang Boolean. Setidaknya saat pengujian di QGIS 1.8

Uffe Kousgaard
sumber
1
Spasialit memang memiliki tipe tanggal / waktu, karena ia memiliki tipe untuk apa pun: Tipe Tanggal dan Waktu .
scruss
2
"SQLite tidak memiliki kelas penyimpanan yang disisihkan untuk menyimpan tanggal dan / atau waktu" dikutip dari halaman yang Anda tautkan. Ya, adalah mungkin untuk menyimpan apa pun di bidang teks, tetapi itu masih berupa teks, yang perlu diurai sebelum Anda bisa menghitungnya.
Uffe Kousgaard
Tidak, kamu tidak; Anda dapat melakukan pertanyaan seperti select * where date < '1980-01-01'dan itu menghitung untuk Anda.
scruss
yang berarti teks akan diuraikan. Alternatifnya adalah tanggal disimpan sebagai angka yang langsung dipahami oleh mesin. Tanpa risiko, Anda mengalami 31 April atau nilai ilegal lainnya. Dengan teks, kata itu harus diterjemahkan ke dalam angka, sebelum <operator dapat diterapkan.
Uffe Kousgaard
1
@UffeKousgaard: Dalam file .dbf, angka (integer / float) dan data disimpan sebagai karakter, jadi dalam kasus penguraian, shapefile tidak memiliki keuntungan di sini sama sekali.
Oyvind