Guía y consulta del usuario

Las representaciones de forma ESRI

DB2 Spatial Extender tiene varias funciones que generan geometrías a partir de representaciones de forma ESRI. Además de la representación de dos dimensiones soportada por la representación de binario conocido Open GIS, la representación de forma ESRI también da soporte a coordenadas Z y medidas opcionales. Las siguientes funciones generan una geometría a partir de una forma ESRI:

ST_GeometryFromShape
Crea una geometría a partir de una representación de forma de cualquier tipo de geometría.

ST_PointFromShape
Crea un punto a partir de una representación de forma de punto.

ST_LineFromShape
Crea una serie lineal a partir de una representación de forma de serie lineal.

ST_PolyFromShape
Crea un polígono a partir de una representación de forma de polígono.

ST_MPointFromShape
Crea una geometría varios puntos a partir de una representación de forma de varios puntos.

ST_MLineFromShape
Crea una geometría varias series lineales a partir de una representación de forma de varias series lineales.

ST_MPolyFromShape
Crea una geometría varios polígonos a partir de una representación de forma de varios polígonos.

La sintaxis general de estas funciones es la misma. El primer argumento es la representación de forma que se entra como tipo de datos objeto grande binario (BLOB). El segundo argumento es el entero identificador de referencias espaciales que se va a asignar a la geometría. La función GeometryFromShape tiene la siguiente sintaxis:

db2gse.GeometryFromShape(ShapeGeometry Blob(1M), cr db2gse.coordref)

Puesto que estas funciones de forma necesitan la definición de estructuras de lenguaje de programación C para correlacionar la representación binaria, están destinadas a ser utilizadas dentro de un programa 3GL y no se ajustan a un entorno 4GL. La función AsShape convierte el valor de geometría en una representación de forma ESRI.

Un tipo de forma de 0 indica una forma nula, sin datos geométricos para la forma.
Valor Shape Type
0 Forma nula
1 Point
3* PolyLine
5 Polygon
8 MultiPoint
11 PointZ
13 PolyLineZ
15 PolygonZ
18 MultiPointZ
21 PointM
23 PolyLineM
25 PolygonM
28 MultiPointM
Nota:* Los tipos de formas no especificados en la tabla anterior (2, 4, 6, etc.) se reservan para un futuro uso.

Tipos de formas en espacio XY

Point

Un punto consta de un par de coordenadas de doble precisión en el orden X, Y.

Tabla 66.
Contenido de la corriente de bytes de un punto

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

1

Integer

1

Little

Byte 4

X

X

Double

1

Little

Byte 12

Y

Y

Double

1

Little

MultiPoint

Una geometría varios puntos consta de un grupo de puntos. El recuadro límite se almacena en el orden Xmín, Ymín, Xmáx, Ymáx.

Tabla 67.
Contenido de la corriente de bytes de varios puntos

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Tipo de forma

8

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

PolyLine

Una geometría PolyLine es un conjunto ordenado de vértices que consta de una o más partes. Una parte es una secuencia conectada de dos o más puntos. Los puntos pueden estar o no conectados entre sí. Las partes pueden formar o no formar intersección entre sí.

Puesto que esta especificación no prohíbe puntos consecutivos con coordenadas idénticas, los lectores de archivos de forma deben manejar estos casos. Por otro lado, no se permiten las partes degeneradas de longitud cero que pueden derivar de dichos casos.

Los campos de una PolyLine son:

Box
El recuadro límite de la geometría PolyLine que se almacena en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de partes de una geometría PolyLine.

NumPoints
El número total de puntos correspondiente a todas las partes.

Parts
Una matriz de longitud NumParts. Cada PolyLine almacena el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada parte de la geometría PolyLine se almacenan de extremo a extremo. Los puntos correspondientes a la parte 2 siguen a los correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada parte. No hay ningún delimitador en la matriz de puntos entre partes.

Tabla 68.
Contenido de la corriente de bytes de PolyLine

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

3

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Nota:X = 44 + 4 * NumParts.

Polygon

Un polígono consta de uno o más anillos. Un anillo es una secuencia conectada de cuatro o más puntos que forman un bucle cerrado que no forma intersección consigo mismo. Un polígono puede contener varios anillos externos. El orden de vértices o la orientación de un anillo indica qué parte del anillo es el interior del polígono. La parte que queda a la derecha del observador que camina por el anillo en orden de vértices es la parte interna del polígono. Los vértices de los anillos que definen orificios en polígonos están en una dirección contraria a la de las agujas del reloj. Los vértices correspondientes a un solo polígono con anillos están, por tanto, siempre en el orden de las agujas del reloj. Los anillos de un polígono se denominan partes.

Puesto que esta especificación no prohíbe puntos consecutivos con coordenadas idénticas, los lectores de archivos de forma deben manejar estos casos. Por otro lado, no se permiten las partes degeneradas de longitud cero o de área cero que pueden derivar de dichos casos.

Los campos de un polígono son:

Box
El recuadro límite del polígono que se almacena en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de anillos del polígono.

NumPoints
El número total de puntos correspondiente a todos los anillos.

Parts
Una matriz de longitud NumParts. Almacena, para cada anillo, el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada anillo del polígono se almacenan de extremo a extremo. Los puntos correspondientes al anillo 2 siguen a los correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de puntos entre anillos.

Notas importantes sobre las formas Polygon:

Una instancia de polígono de ejemplo

Figura 40. Un polígono con un orificio y ocho vértices


top

Figura 41. Contenido de la corriente de bytes del polígono. NumParts igual a 2 y NumPoints igual a 10. Observe que el orden de los puntos del polígono en forma de rosquilla (con orificio) está invertido.


top


Tabla 69.
Contenido de la corriente de bytes de un polígono

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

5

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Nota:X = 44 + 4 * NumParts.

Tipos de formas con medidas en espacio XY

PointM

Un PointM consta de un par de coordenadas de doble precisión en el orden X, Y, más una medida M.

Tabla 70.
Contenido de la corriente de bytes de PointM

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

21

Integer

1

Little

Byte 4

X

X

Double

1

Little

Byte 12

Y

Y

Double

1

Little

Byte 20

M

M

Double

1

Little

MultiPointM

Los campos de un MultiPointM son:

Box
El recuadro límite del MultiPointM almacenado en el orden Xmín, Ymín, Xmáx, Ymáx.

NumPoints
El número de puntos.

Points
Una matriz de puntos de longitud NumPoints.

NumMs
El número de medidas que siguen. NumMs sólo puede tener dos valores: cero si este campo no va seguido de ninguna medida, e igual a NumPoints si hay medidas.

M Range
Las medidas mínima y máxima correspondientes a MultiPointM almacenadas en el orden Mmín, Mmáx.

M Array
Una matriz de medidas de longitud NumPoints.

Tabla 71.
Contenido de la corriente de bytes de MultiPointM

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

28

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

Byte X

NumMs

NumMs

Integer

1

Little

Byte X+4*

Mmin

Mmin

Double

1

Little

Byte X+12*

Mmax

Mmax

Double

1

Little

Byte X+20*

Marray

Marray

Double

NumPoints

Little

Notas:

  1. X = 40 + (16 * NumPoints)

  2. * opcional

PolyLineM

Un archivo de forma PolyLineM consta de una o más partes. Una parte es una secuencia conectada de dos o más puntos. Las partes pueden estar o no conectadas entre sí. Las partes pueden formar o no formar intersección entre sí.

Los campos de un PolyLineM son:

Box
El recuadro límite del PolyLineM almacenado en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de partes del PolyLineM.

NumPoints
El número total de puntos correspondiente a todas las partes.

Parts
Una matriz de longitud NumParts. Almacena, para cada parte, el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada parte de la geometría PolyLineM se almacenan de extremo a extremo. Los puntos correspondientes a la parte 2 siguen a los correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada parte. No hay ningún delimitador en la matriz de puntos entre partes.

NumMs
El número de medidas que siguen. NumMs sólo puede tener dos valores: cero si este campo no va seguido de ninguna medida, e igual a NumPoints si hay medidas.

M Range
Las medidas mínima y máxima correspondientes a PolyLineM almacenadas en el orden Mmín, Mmáx.

M Array
Una matriz de longitud NumPoints. Las medidas de cada parte de la geometría PolyLineM se almacenan de extremo a extremo. Las medidas correspondientes a la parte 2 siguen a las correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada parte. No hay ningún delimitador en la matriz de medidas entre partes.

Tabla 72.
Contenido de la corriente de bytes de PolyLineM

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

13

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Notas:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * opcional

PolygonM

Un PolygonM consta de un número de anillos. Un anillo es un bucle cerrado que no forma intersección consigo mismo. Observe que las intersecciones se calculan en espacio XY, no en espacio XYM. Un PolygonM puede contener varios anillos externos. Los anillos de un PolygonM se denominan partes.

Los campos de un PolygonM son:

Box
El recuadro límite del PolygonM almacenado en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de anillos del PolygonM.

NumPoints
El número total de puntos correspondiente a todos los anillos.

Parts
Una matriz de longitud NumParts. Almacena, para cada anillo, el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada anillo del PolygonM se almacenan de extremo a extremo. Los puntos correspondientes al anillo 2 siguen a los correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de puntos entre anillos.

NumMs
El número de medidas que siguen. NumMs sólo puede tener dos valores: cero si este campo no va seguido de ninguna medida o igual a NumPoints si hay medidas.

M Range
Las medidas mínima y máxima correspondientes a PolygonM almacenadas en el orden Mmín, Mmáx.

M Array
Una matriz de longitud NumPoints. Las medidas de cada anillo del PolygonM se almacenan de extremo a extremo. Las medidas correspondientes al anillo 2 siguen a las correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz de la medida inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de medidas entre anillos.

Notas importantes sobre las formas PolygonM:

Tabla 73.
Contenido de la corriente de bytes de PolygonM

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

15

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Notas:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * opcional

Tipos de formas en espacio XYZ

PointZ

Un PointZ consta de tres coordenadas de doble precisión en el orden X, Y, Z más una medida.

Tabla 74.
Contenido de la corriente de bytes de PointZ

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

11

Integer

1

Little

Byte 4

X

X

Double

1

Little

Byte 12

Y

Y

Double

1

Little

Byte 20

Z

Z

Double

1

Little

Byte 28

Measure

M

Double

1

Little

MultiPointZ

Un MultiPointZ representa una serie de PointZ, del siguiente modo:


Tabla 75.
Contenido de la corriente de bytes de MultiPointZ

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

18

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

Byte X

Zmin

Zmin

Double

1

Little

Byte X+8

Zmax

Zmax

Double

1

Little

Byte X+16

Zarray

Zarray

Double

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Notas:

  1. X = 40 + (16 * NumPoints); Y = X + 16 + (8 * NumPoints)

  2. * opcional

PolyLineZ

Un PolyLineZ consta de una o más partes. Una parte es una secuencia conectada de dos o más puntos. Las partes pueden estar o no conectadas entre sí. Las partes pueden formar o no formar intersección entre sí.

Los campos de un PolyLineZ son:

Box
El recuadro límite del PolyLineZ almacenado en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de partes del PolyLineZ.

NumPoints
El número total de puntos correspondiente a todas las partes.

Parts
Una matriz de longitud NumParts. Almacena, para cada parte, el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada parte de la geometría PolyLineZ se almacenan de extremo a extremo. Los puntos correspondientes a la parte 2 siguen a los correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada parte. No hay ningún delimitador en la matriz de puntos entre partes.

Z Range
Los valores mínimo y máximo de Z correspondientes a PolyLineZ almacenados en el orden Zmín, Zmáx.

Z Array
Una matriz de longitud NumPoints. Los valores de Z para cada parte del PolyLineZ se almacenan de extremo a extremo. Los valores de Z correspondientes a la parte 2 siguen a los valores de Z correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada parte. No hay ningún delimitador en la matriz Z entre partes.

NumMs
El número de medidas que siguen. NumMs sólo puede tener dos valores: cero si este campo no va seguido de ninguna medida, e igual a NumPoints si hay medidas.

M Range
Las medidas mínima y máxima correspondientes a PolyLineZ almacenadas en el orden Mmín, Mmáx.

M Array
Una matriz de longitud NumPoints. Las medidas para cada parte del PolyLineZ se almacenan de extremo a extremo. Las medidas correspondientes a la parte 2 siguen a las correspondientes a la parte 1, y así sucesivamente. La matriz de partes alberga el índice de matriz de la medida inicial correspondiente a cada parte. No hay ningún delimitador en la matriz de medidas entre partes.

Tabla 76.
Contenido de la corriente de bytes de PolyLineZ

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

13

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

Zmin

Zmin

Double

1

Little

Byte Y+8

Zmax

Zmax

Double

1

Little

Byte Y+16

Zarray

Zarray

Double

NumPoints

Little

Byte Z

NumMs

NumMs

Integer

1

Little

Byte Z+4*

Mmin

Mmin

Double

1

Little

Byte Z+12*

Mmax

Mmax

Double

1

Little

Byte Z+20*

Marray

Marray

Double

NumPoints

Little

Notas:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 * NumPoints)

  2. * opcional

PolygonZ

Un PolygonZ consta de un número de anillos. Un anillo es un bucle cerrado que no forma intersección consigo mismo. Un PolygonZ puede contener varios anillos externos. Los anillos de un PolygonZ se denominan partes.

Los campos de un PolygonM son:

Box
El recuadro límite del PolygonZ almacenado en el orden Xmín, Ymín, Xmáx, Ymáx.

NumParts
El número de anillos del PolygonZ.

NumPoints
El número total de puntos correspondiente a todos los anillos.

Parts
Una matriz de longitud NumParts. Almacena, para cada anillo, el índice de su primer punto en la matriz de puntos. Los índices de la matriz son con respecto a 0.

Points
Una matriz de longitud NumPoints. Los puntos de cada anillo del PolygonZ se almacenan de extremo a extremo. Los puntos correspondientes al anillo 2 siguen a los correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del punto inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de puntos entre anillos.

Z Range
Los valores mínimo y máximo de Z correspondientes al arco almacenados en el orden Zmín, Zmáx.

Z Array
Una matriz de longitud NumPoints. Los valores Z de cada anillo del PolygonZ se almacenan de extremo a extremo. Los valores de Z correspondientes al anillo 2 siguen a los valores de Z correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz del valor Z inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de valores Z entre anillos.

NumMs
El número de medidas que siguen. NumMs sólo puede tener dos valores: cero si este campo no va seguido de ninguna medida, e igual a NumPoints si hay medidas.

M Range
Las medidas mínima y máxima correspondientes a PolygonZ almacenadas en el orden Mmín, Mmáx.

M Array
Una matriz de longitud NumPoints. Las medidas de cada anillo del PolygonZ se almacenan de extremo a extremo. Las medidas correspondientes al anillo 2 siguen a las correspondientes al anillo 1, y así sucesivamente. La matriz de partes alberga el índice de matriz de la medida inicial correspondiente a cada anillo. No hay ningún delimitador en la matriz de medidas entre anillos.

Notas importantes sobre las formas PolygonZ:

Tabla 77.
Contenido de la corriente de bytes de PolygonZ

Posición

Campo

Valor

Tipo

Número

Orden

Byte 0

Shape Type

15

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

Zmin

Zmin

Double

1

Little

Byte Y+8

Zmax

Zmax

Double

1

Little

Byte Y+16

Zarray

Zarray

Double

NumPoints

Little

Byte Z

NumMs

NumMs

Integer

1

Little

Byte Z+4*

Mmin

Mmin

Double

1

Little

Byte Z+12*

Mmax

Mmax

Double

1

Little

Byte Z+20*

Marray

Marray

Double

NumPoints

Little


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]