Multipoint vs punkt PostGIS


12

Czy normalne jest używanie typu geometrii „wielopunkt” zamiast „punkt”, wiedząc, że używam go do przechowywania tylko jednego punktu?

Jak mogę przekonwertować z wielopunktowego na punktowy?


Dobra odpowiedź, która wyjaśnia, jak sprawdzić geometrie wieloczęściowe i przekonwertować typy kolumn z geometrii wieloczęściowej
John

Odpowiedzi:


16

Aby przekonwertować „Multipoint” na „Point”, musisz użyć ST_Dump , na przykład:

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

W kwestii użycia „Multi” lub pojedynczych geometrii używam tej logiki:

  • jeśli każda geometria ma inne atrybuty -> Pojedyncza
  • jeśli grupa geometrii ma te same atrybuty -> „Wiele”

9

Najłatwiejszym sposobem wyodrębnienia punktu z jednego punktu MULTIPOINTjest ST_GeometryN:

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

Pozwala to uniknąć potencjalnych problemów w sytuacjach, w których nie można użyć funkcji zwracania zestawu.

Istnieje kilka ważnych optymalizacji, które są dostępne tylko dla POINTgeometrii typów (szczególnie we wcześniejszych wersjach PostGIS), więc przechowywanie pojedynczych punktów POINTjest dobrą praktyką. A POINTzajmuje również około 25% mniej miejsca niż a MULTIPOINT.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.