Suite

Mélanger les types de géométrie dans une table PostGIS


Je suis confronté au problème suivant. Je dois migrer de la base de données Oracle vers PostgreSQL+PostGIS. Actuellement, toutes les géométries de tous types sont stockées dans une table et chaque enregistrement contient un champ "couvercle" qui indique les caractéristiques de la même couche.

Quels sont les avantages et les inconvénients d'utiliser une telle méthode ? Dois-je diviser les données en plusieurs tables si je n'ai pas besoin d'utiliser la base de données avec un logiciel tiers ? Qu'en est-il des performances des requêtes spatiales, les index m'aideront-ils ?


Si vous n'avez pas besoin de support tiers et que vous ne prévoyez pas la nécessité d'interroger par type, les garder dans la même table fonctionne très bien. Alternativement, vous pouvez utiliser un modèle d'héritage comme discuté dans le chapitre 3 de PostGIS en action.

http://www.postgis.us/chapter_03_edition_1

Du point de vue de l'architecture, PostGIS ne se soucie pas vraiment de l'utilisation de plusieurs types différents dans une requête. Si cela fonctionne bien pour vous dans Oracle, ce sera comme si ce n'était pas mieux dans PostGIS.

Il y a 2 raisons de le diviser (et l'un ou l'autre peut être fait plus tard si nécessaire): 1) Empêcher les gens d'insérer différents types que vous ne voulez pas comme des collections de géométrie, des chaînes circulaires et autres (que vous pourriez simplement définir manuellement une contrainte )

2) Si vous avez un milliard de points et 1000 polygones, et faites beaucoup de points dans les tests de polygones, la vitesse est bien meilleure si lorsque vous interrogez et faites votre jointure - c'est contre un milliard - à 1000 table d'enregistrement par opposition à table d'enregistrement d'un milliard à un milliard. Ce serait le cas pour n'importe quelle base de données spatiale je pense (non spécifique à PostGIS). C'est vrai pour toutes les requêtes relationnelles, je suppose aussi (pas spécifique aux requêtes spatiales).


Celui-ci me dérange vraiment. Je suppose que c'est parce que j'ai vu trop de fichiers CAO avec des données sur un seul calque, différenciées uniquement par la couleur.

Il s'agit en réalité d'un choix entre organiser les données par structure, ou alors par attribut.

Compte tenu de ce choix, j'opterais toujours pour l'organisation de mes données via une structure de données.

Pour commencer, lors du traitement des données, vous avez un cerceau de moins à franchir (par exemple sélectionnez a,b,c dans le tableau où id=X par opposition à sélectionnez a,b,c dans le tableau où id=X ET couvercle = Y)

Ensuite, réfléchissez aux raisons pour lesquelles les bases de données autorisent plusieurs tables - si un format de données offre des structures de données particulières, vous devez penser qu'elles traiteront les données plus efficacement si vous les utilisez.

Mais le gros problème (pour moi) est quand vous voulez déplacer les données vers un autre système. Ensuite, je pense que cela devient un véritable défi, car l'application finale peut ne pas utiliser les données de la même manière. J'ai vu tellement de gens se décoller dans ce scénario.

Ainsi, d'après mon expérience, vous pourrez utiliser et transférer des données deux fois plus efficacement si vous disposez d'un modèle de données décent (plus profond et plus structuré).


Voir la vidéo: Apprendre le VOCABULAIRE DE LA GEOMETRIE. leçon de géométrie cm1cm2 - maths leçon cm2 - maitre ludo (Octobre 2021).