Avantages des fonctionnalités en plusieurs parties?

28

Des points, des lignes et des polygones en plusieurs parties sont implémentés dans presque tous les SIG, mais quels avantages, le cas échéant, offrent-ils?

Dans une base de données relationnelle, les attributs partagés par différentes entités peuvent être stockés une fois et les ID utilisés pour les lier à des enregistrements de géométrie distincts. Les fonctionnalités en plusieurs parties sont-elles donc un héritage de stockage de données de fichiers plats?

texte alternatif

geographika
la source

Réponses:

35

Si votre logiciel ne prend pas en charge les fonctionnalités en plusieurs parties, vous devrez peut-être aller à des longueurs extraordinaires et compliquées pour exécuter des opérations spatiales. Par exemple, l'intersection de deux polygones peut, en général, avoir plus d'un composant connecté. Il est commode, à la fois algorithmiquement et conceptuellement, de supposer qu'une telle intersection renvoie un seul objet (un polygone à plusieurs parties) plutôt qu'un nombre arbitraire de polygones. (Pour les mêmes raisons, il est utile de prendre en charge diverses formes d'entités nulles et dégénérées - par exemple, des polygones ayant une étendue mais une aire nulle ou même des polygones avec des emplacements mais aucune étendue ni aire. Ces choses peuvent provenir d'opérations géométriques; les soutenir élimine beaucoup de post-traitement pointilleux au cas par cas et peut empêcher la disparition d'informations utiles.)

Du point de vue de la base de données relationnelle, les fonctionnalités à parties multiples rendent la normalisation possible: lorsqu'un attribut est inséparable d'une collection de polygones, vous voulez représenter cette collection comme un objet unique. Un bon exemple serait une caractéristique représentant presque tous les pays du monde ayant un littoral, car le pays comprend probablement certaines îles. Voulez-vous vraiment forcer votre SGBDR à faire une copie des attributs du pays pour chaque petite île? Préférablement pas. Vous ne voulez même pas (ou n'avez pas besoin) de conserver plusieurs copies d'un pointeur sur les attributs.

Comment représenteriez-vous un réseau ou un arbre de branchement sinon comme une multi-polyligne coordonnée?

Du point de vue des structures de données mathématiques ou algorithmiques, autoriser une fonctionnalité en plusieurs parties est une simplification, pas une complication. Afin de prendre en charge plusieurs polygones connectés (anneaux et polygones avec "trous"), vous avez déjà besoin de l'appareil pour représenter les polygones en plusieurs parties.

Enfin, les objets "vectoriels" et leur "représentation spaghetti" typique trouvent leur origine dans la théorie des complexes simpliciaux . (Ce n'est que grâce à ce lien quelque peu ténu avec la théorie de la topologie que le terme "topologie" en a fait un SIG, qui autrement n'utilise pratiquement rien de cette théorie.) Cette théorie nécessite et bénéficie de fonctionnalités en plusieurs parties. En fait, avoir un seul composant ne fait pas partie de la définition d'un complexe simplicial, mais se révèle plutôt être une propriété spéciale dont certains d'entre eux bénéficient (comme le révèle le rang de leur groupe d'homologie zéro). En tant que tel, la "pièce unique" n'est pas une propriété déterminante, mais est juste une qualité topologique dans le même sens que le fait d'avoir un anneau ou un "trou" dans un polygone est une qualité topologique (liée au rang du premier groupe d'homologie) .

whuber
la source
1
Très belle réponse. Je ne suis pas convaincu à 100% de l'utilisation des fonctionnalités en plusieurs parties pour normaliser une base de données - chaque polygone a toujours des propriétés uniques telles que la superficie et la longueur, et une question telle que "la superficie de la Grèce est constituée d'îles" devient difficile à répondre sans donnant à chaque polygone des attributs.
geographika
2
@geographika Yours est un bon exemple de la raison pour laquelle on a besoin de flexibilité pour représenter des entités (spatiales ou non) avec des bases de données. Pour l'étirer davantage, on pourrait également affirmer que des polygones individuels doivent être "explosés" dans leurs anneaux extérieur et intérieur afin de répondre à des questions telles que "quelle partie de la superficie de la Grèce est constituée de lacs?" Toute structure de base de données donnée rendra certaines requêtes plus faciles et d'autres plus difficiles; une bonne conception d'une base de données doit donc comprendre la prise en compte des utilisations prévues de la base de données. Un bon SGBD (spatial) fournira des mécanismes de conversion entre différentes structures.
whuber
2
+1 Excellente réponse. Il pourrait être utile de discuter des inconvénients de performances des fonctionnalités à plusieurs parties. Prenez une classe de traits de polyligne des autoroutes américaines où les entités routières sont divisées aux frontières des États. Créez une deuxième classe de traits en se dissolvant sur le nom de l'autoroute, ce qui donne l'I-10 couvrant le continent. Comparez maintenant les performances de l'outil Identifier. À moins que la stratégie d'indexation spatiale d'ESRI n'ait changé, elle sera plus lente sur la classe de fonctionnalités en plusieurs parties car il y a beaucoup plus de MBR qui se chevauchent. Chaque coordonnée de chaque entité dont le MBR chevauche le point est examinée.
Kirk Kuykendall
@Kirk Bon point. Cependant, vos exemples mettent en évidence des lacunes dans la technologie d'ESRI plutôt que des problèmes de principe. L'identification d'une entité au moyen d'une structure de données spatiales raisonnablement efficace mais simple, comme un arbre quadruple, devrait avoir des performances O (log (N)) (après la mise en cache initiale d'une structure de données stockée). La division de chacune des N caractéristiques (présumée grande) en une moyenne de K morceaux (présumée modérée ou petite par rapport à N) augmente log (N) en log (N) + log (K), qui - compte tenu des présomptions - est pratiquement imperceptible.
whuber
1
@Dandy Merci d'avoir mis en évidence la distinction entre une géométrie en plusieurs parties et une simple collection de pièces. Je ne pense pas que tous les types d'entités en plusieurs parties "contraignent" leurs composants; cela dépend probablement de l'implémentation - ce qui souligne que le concept de "multi-part" contient quelques variations subtiles.
whuber
12

Imaginez joindre des données de population à un tableau de polygones en une seule partie représentant des pays. Selon la façon dont vous effectuez la jointure, soit chaque île obtiendrait la population complète de ce pays, soit un seul polygone de l'ensemble obtiendrait la population complète. Sans représenter le pays comme un polygone à plusieurs parties, vous devez soit répartir la population (inutilement complexe et inexacte), soit rassembler les polygones ensemble avant de les rejoindre, auquel cas vous vous retrouvez essentiellement avec un polygone à plusieurs parties.

Sean
la source