Multipoint vs Point PostGIS

12

Ist es normal, den Geometrietyp "Mehrpunkt" anstelle von "Punkt" zu verwenden, wenn ich weiß, dass ich damit nur einen Punkt speichere?

Wie kann ich von Mehrpunkt zu Punkt konvertieren?

Youssef
quelle
Es gibt eine gute Antwort, die erklärt, wie man nach mehrteiligen Geometrien sucht und Spaltentypen
John

Antworten:

16

Um "Multipoint" in "Point" umzuwandeln, müssen Sie beispielsweise ST_Dump verwenden :

SELECT (ST_Dump(the_geom)).geom AS the_POINT_geom
  FROM MULTIPOINT_table;

Bei der Frage der Verwendung von "Multi" - oder Einzelgeometrien verwende ich diese Logik:

  • wenn jede Geometrie unterschiedliche Attribute hat -> Single
  • wenn eine Gruppe von Geometrien dieselben Attribute hat -> "Multi"
Taber
quelle
9

Der einfachste Weg, einen Punkt aus einem einzelnen Punkt zu extrahieren, MULTIPOINTist ST_GeometryN:

SELECT ST_AsText(ST_GeometryN('MULTIPOINT ((1 1))', 1));
--POINT(1 1)

Dies vermeidet potenzielle Probleme in Situationen, in denen eine Set-Return-Funktion nicht verwendet werden kann.

Es gibt einige wichtige Optimierungen, die nur zum POINTEingeben von Geometrien verfügbar sind (insbesondere in früheren Versionen von PostGIS). Daher wird das Speichern einzelner Punkte als POINTbewährte Methode empfohlen . A POINTverbraucht außerdem etwa 25% weniger Platz als a MULTIPOINT.

dbaston
quelle