У нас есть особенности из данных опроса, которые содержат частичную 3D-информацию.
Наиболее распространенным примером будет 2D LineString, представляющая дорогу, которая содержит информацию о высоте в определенных точках, где она была обследована. Другие примеры включают в себя формы крыши - MultiLineString, где некоторые ключевые точки имеют назначенную высоту от плана здания, но не все.
Используя PostGIS, какую модель данных вы порекомендуете для хранения такого рода информации, чтобы она была как можно более доступной, без потери или генерации интерполированной информации?
Ответы:
Вы можете хранить неизмеренные значения Z как
'nan'::float8
. Например:Однако это может привести к неприятностям, поскольку значения NaN не всегда проверяются или обрабатываются разработчиками программного обеспечения. Например, PostGIS не может разобрать версию WKT выше
источник
Создайте столбец вторичной геометрии с тремя измерениями, в котором будут храниться вершины линейной линии, имеющие три-ординатные (тройные) значения. Для работы этой схемы предполагаются следующие предположения:
Правильная геометрия должна быть достаточной, чтобы не допускать дублирования точек в линейных линиях и отсутствия самопересечения. Таким образом, каждая координата будет вести себя как первичный ключ для идентификации вершины в исходной геометрии.
Это верно и для реляционной модели:
Для случая со множеством строк все может быть немного сложнее, так как теперь должна быть дополнительная таблица с составным первичным ключом:
Приведенный выше первичный ключ предотвратит вставку дублированных индексов геометрии для данной геометрии. Триггер / проверка предотвратит недопустимые индексы. Также строки здесь должны быть из исходных данных с учетом внешнего ключа. Все предыдущие правила применяются.
Упрощением будет использование дополнительного столбца, но не типа геометрии, а того же типа значения Z, объявленного как массив.
источник