Referência e Manual do Usuário

As representações de formato ESRI

O Spatial Extender possui várias funções que geram figuras geométricas a partir de representações de formato ESRI. Além da representação bidimensional suportada pela representação do modo binário de GIS aberto, a representação de formato ESRI também suporta as coordenadas Z opcionais e medidas. As seguintes funções geram figura geométrica a partir de um formato ESRI:

GeometryFromShape
Cria uma figura geométrica a partir de uma representação de formato de qualquer tipo de figura geométrica.

PointFromShape
Cria um ponto a partir de uma representação de formato.

LineFromShape
Cria uma cadeia de linhas a partir de uma representação de formato.

PolyFromShape
Cria um polígono a partir de uma representação de formato do polígono.

MPointFromShape
Cria um multiponto a partir de uma representação do formato.

MLineFromShape
Cria uma cadeia de linhas múltiplas a partir de uma representação de formato da cadeia de linhas múltiplas.

MPolyFromShape
Cria um multipolígono a partir de uma representação de formato de multipolígono.

A sintaxe geral destas funções é a mesma. O primeiro argumento é a representação de formato fornecida como um tipo de dados do objeto grande do modo binário (BLOB). O segundo argumento é o identificador de referência espacial para atribuir a figura geométrica. A função GeometryFromShape tem a seguinte sintaxe:

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

Como estas funções de formato exigem a definição das estruturas da linguagem de programação C para mapear a representação binária, elas destinam-se ao uso dentro de um programa 3GL e não se adequam a um ambiente 4GL. A função AsShape converte o valor da função em uma representação de formato ESRI.

Um tipo de formato 0 indica um formato nulo, sem dados geométricos para o formato.
Valor Tipo de Shape
0 Shape Nulo
1 Ponto
3* PoliLinha
5 Polígono
8 MultiPonto
11 PontoZ
13 PoliLinhaZ
15 PolígonoZ
18 MultiPontoZ
21 PontoM
23 PoliLinhaM
25 PolígonoM
28 MultiPontoM

Nota:
* Os tipos de formatos não especificados acima (2, 4, 6 etc.) são reservados para uso futuro.

Tipos de formatos no espaço XY

Ponto

Um ponto consiste num par de coordenadas de precisão dupla na ordem X, Y.

Tabela 67.
Conteúdo do fluxo de bytes do ponto

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

1

Inteiro

1

Little

Byte 4

X

X

Duplo

1

Little

Byte 12

Y

Y

Duplo

1

Little

MultiPonto

Um MultiPonto consiste numa coleção de pontos. O quadro delimitador é armazenado na ordem Xmin, Ymin, Xmax, Ymax.

Tabela 68.
Conteúdo do fluxo de bytes MultiPonto

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

8

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumPoints

NumPoints

Inteiro

1

Little

Byte 40

Pontos

Pontos

Ponto

NumPoints

Little

Polilinha

Uma Polilinha é um conjunto ordenado de vértices que consiste em uma ou mais partes. Uma parte é uma seqüência conectada de dois ou mais pontos. Os pontos podem ou não estar conectados entre si. As partes podem ou não fazer interseção entre si.

Como esta especificação não proíbe pontos consecutivos com coordenadas idênticas, os leitores do arquivo de formato deverão manipular tais casos. Por outro lado, as partes degeneradas, de comprimento zero que poderão resultar não são permitidas.

Os campos para uma Polilinha são:

Quadro
O quadro delimitador da Polilinha armazenada na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de partes na Polilinha.

NumPoints
O número total de pontos para todas as partes.

Partes
Uma matriz do comprimento NumParts. Cada Polilinha armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada parte na Polilinha são armazenados de ponto a ponto. Os pontos para a parte 2 seguem os pontos da parte 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada parte. Não existe delimitador na matriz de pontos entre as partes.

Tabela 69.
Conteúdo do fluxo de bytes Polilinha

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

3

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Nota:
X = 44 + 4 * NumParts.

Polígono

Um polígono consiste num ou mais anéis. Um anel é uma seqüência conectada de quatro ou mais pontos que forma um loop fechado, sem auto-interseção. Um polígono pode conter vários anéis externos. A ordem dos vértices ou orientação de um anel indica qual lado do anel é o interior do polígono. A área à direita do observador que caminha pelo anel na ordem do vértice é a área dentro do polígono. Os vértices de anéis que definem os orifícios nos polígonos estão no sentido anti-horário. Os vértices de um único polígono de anel, portanto, estão sempre no sentido horário. Os anéis de um polígono são denominados partes.

Como esta especificação não proíbe pontos consecutivos com coordenadas idênticas, os leitores do arquivo de formato deverão manipular tais casos. Por outro lado, as partes degeneradas, de comprimento zero ou de área zero que poderão resultar não são permitidas.

Os campos para um polígono são:

Quadro
O quadro delimitador do polígono armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de anéis no polígono.

NumPoints
O número total de pontos para todos os anéis.

Partes
Uma matriz do comprimento NumParts. Para cada anel, armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada anel no polígono são armazenados de ponto a ponto. Os pontos do Anel 2 seguem os pontos do Anel 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada anel. Não existe delimitador na matriz de pontos entre anéis.

Avisos importantes sobres os formatos do polígono:

Um Exemplo de Instância de Polígono

Figura 40. Um polígono com um orifício e oito vértices


top

Figura 41. Conteúdo do fluxo de bytes do polígono. NumParts igual a 2 e NumPoints igual a 10. Observe que a ordem dos pontos para o polígono (orifício) do donut é inversa.


top


Tabela 70.
Conteúdo do fluxo de dados do polígono

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

5

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Nota:
X = 44 + 4 * NumParts.

Tipos de formatos medidos no espaço XY

PointM

Um PointM consiste num par de coordenadas de precisão dupla na ordem X, Y, mais uma medida M.

Tabela 71.
Conteúdo do fluxo de bytes do pontoM

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

21

Inteiro

1

Little

Byte 4

X

X

Duplo

1

Little

Byte 12

Y

Y

Duplo

1

Little

Byte 20

M

M

Duplo

1

Little

MultiPontoM

Os campos para um MultiPontoM são:

Quadro
O quadro delimitador do MultipontoM armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumPoints
O número de pontos.

Pontos
Uma matriz de Pontos do comprimento NumPoints.

NumMs
O número de Medidas que seguem. NumMs pode ter somente dois valores zero se nenhuma Medida seguir este campo; ou igual a NumPoints se Medidas estiverem presentes.

Faixa M
As medidas mínimas e máximas para o MultipontoM armazenado na ordem Mmin, Mmax.

Matriz M
Uma matriz de Medidas do comprimento NumPoints.

Tabela 72.
Conteúdo do fluxo de bytes do MultipontoM

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

28

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumPoints

NumPoints

Inteiro

1

Little

Byte 40

Pontos

Pontos

Ponto

NumPoints

Little

Byte X

NumMs

NumMs

Inteiro

1

Little

Byte X+4*

Mmin

Mmin

Duplo

1

Little

Byte X+12*

Mmax

Mmax

Duplo

1

Little

Byte X+20*

Marray

Marray

Duplo

NumPoints

Little

Notas:

  1. X = 40 + (16 * NumPoints)

  2. * opcional

PolilinhaM

Um arquivo de formato PolilinhaM consiste em uma ou mais partes. Uma parte é uma seqüência conectada de dois ou mais pontos. As partes podem ou não estar conectadas entre si. As partes podem ou não fazer interseção entre si.

Os campos para uma PolilinhaM são:

Quadro
O quadro delimitador da PolilinhaM armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de partes na PolilinhaM.

NumPoints
O número total de pontos para todas as partes.

Partes
Uma matriz do comprimento NumParts. Para cada parte, armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada parte na PolilinhaM são armazenados de ponto a ponto. Os pontos para a parte 2 seguem os pontos da parte 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada parte. Não existe delimitador na matriz de pontos entre as partes.

NumMs
O número de Medidas que seguem. NumMs pode ter somente dois valores zero se nenhuma Medida seguir este campo; ou igual a NumPoints se Medidas estiverem presentes.

Faixa M
As medidas mínimas e máximas para a PolilinhaM armazenada na ordem Mmin, Mmax.

Matriz M
Uma matriz do comprimento NumPoints. As medidas de cada parte na PolilinhaM são armazenadas de ponto a ponto. As medidas para a parte 2 seguem as medidas da parte 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada parte. Não existe delimitador na matriz de medida entre as partes.

Tabela 73.
Conteúdo do fluxo de bytes da PolilinhaM

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

13

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Byte Y

NumMs

NumMs

Inteiro

1

Little

Byte Y+4*

Mmin

Mmin

Duplo

1

Little

Byte Y+12*

Mmax

Mmax

Duplo

1

Little

Byte Y+20*

Marray

Marray

Duplo

NumPoints

Little

Notas:

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

  2. * opcional

PolígonoM

Um PolígonoM consiste num número de anéis. Um anel é um loop fechado, sem auto-interseção. Observe que interseções são calculadas no espaço XY, não no espaço XYM. Um PolígonoM pode conter vários anéis externos. Os anéis de um PolígonoM são denominados partes.

Os campos para um PolígonoM são:

Quadro
O quadro delimitador do PolígonoM armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de anéis no PolígonoM.

NumPoints
O número total de pontos para todos os anéis.

Partes
Uma matriz do comprimento NumParts. Para cada anel, armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada anel no PolígonoM são armazenados de ponto a ponto. Os pontos do Anel 2 seguem os pontos do Anel 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada anel. Não existe delimitador na matriz de pontos entre anéis.

NumMs
O número de Medidas que seguem. NumMs pode ter somente dois valores zero se nenhuma Medida seguir este campo, ou igual a NumPoints se Medidas estiverem presentes.

Faixa M
As medidas mínimas e máximas para o PolígonoM armazenado na ordem Mmin, Mmax.

Matriz M
Uma matriz do comprimento NumPoints. As medidas de cada anel no PolígonoM são armazenados de ponto a ponto. As medidas do Anel 2 seguem os pontos do Anel 1 etc. A matriz das partes mantém o índice matricial da medida inicial para cada anel. Não existe delimitador na matriz de medida entre os anéis.

Avisos importantes sobre os formatos do PolígonoM:

Tabela 74.
Conteúdo do fluxo de bytes do PolígonoM

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

15

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Byte Y

NumMs

NumMs

Inteiro

1

Little

Byte Y+4*

Mmin

Mmin

Duplo

1

Little

Byte Y+12*

Mmax

Mmax

Duplo

1

Little

Byte Y+20*

Marray

Marray

Duplo

NumPoints

Little

Notas:

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

  2. * opcional

Tipos de formatos no espaço XYZ

PontoZ

Um PontoZ consiste em coordenadas triplas e duplas na ordem de X, Y, Z mais uma medida.

Tabela 75.
Conteúdo do fluxo de bytes do PontoZ

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

11

Inteiro

1

Little

Byte 4

X

X

Duplo

1

Little

Byte 12

Y

Y

Duplo

1

Little

Byte 20

Z

Z

Duplo

1

Little

Byte 28

Medida

M

Duplo

1

Little

MultipontoZ

Um MultipontoZ representa um conjunto de PontosZ, da seguinte forma:


Tabela 76.
Conteúdo do fluxo de bytes do MultipontoZ

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

18

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumPoints

NumPoints

Inteiro

1

Little

Byte 40

Pontos

Pontos

Ponto

NumPoints

Little

Byte X

Zmin

Zmin

Duplo

1

Little

Byte X+8

Zmax

Zmax

Duplo

1

Little

Byte X+16

Zarray

Zarray

Duplo

NumPoints

Little

Byte Y

NumMs

NumMs

Inteiro

1

Little

Byte Y+4*

Mmin

Mmin

Duplo

1

Little

Byte Y+12*

Mmax

Mmax

Duplo

1

Little

Byte Y+20*

Marray

Marray

Duplo

NumPoints

Little

Notas:

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

  2. * opcional

PolilinhaZ

Uma PolilinhaZ consiste em uma ou mais partes. Uma parte é uma seqüência conectada de dois ou mais pontos. As partes podem ou não estar conectadas entre si. As partes podem ou não fazer interseção entre si.

Os campos para uma PolilinhaZ são:

Quadro
O quadro delimitador da PolilinhaZ armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de partes na PolilinhaZ.

NumPoints
O número total de pontos para todas as partes.

Partes
Uma matriz do comprimento NumParts. Para cada parte, armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada parte na PolilinhaZ são armazenados de ponto a ponto. Os pontos para a parte 2 seguem os pontos da parte 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada parte. Não existe delimitador na matriz de pontos entre as partes.

Faixa Z
Os valores mínimos e máximo de Z para a PolilinhaZ armazenada na ordem Zmin, Zmax.

Matriz Z
Uma matriz do comprimento NumPoints. Os valores de Z para cada parte na PolilinhaZ são armazenados de ponto a ponto. Os valores de Z para a parte 2 seguem os valores de Z para a parte 1 e assim por diante. A matriz das partes mantém o índice matricial do ponto inicial para cada parte. Não existe delimitador na matriz Z entre as partes.

NumMs
O número de Medidas que seguem. NumMs pode ter somente dois valores zero se nenhuma Medida seguir este campo; ou igual a NumPoints se Medidas estiverem presentes.

Faixa M
As medidas mínimas e máximas para a PolilinhaZ armazenada na ordem Mmin, Mmax.

Matriz M
Uma matriz do comprimento NumPoints. As medidas para cada parte na PolilinhaZ são armazenados de ponto a ponto. As medidas para a parte 2 seguem as medidas da parte 1 etc. A matriz das partes mantém o índice matricial da medida inicial para cada parte. Não existe delimitador na matriz de medida entre as partes.

Tabela 77.
Conteúdo do fluxo de bytes da PolilinhaZ

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

13

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Byte Y

Zmin

Zmin

Duplo

1

Little

Byte Y+8

Zmax

Zmax

Duplo

1

Little

Byte Y+16

Zarray

Zarray

Duplo

NumPoints

Little

Byte Z

NumMs

NumMs

Inteiro

1

Little

Byte Z+4*

Mmin

Mmin

Duplo

1

Little

Byte Z+12*

Mmax

Mmax

Duplo

1

Little

Byte Z+20*

Marray

Marray

Duplo

NumPoints

Little

Notas:

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

  2. * opcional

PolígonoZ

Um PolígonoZ consiste num número de anéis. Um anel é um loop fechado, sem auto-interseção. Um PolígonoZ pode conter vários anéis externos. Os anéis de um PolígonoZ são denominados partes.

Os campos para um PolígonoZ são:

Quadro
O quadro delimitador do PolígonoM armazenado na ordem Xmin, Ymin, Xmax, Ymax.

NumParts
O número de anéis no PolígonoZ.

NumPoints
O número total de pontos para todos os anéis.

Partes
Uma matriz do comprimento NumParts. Para cada anel, armazena o índice de seu primeiro ponto na matriz de pontos. Os índices matriciais são relativos a 0.

Pontos
Uma matriz do comprimento NumPoints. Os pontos de cada anel no PolígonoZ são armazenados de ponto a ponto. Os pontos do Anel 2 seguem os pontos do Anel 1 etc. A matriz das partes mantém o índice matricial do ponto inicial para cada anel. Não existe delimitador na matriz de pontos entre anéis.

Faixa Z
Os valores mínimos e máximo de Z para o arco armazenado na ordem Zmin, Zmax.

Matriz Z
Uma matriz do comprimento NumPoints. Os valores de Z para cada anel no PolígonoZ são armazenados de ponto a ponto. Os valores de Z para o Anel 2 seguem os valores de Z para o Anel 1 e assim por diante. A matriz das partes mantém o índice matricial do valor Z inicial para cada anel. Não existe delimitador na matriz do valor Z entre os anéis.

NumMs
O número de Medidas que seguem. NumMs pode ter somente dois valores zero se nenhuma Medida seguir este campo; ou igual a NumPoints se Medidas estiverem presentes.

Faixa M
As medidas mínimas e máximas para o PolígonoZ armazenado na ordem Mmin, Mmax.

Matriz M
Uma matriz do comprimento NumPoints. As medidas para cada anel no PolígonoZ são armazenados de ponto a ponto. As medidas do Anel 2 seguem os pontos do Anel 1 etc. A matriz das partes mantém o índice matricial da medida inicial para cada anel. Não existe delimitador na matriz de medida entre os anéis.

Avisos importantes sobre os formatos do PolígonoZ:

Tabela 78.
Conteúdo do fluxo de bytes do PolígonoZ

Posição

Campo

Valor

Tipo

Número

Solicitar

Byte 0

Tipo de Shape

15

Inteiro

1

Little

Byte 4

Caixa

Caixa

Duplo

4

Little

Byte 36

NumParts

NumParts

Inteiro

1

Little

Byte 40

NumPoints

NumPoints

Inteiro

1

Little

Byte 44

Partes

Partes

Inteiro

NumParts

Little

Byte X

Pontos

Pontos

Ponto

NumPoints

Little

Byte Y

Zmin

Zmin

Duplo

1

Little

Byte Y+8

Zmax

Zmax

Duplo

1

Little

Byte Y+16

Zarray

Zarray

Duplo

NumPoints

Little

Byte Z

NumMs

NumMs

Inteiro

1

Little

Byte Z+4*

Mmin

Mmin

Duplo

1

Little

Byte Z+12*

Mmax

Mmax

Duplo

1

Little

Byte Z+20*

Marray

Marray

Duplo

NumPoints

Little


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]