(Kapan) haruskah saya menggunakan database yang mendukung GIS?

22

Saya seorang programmer lama, baru mengenal SIG. Saya mencoba merasakan aspek-aspek basis data SIG dan saya mengerti bahwa ada beberapa basis data yang dikhususkan untuk penggunaan SIG. Pada dasarnya saya mencoba memahami apakah akan menggunakan database seperti itu atau tetap menggunakan MySql yang sangat populer, mapan, didukung secara luas (dan gratis).

Jenis aplikasi yang dapat saya kode akan hal-hal seperti:

  • manajemen armada (kendaraan darat atau laut)
  • pelacakan karyawan
  • kontrol inventaris (pada perincian posisi fisik yang akurat dengan satu meter atau lebih)
  • errm, itu saja, sungguh

Saya biasanya berharap untuk melacak tidak lebih dari 1 beberapa ratus (maksimum, mungkin beberapa ribu) item. Kadang-kadang item akan berlokasi di gedung (besar) yang sama, seri bangunan, kota, negara atau di seluruh dunia, tergantung pada aplikasi.

Saya kadang-kadang akan secara visual mewakili mereka baik pada denah lantai bangunan atau, lebih mungkin, di Google Earth atau sejenisnya (lebih dari itu dalam pertanyaan lain).

Bagi saya sepertinya saya cukup beruntung dengan MySql dan menambahkan kolom untuk lat / long atau data posisi lainnya, tetapi itu mungkin saja karena saya tahu MySql.

Apakah ada alasan mengapa saya harus mencari basis data yang lebih khusus?

Mawg
sumber

Jawaban:

13

Keuntungan nyata dari basis data spasial (PostGIS, ekstensi spasial ke MySQL atau yang lainnya) adalah Anda dapat melakukan operasi spasial pada data spasial. Jika Anda hanya menyimpan koordinat titik, maka Anda tidak benar-benar mendapatkan banyak dari spasial (cukup gunakan dua kolom numerik). Jika Anda menyimpan kombinasi titik koordinat (di mana pelanggan berada), dan garis koordinat (di mana truk pengiriman), dan poligon (wilayah penjualan), dan kemudian melakukan kueri yang mengaitkan berbagai bit informasi (berapa banyak pelanggan dalam penjualan zona, berapa banyak truk yang bepergian kurang dari 2 km dari situs pelanggan hari ini tetapi tidak melakukan pengiriman atau penjemputan), Anda bisa mendapatkan banyak.

Seperti yang ditunjukkan oleh iant, PostGIS tentu layak untuk dilihat untuk aplikasi server. SpatiaLite adalah ekstensi spasial ke SQLite, yang mungkin lebih cocok untuk aplikasi mobile desktop / embedded / offline, sambil menawarkan fungsi SQL yang cukup mirip [ Pengungkapan: Saya bekerja di SpatiaLite ], mencatat bahwa tidak ada yang menghentikan Anda menggunakan PostGIS di aplikasi desktop.

BradHards
sumber
+1 dan terima kasih. Hanya rasa ingin tahu mengapa ini didasarkan pada Sqlite dan bukan MySql ...
Mawg
1
Saya pikir itu hanya tujuan desain yang berbeda (tertanam, tidak ada konfigurasi, dll).
BradHards
+1 itulah yang saya pikirkan (saya berasal dari latar belakang yang tertanam juga). Terimakasih atas infonya. Saya berharap bahwa saya akan berakhir dengan aplikasi berbasis browser (kebanyakan dari kita akan, bahkan jika kita lebih suka tidak), sehingga "lite" tidak begitu diperlukan. Hanya omong kosong, apa jenis aplikasi sekarang di mana d / b berada di sistem / perangkat yang tertanam? (maaf, masih belajar)
Mawg
1
tertanam adalah area yang besar, tetapi mobile offline tampaknya menjadi area yang muncul.
BradHards
2
@Mawg Sebagian besar ponsel dan browser modern menggunakan sqlite sebagai datastore. Ini benar-benar satu file c tunggal, dan API sangat sederhana dan berjalan dalam proses. Bandingkan dengan MySQL yang membutuhkan banyak proses berjalan dan arsitektur klien / server. Dua kasus penggunaan yang sangat berbeda
Ragi Yaser Burhum
8

Anda tentu harus mempertimbangkan PostGIS yang sangat populer, mapan, didukung luas (dan gratis) . Ini akan melakukan segala hal yang dapat dilakukan MySQL dan menangani lokasi spasial sebagai objek kelas satu. Dengan demikian Anda dapat melakukan pemilihan berdasarkan poin dengan dalam kotak pembatas (atau poligon lain) tanpa harus menuliskan semua perbandingan dll.

Setelah Anda mulai perlu mengajukan pertanyaan seperti objek mana di negara mana (atau bangunan) maka PostGIS benar-benar masuk ke dalamnya sendiri dan jika Anda memutuskan bahwa Anda perlu memetakan objek Anda maka semua alat open source populer akan berbicara dengan PostGIS dari kotak.

Ian Turton
sumber
+1 dan terima kasih banyak. Saya pergi untuk melihatnya sekarang. Dari sudut pandang pembuat kode, saya ingin melihat ia berbicara dengan PHP jika saya menggunakan web, dan jika saya menggunakan aplikasi desktop Widnwos maka saya menggunakan komponen akses database AnyDac untuk Delphi, jadi saya akan mengirimkan email dukungan AnyDac. Terima kasih lagi!
Mawg
1
Untuk Mawg: Saya masih harus melihat libs database delphi pihak ke-3 untuk mendukung fungsi GIS di postgis, db2, spatiallite, sql server dll. Sepertinya itu adalah sesuatu yang harus Anda lakukan sendiri.
Uffe Kousgaard
+1 @UffeKousgaard Saya hanya menemukan ini pada $ 295 untuk cartovcl.com
Mawg
1
Cartovcl (yang telah saya gunakan selama hampir 10 tahun) adalah file datar GIS SDK yang memiliki fungsi GIS bawaan. Ini bukan API tipis di atas basis data jarak jauh yang diaktifkan secara spasial.
Uffe Kousgaard
1
Dokumen sejarah :-) Tapi TatukGIS mungkin adalah salah satu SDK GIS serba yang paling komprehensif di luar sana (tapi juga agak mahal). Tetapi ia berada di liga yang sama dengan cartovcl, yaitu fungsionalitas gis adalah built-in, ini bukan API di atas basis data jauh.
Uffe Kousgaard
2

Untuk menambah jawaban dan mengulangi beberapa poin, seseorang menggunakan database yang diaktifkan secara spasial jika Anda memiliki pertanyaan yang berhubungan dengan hubungan spasial data, beberapa di antaranya adalah sebagai berikut:

  1. titik mana dalam jarak x kilometer dari tempat tujuan saya
  2. titik mana yang lebih dekat
  3. seberapa jauh suatu titik dari titik lainnya
  4. titik mana x kilometer dalam jalan akses

Jika pertanyaan yang berkaitan dengan WHERE adalah fitur penting untuk aplikasi, maka biasanya sangat disarankan untuk menggunakan basis data spasial.

Tentu saja, seseorang dapat menggunakan kode / logika aplikasi untuk beberapa pertanyaan ini, seperti menggunakan rumus jarak untuk 1, tetapi kita tidak perlu menemukan kembali roda.

arcsum
sumber