(Quando) dovrei usare un database abilitato per GIS?


22

Sono un programmatore di lunga data, nuovo di GIS. Sto cercando di avere un'idea degli aspetti del database di GIS e capisco che ci sono alcuni database specializzati per l'uso del GIS. Fondamentalmente sto cercando di capire se usare un database di questo tipo o attenermi al MySql estremamente popolare, consolidato, ampiamente supportato (e gratuito).

Il tipo di applicazioni che sono responsabile del codice potrebbe essere:

  • gestione della flotta (veicoli terrestri o oceanici)
  • tracciamento dei dipendenti
  • controllo dell'inventario (a una granularità di una posizione fisica accurata con circa un metro)
  • errm, questo è tutto, davvero

Normalmente mi aspetterei di tracciare non più di 1 poche centinaia (massimo, forse qualche migliaio) di articoli. A volte gli oggetti saranno collocati nello stesso (grande) edificio, serie di edifici, città, paesi o in tutto il mondo, a seconda dell'applicazione.

Occasionalmente li rappresenterò visivamente su una pianta personalizzata di un edificio o, più probabilmente, su Google Earth o simili (altri dei quali in un'altra domanda).

Mi sembra che stia bene anche con MySql e aggiungendo colonne per lat / long o altri dati posizionali, ma potrebbe essere solo perché conosco MySql.

C'è qualche motivo per cui dovrei guardare un database più specializzato?

Risposte:


13

Il vero vantaggio dei database spaziali (PostGIS, estensioni spaziali di MySQL o qualsiasi altra cosa) è che è possibile eseguire operazioni spaziali su dati spaziali. Se stai solo memorizzando le coordinate dei punti, allora non guadagni molto dallo spazio (usa solo due colonne numeriche). Se si memorizzano combinazioni di coordinate punto (dove si trovano i clienti) e coordinate linea (dove vanno i camion delle consegne) e poligoni (aree di vendita), quindi si eseguono query che mettono in relazione quei vari bit di informazioni (quanti clienti all'interno di una vendita zona, quanti camion hanno viaggiato oggi a meno di 2 km da un sito del cliente ma non hanno effettuato una consegna o un ritiro), puoi guadagnare molto.

Come sottolineato da iant, PostGIS vale sicuramente la pena cercare un'applicazione server. SpatiaLite è le estensioni spaziali di SQLite, che potrebbero adattarsi meglio a un'applicazione mobile desktop / incorporata / offline, offrendo allo stesso tempo funzioni SQL abbastanza simili [ Disclosure: I work on SpatiaLite ], osservando che non c'è nulla che ti impedisca di utilizzare PostGIS in un'applicazione desktop.


+1 e grazie. Solo curiosità sul perché fosse basato su Sqlite e non su MySql ...
Mawg

1
Penso che siano solo obiettivi di progettazione diversi (integrati, nessuna configurazione, ecc.).
BradHards,

+1 era quello che pensavo (vengo anche da uno sfondo incorporato). Grazie per le informazioni. Mi aspetto che finirò con le app basate su browser (la maggior parte di noi lo farà, anche se preferiremmo non farlo), quindi la "lite" non è così necessaria. Curioso, che tipo di app ora si trova in d / b nel sistema / dispositivo incorporato? (scusate,
sto

1
incorporato è una grande area, ma i dispositivi mobili offline sembrano essere un'area emergente.
BradHards,

2
@Mawg La maggior parte dei telefoni e browser moderni utilizza sqlite come archivio dati. È davvero un singolo file c e l'API è super semplice ed esegue i processi. In contrasto con MySQL che richiede l'esecuzione di più processi e un'architettura client / server. Due casi d'uso molto diversi
Ragi Yaser Burhum,

8

Dovresti certamente considerare PostGIS estremamente popolare, ben consolidato, ampiamente supportato (e gratuito) . Farà tutto ciò che MySQL può fare e gestire le posizioni spaziali come oggetti di prima classe. In questo modo è possibile eseguire selezioni in base ai punti con in un rettangolo di selezione (o altro poligono) senza dover scrivere tutti i confronti ecc.

Una volta che hai bisogno di porre domande come quali oggetti si trovano in quale paese (o edificio), PostGIS diventa davvero suo e se dovessi decidere che devi mappare i tuoi oggetti, tutti i popolari strumenti open source parleranno a PostGIS da la scatola.


+1 e molte grazie. Ora vado a esaminarlo. Da un punto di vista dei programmatori voglio vederlo bene, parla con PHP se vado sul web, e se vado sull'app desktop Widnwos, sto usando i componenti di accesso al database AnyDac per Delphi, quindi invierò il supporto AnyDac via e-mail. Grazie ancora!
Mawg,

1
Per Mawg: Devo ancora vedere una qualsiasi delle librerie di database delphi di terze parti per supportare qualsiasi funzionalità GIS in postgis, db2, spatiallite, sql server ecc. Sembra che sia qualcosa che devi fare da solo.
Uffe Kousgaard,

+1 @UffeKousgaard L'ho trovato solo a $ 295 per il cartovcl.com
Mawg

1
Cartovcl (che utilizzo da quasi 10 anni) è un SDK GIS a file flat con funzionalità GIS integrata. Non è un'API sottile su un database remoto abilitato spazialmente.
Uffe Kousgaard il

1
Documento storico :-) Ma TatukGIS è probabilmente uno degli SDK GIS più completi e completi (ma anche un po 'costoso). Ma è nella stessa lega di cartovcl, ovvero la funzionalità gis è integrata, non è un'API in cima a un database remoto.
Uffe Kousgaard il

2

Per aggiungere alle risposte e ribadire alcuni punti, si utilizza un database abilitato spazialmente se si dispone di query relative alle relazioni spaziali dei dati, alcuni dei quali sono i seguenti:

  1. quali punti sono nel raggio di x chilometri dai miei punti di interesse
  2. quali punti sono più vicini
  3. quanto dista un altro punto
  4. quali punti sono x chilometri all'interno della strada di accesso

Se tali query relative a WHERE sono una funzionalità significativa per un'applicazione, di solito si consiglia vivamente di utilizzare un database spaziale.

Ovviamente, si può ricorrere alla logica di codifica / applicazione per alcune di queste query, come usare la formula della distanza per 1, ma non è necessario reinventare la ruota.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.