PostGIS peut-il contraindre une colonne à plusieurs polygones et polygones?


10

J'utilise actuellement PostGIS 1.5.3, mais je passerai bientôt à 2.0. Veuillez donc noter les différences entre les deux versions qui sont pertinentes pour les questions suivantes.

  • Est-il possible de créer une colonne du type de géométrie PostGIS qui permet l'insertion de polygones et de multipolygones mais restreint l'insertion d'autres types de géométrie sans modifier manuellement la contrainte générée par PostGIS lors de l'appel de AddGeometryColumn?
  • Y a-t-il des raisons de ne pas le faire? En particulier, PostGIS stocke-t-il des métadonnées qui pourraient modifier négativement la contrainte manuellement? (Je suis très nouveau sur PostGIS, alors pardonnez-moi si l'idée de PostGIS de stocker des métadonnées est absurde.)
  • Quelle est l'importance des frais généraux encourus en utilisant des multipolygones pour tout?

Je suis déjà au courant de l'utilisation de ST_Multi pour convertir des polygones en multipolygones avant l'insertion, donc si ce n'est pas possible ou pas une bonne idée, je vais le faire.

Réponses:


6

Pour chacune de vos questions ...

  1. Non sans modifier manuellement la contrainte.

  2. Certaines métadonnées sont stockées dans la géométrie PostGIS. Techniquement, il n'y a aucune raison de ne pas le faire. Si vous voulez qu'une colonne contienne un polygone ou un multipolygone, cela dépend de vous. La raison générale de s'en tenir à un type de géométrie par colonne est la simplicité à mesure que la table grandit et / ou si la table est massive.

  3. Un multipolygone composé d'un seul polygone sera plus grand que le seul polygone, mais pas de manière significative. La vitesse d'interrogation spatiale (avec l'index approprié) du multipolygone avec un polygone par rapport à un seul polygone serait cependant la même.

Pour mes données, si la colonne doit contenir des polygones, j'ai la colonne être un multipolygone car cela permet l'éventualité qu'un multipolygone soit inséré dans la colonne. Exécutez simplement ST_Multi lors de l'insertion.

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.