Багатоточковий проти точки PostGIS


12

Чи нормально використовувати тип геометрії "багатоточковий" замість "точки", знаючи, що я використовую його для зберігання лише однієї точки?

Як я можу конвертувати з багатоточок у точку?


Є гарна відповідь, яка пояснює, як перевірити наявність геометрії з декількома частинами та перетворити типи стовпців з багато- в одиночну геометрію за адресою: gis.stackexchange.com/questions/28835/…
Джон

Відповіді:


16

Щоб перетворити "Multipoint" у "Point", ви повинні використовувати ST_Dump , наприклад:

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

У питанні про використання "Multi" або одиночної геометрії я використовую цю логіку:

  • якщо кожна геометрія має різні атрибути -> Single
  • якщо група геометрій має однакові атрибути -> "Multi"

9

Найпростіший спосіб витягти точку з однієї точки MULTIPOINTє ST_GeometryN:

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

Це дозволяє уникнути можливих проблем у ситуаціях, коли функцію повернення набору неможливо використовувати.

Є кілька важливих оптимізацій, які доступні лише для POINTвведення геометрії (особливо в більш ранніх версіях PostGIS), тому зберігання одиничних точок POINTє гарною практикою. A POINTтакож використовує приблизно на 25% менше місця, ніж a MULTIPOINT.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.