(Quand) dois-je utiliser une base de données compatible SIG?


22

Je suis un programmeur de longue date, nouveau dans le SIG. J'essaie de me faire une idée des aspects de base de données du SIG et je comprends qu'il existe des bases de données spécialisées pour l'utilisation du SIG. Fondamentalement, j'essaie de comprendre s'il faut utiliser une telle base de données ou s'en tenir à MySql, très populaire, bien établi, largement pris en charge (et gratuit).

Le type d'applications que je suis susceptible de coder serait par exemple:

  • gestion de flotte (véhicules terrestres ou océaniques)
  • suivi des employés
  • contrôle des stocks (à une granularité d'une position physique précise avec un mètre environ)
  • euh, c'est tout, vraiment

Je m'attendrais normalement à ne pas suivre plus de 1 centaines d'articles (maximum, peut-être quelques milliers). Parfois, les articles seront situés dans le même (grand) bâtiment, série de bâtiments, ville, pays ou dans le monde, selon l'application.

Je vais parfois les représenter visuellement sur un plan d'étage personnalisé d'un bâtiment ou, plus probablement, dans Google Earth ou similaire (plus dans une autre question).

Il me semble que je suis aussi bien avec MySql et l'ajout de colonnes pour lat / long ou d'autres données de position, mais c'est peut-être parce que je connais MySql.

Y a-t-il une raison pour laquelle je devrais consulter une base de données plus spécialisée?

Réponses:


13

Le véritable avantage des bases de données spatiales (PostGIS, extensions spatiales de MySQL ou autre) est que vous pouvez effectuer des opérations spatiales sur des données spatiales. Si vous ne stockez que des coordonnées de points, vous ne gagnez pas vraiment beaucoup d'espace (utilisez simplement deux colonnes numériques). Si vous stockez des combinaisons de coordonnées de point (où se trouvent les clients) et de coordonnées de ligne (où vont les camions de livraison) et de polygones (régions de vente), puis effectuez des requêtes qui relient ces différents éléments d'information (combien de clients dans une vente zone, combien de camions ont parcouru moins de 2 km d'un site client aujourd'hui mais n'ont pas effectué de livraison ou de ramassage), vous pouvez gagner beaucoup.

Comme l'a souligné iant, PostGIS vaut certainement le coup d'œil pour une application serveur. SpatiaLite est les extensions spatiales de SQLite, qui peuvent être mieux adaptées à une application mobile de bureau / intégrée / hors ligne, tout en offrant des fonctions SQL assez similaires [ Divulgation: je travaille sur SpatiaLite ], notant que rien ne vous empêche d'utiliser PostGIS dans une application de bureau.


+1 et merci. Juste pour savoir pourquoi il était basé sur Sqlite et non sur MySql ...
Mawg

1
Je pense que ses objectifs de conception sont juste différents (intégrés, pas de configuration, etc.).
BradHards

+1 c'est ce que je pensais (je viens aussi d'un arrière-plan intégré). Merci pour l'info. Je m'attends à ce que je me retrouve avec des applications basées sur un navigateur (la plupart d'entre nous le feront, même si nous préférons ne pas le faire), donc le "Lite" n'est pas si nécessaire. Juste curieux, quel genre d'applications maintenant où le d / b est dans le système / appareil intégré? (désolé, j'apprends encore)
Mawg

1
intégré est un grand domaine, mais le mobile hors ligne semble être un domaine émergent.
BradHards

2
@Mawg La plupart des téléphones et navigateurs modernes utilisent sqlite comme magasin de données. Il s'agit vraiment d'un seul fichier c, et l'API est super simple et s'exécute inprocess. Comparez cela avec MySQL qui nécessite plusieurs processus en cours d'exécution et une architecture client / serveur. Deux cas d'utilisation très différents
Ragi Yaser Burhum

8

Vous devriez certainement considérer le PostGIS extrêmement populaire, bien établi, largement pris en charge (et gratuit) . Il fera tout ce que MySQL peut faire et gérera les emplacements spatiaux comme des objets de première classe. Ainsi, vous pouvez effectuer des sélections basées sur des points avec dans une boîte englobante (ou un autre polygone) sans avoir à écrire toutes les comparaisons, etc.

Une fois que vous commencez à avoir besoin de poser des questions comme quels objets se trouvent dans quel pays (ou bâtiment), PostGIS prend vraiment sa place et si vous décidez de mapper vos objets, tous les outils open source populaires parleront à PostGIS hors de la boîte.


+1 et merci beaucoup. Je m'en vais maintenant. Formons un point de vue de codeurs Je veux bien voir qu'il parle à PHP si je vais sur le Web, et si je vais à l'application de bureau Widnwos, j'utilise les composants d'accès à la base de données AnyDac pour Delphi, je vais donc envoyer un e-mail au support AnyDac. Merci encore!
Mawg

1
Pour Mawg: Je dois encore voir l'une des bibliothèques de bases de données delphi tierces pour prendre en charge l'une des fonctionnalités SIG dans postgis, db2, spatiallite, sql server, etc. Il semble que c'est quelque chose que vous devez faire vous-même.
Uffe Kousgaard

+1 @UffeKousgaard Je n'ai trouvé cela qu'à 295 $ pour le moins cher cartovcl.com
Mawg

1
Cartovcl (que j'utilise depuis près de 10 ans) est un SDK GIS à fichier plat qui intègre la fonctionnalité SIG. Ce n'est pas une API fine au-dessus d'une base de données distante spatialement activée.
Uffe Kousgaard

1
Document historique :-) Mais TatukGIS est probablement l'un des SDK SIG complets les plus complets (mais aussi un peu cher). Mais c'est dans la même ligue que cartovcl, c'est-à-dire que la fonctionnalité gis est intégrée, ce n'est pas une API au-dessus d'une base de données distante.
Uffe Kousgaard

2

Pour compléter les réponses et réitérer certains points, on utilise une base de données spatialisée si vous avez des requêtes qui se rapportent aux relations spatiales des données, dont quelques-unes sont les suivantes:

  1. quels points sont à moins de x kilomètres de mes points d'intérêt
  2. quels points sont plus proches
  3. à quelle distance un point est-il d'un autre point
  4. quels points sont à x kilomètres dans la route d'accès

Si de telles requêtes concernant WHERE sont une caractéristique importante pour une application, il est généralement recommandé d'utiliser une base de données spatiale.

Bien sûr, on peut recourir à la logique de codage / application pour certaines de ces requêtes, comme l'utilisation de la formule de distance pour 1, mais il n'est pas nécessaire de réinventer la roue.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.