¿Cuál es la diferencia entre la especificación para TYPE ‘GEOMETRYCOLLECTION’ en comparación con ‘GEOMETRY’ en Addgeometrycolumn () en PostGIS?

Fue bastante difícil encontrar mucha información sobre esto, pero después de mirar algunas fuentes, esto es lo que he llegado a comprender.

La mayor diferencia es que GeometryCollection es un tipo de geometría, y Geometry es una palabra de código que significa “cualquier tipo de geometría” . La geometría incluye los siguientes tipos: Punto, Cadena de líneas, Polígono, MultiPoint, MultiLinestring, MultiPolygon y GeometryCollection.

La parte confusa de todo esto es que, cuando define una columna de Geometría en PostGIS, en realidad acepta “Geometría” como un tipo válido. Creo que lo que sucede aquí es que las columnas de geometría con el tipo Geometry pueden tener cualquier tipo de geometría, donde una columna GeometryCollection solo puede tener geometría GeometryCollection.

Entonces, la primera gran pregunta es: ¿ cuándo notarías la diferencia?

Una GeometryCollection siempre es una colección, lo que significa que siempre tiene un número variable de geometrías dentro de ella (incluso si ese número es uno), y que las funciones que operan en colecciones siempre funcionan en una GeometryCollection. Una geometría de tipo Geometría puede no ser una colección. Puede ser un solo punto o cadena lineal.

No tengo una manera simple de probar esto en este momento, pero déjame darte un ejemplo de dónde podrías ver una diferencia. Digamos que tienes dos columnas de geometría. La columna A se define como el tipo Geometry, y la columna B se define como el tipo GeometryCollection.

  • La diferencia más obvia es que ST_GeometryType (B) siempre sería GeometryCollection, y ST_GeometryType (A) podría ser cualquier tipo de geometría.
  • ST_NumGeometries (B) nunca contendría valores NULL, ni siquiera si la geometría está vacía. ST_NumGeometries (A) sería NULL si el tipo no es Multi-type o GeometryCollection.

Ahora, para la otra gran pregunta: ¿ cuál debería elegir?

Leía muchos consejos de varias fuentes de documentación que leía diciendo que, en general, no debe definir una columna de GeometryCollection (principalmente de esta página: SpatiaLite Cookbook). La razón principal de esto es porque GeometryCollections no funciona bien con todo el software SIG. Es posible que no pueda exportar una GeometryCollection como una capa que su otro software SIG comprenderá. Y realmente, ¿con qué frecuencia necesita una sola capa que contenga geometría heterogénea de todos modos?

Bueno … hay momentos en que podrías necesitar una columna de geometría heterogénea. Un buen ejemplo sería si tiene una tabla que simplemente contiene capas SIG generadas por el usuario. Si necesita una columna que no use un tipo de geometría consistente, recomendaría definir la columna como el tipo de Geometría. Reduce el desorden de tener que separar las colecciones, y dudo que tenga muchas filas que son, en sí mismas, colecciones heterogéneas, por lo que podría evitar las dificultades que conlleva almacenar GeometryCollections haciendo una columna Geometry.


Esta respuesta fue el resultado de un poco de investigación, que fue necesaria porque no he hecho mucho trabajo serio de PostGIS en algunos años. Por lo tanto, alentaría a otros a que revisen mi respuesta en busca de inexactitudes, porque no pude probar la mayor parte de esto por mí mismo para respaldar esta respuesta. Sin embargo, por ahora, he respondido lo mejor que he podido, y espero que te ayude con el trabajo de tu base de datos.

More Interesting

¿Por qué Grothendieck eligió la palabra ‘Esquema’ para la idea correspondiente en geometría algebraica?

La normal dibujada a la elipse (x ^ 2 / a ^ 2) + (y ^ 2 / b ^ 2) en la extremidad del recto latus pasa a través de la extremidad del eje menor. ¿A qué es igual la excentricidad de esta elipse?

Cómo calcular la distancia de un punto desde una línea dada

Si el eje radical de los círculos [matemática] C_1 [/ matemática] y [matemática] C_2 [/ matemática] toca el círculo [matemática] C_3 [/ matemática], entonces ¿cómo puede demostrarse que [matemática] g = 3 / 4 [/ matemáticas] o [matemáticas] f = 2 [/ matemáticas]?

Dado un círculo de circunferencia C> 0, y dado que debo elegir puntos ilimitados de la circunferencia, ¿cuál es el número esperado de veces para cada punto a elegir?

Si pi es irracional, ¿cómo es que podemos construir un círculo con un valor finito de circunferencia?

Las longitudes de los lados de un triángulo son enteros y su área también es un entero. Un lado es 21 y el perímetro es 48. ¿Cómo encuentro el lado más corto?

Un tambor cilíndrico sellado de radio [matemática] r [/ matemática] está lleno al 9% con pintura. Si el tambor se inclina para descansar sobre su lado, ¿cuál es la fracción de su área de superficie curva (sin contar los lados planos) que estará debajo de la pintura?

Si la longitud de un rectángulo se incrementa en un 10%, ¿en qué porcentaje se debe disminuir la anchura para que el área permanezca igual?

¿Cuánta agua desplazaría un hipercubo de 4 dimensiones?