• Nenhum resultado encontrado

4.3 Implementação

4.3.4 Implementação da camada de banco de dados espacial

A implementação da camada de banco de dados leva em consideração a especifica- ção e implementação das consultas espaciais, baseada em (a) parâmetros estabelecidos pelos conceitos, (b) geometrias associadas, (c) funções espaciais, (d) dados disponíveis no banco de dados referentes a alvará, arruamento e divisa de bairros e a instanciação de uma tabela para armazenamento de dados sobre performance de execução das consultas espaciais.

Nesta dissertação não são abordadas todas as operações ou funções espaciais, somente um conjunto que permita a representação computacional das perguntas apresentadas na Tabela 4.8, onde é possível observar o objeto inicio e fim, a geometria, operação e função espacial associada ao objeto, conforme detalhamento apresentado na metodologia.

Tabela 4.8: Relação entre conceitos e primitivas. Fonte: O Autor, para este trabalho, 2016.

Questão Objeto Inicio Geometria inicio

Objeto destino Geometria des- tino

Operação Função espacial 1 estacionamento ponto bairro Centro,

Batel e Tatuquara

polígono Dentro de st_contains 2 tipo de negócios ponto eixo estrutural linha Perto de st_distance 3 tipo de negócios ponto shoopingBatel ponto Perto de st_distance 4 restaurante, pape-

laria, gráfica

ponto utfpr ponto Perto de st_distance 5 empresa logística

e indústria

ponto bairro Tatuquara polígono Dentro de st_contains 6 bares ponto Batel polígono Dentro de st_contains 7 tipos de negócios ponto rua XV de No-

vembro

linha Perto de st_distance 8 game e educação ponto bairro Centro,

Batel e Tatuquara

polígono Dentro de st_contains 9 bares e universi-

dades

ponto bairro Centro, Batel e Tatuquara

polígono Dentro de st_contains 10 indústrias ponto BR116 linha Perto de st_distance 11 postos de gaso-

lina

ponto atividade de edu- cação

ponto Perto de st_distance 12 indústria ponto bairro Tatuquara polígono Dentro de st_contains 13 estações de reci-

clagem

ponto bairro Tatuquara polígono Dentro de st_contains 14 bares ponto bairro Batel polígono Dentro de st_contains 15 escritórios ponto bairro centro polígono Dentro de st_contains

Consultas Espaciais

As consultas espaciais (CE) formuladas levam em consideração o conjunto de pergun- tas, as primitivas computacionais e os elementos disponíveis no protótipo. A escolha de qual templatede consulta deve ser executado no banco de dados, assim como a passagem de parâ- metros, é realizada de forma automática na própria camada de visualização. Posteriormente, a consulta com valores é processada no banco e o retorno apresentado na camada de visualização.

A relação e especificação das consultas espaciais são apresentadas na sequência: CE01 - Consulta espacial CE01 é exemplificada na Listing 4.1.

É possível observar no código a seguir os valores atribuídos as variáveis (linhas 2 a 7). A linha 10 apresenta a latitude e longitude do ponto desejado e na linha 11 são apresen- tadas informações complementares do ponto. As linhas 12 a 18 mostram um tratamento para identificar uma classe a cada período de tempo e à qual é utilizada na camada de visualização para estabelecer de cores distintas para os pontos. A linha 19 exibe as tabelas compreendidas na consulta. As linhas 20 e 21 apresentam a (s) função (ões) espaciais envolvidas na consulta. As linhas 22 a 25 listam demais restrições. Em relação aos valores definidos pelo usuário na camada de visualização note na linha 15 o nome do bairro, na linha 16 o tipo do negócio e nas linhas 17,18 o parâmetro de data.

Listing 4.1: Consulta espacial CE01. Fonte: O Autor, para este trabalho, 2016.

1 SELECT ST_X (prefeitura.alvara . localidade ), ST_Y(prefeitura . alvara . localidade ),

2 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

3 CASE WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT)

4 >= 1980 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT)

5 < 1990 THEN ’A’ WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT)

6 >= 1990 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT)

7 < 2000 THEN ’B’ WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT)

8 >= 2000 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT)

9 < 2010 THEN ’C’ ELSE ’D’ END

10 FROM prefeitura. alvara , limites_legais . divisa_de_bairros

11 WHERE ST_CONTAINS(ST_ASTEXT(st_transform(limites_legais.divisa_de_bairros.geom,4326)),

12 ST_ASTEXT(st_transform(prefeitura. alvara . localidade ,29192)))

13 AND limites_legais . divisa_de_bairros . nome in (’BATEL’)

14 AND prefeitura . alvara . atividade_principal_agregada = ’estacionamento’

15 AND prefeitura . alvara . data_emissao >= TO_DATE(’01/1980’,’YYYY’)

16 AND prefeitura . alvara . data_emissao <= TO_DATE(’12/2013’,’YYYY’)

Consulta Espacial CE02 Aplicada a relação entre a geometria ponto (tipo negócio) que está distante (ST_DISTANCE) da geometria ponto (razão social), exemplificada na Listing 4.2. Em relação aos valores definidos pelo usuário na camada de visualização note na linha 14 o valor da distância, na linha 16 a razão social do negócio e nas linhas 17,18 o parâmetro de data.

Listing 4.2: Consulta espacial CE02. Fonte: O Autor, para este trabalho, 2016.

1 SELECT ST_X(prefeitura.alvara. localidade ), ST_Y(prefeitura . alvara . localidade ),

2 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

3 CASE WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1980

4 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1989 THEN ’A’

5 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1990

6 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1999 THEN ’B’

7 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 2000

8 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 2009 THEN ’C’

9 ELSE ’D’ END

10 FROM prefeitura. alvara , prefeitura . alvara pa

11 WHERE ST_DISTANCE(prefeitura.alvara.localidade, ST_GeomFromText(

12 ’POINT(’||ST_X(ST_ASTEXT(pa.LOCALIDADE))||’ ’||

13 ST_Y(ST_ASTEXT(pa.LOCALIDADE))||’)’,4326)::geography)< 200

14 AND pa.nome_empresarial = ’p3_v’

15 AND prefeitura . alvara . atividade_principal_agregada = ’HOSPITAL SANTA CRUZ’

16 AND prefeitura . alvara . data_emissao >=TO_DATE(’01/1980’,’YYYY’)

17 AND prefeitura . alvara . data_emissao <=TO_DATE(’12/2013’,’YYYY’)

18 GROUP BY ST_X(prefeitura.alvara.localidade ), ST_Y(prefeitura . alvara . localidade ),

19 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

20 prefeitura . alvara . data_emissao ;

Consulta Espacial CE03 Aplicada a relação entre a geometria ponto (tipo negócio origem) que está distante (ST_DISTANCE) da geometria ponto (tipo negócio destino), exempli- ficada na Listing 4.3. Em relação aos valores definidos pelo usuário na camada de visualização

note na linha 14 o valor da distância, na linha 15 o tipo de negócio origem, na linha 16 o tipo de negócio destino e nas linhas 17,18 o parâmetro de data.

Listing 4.3: Consulta espacial CE03. Fonte: O Autor, para este trabalho, 2016.

1 SELECT ST_X(prefeitura.alvara. localidade ), ST_Y(prefeitura . alvara . localidade ),

2 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

3 CASE WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1980

4 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1989 THEN ’A’

5 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1990

6 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1999 THEN ’B’

7 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 2000

8 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 2009 THEN ’C’

9 ELSE ’D’ END

10 FROM prefeitura. alvara , prefeitura . alvara pa

11 WHERE ST_DISTANCE(prefeitura.alvara.localidade, ST_GeomFromText(

12 ’POINT(’|| ST_X(ST_ASTEXT(pa.LOCALIDADE))|| ’ ’ ||

13 ST_Y(ST_ASTEXT(pa.LOCALIDADE)) || ’)’, 4326)::geography)< + 200

14 AND pa. atividade_principal_agregada = ’ESCOLA’

15 AND prefeitura . alvara . atividade_principal_agregada = ’BAR’

16 AND prefeitura . alvara . data_emissao >=TO_DATE(’01/1980’,’YYYY’)

17 AND prefeitura . alvara . data_emissao <=TO_DATE(’12/2013’,’YYYY’);

Consulta Espacial CE04 Aplicada a relação entre a geometria ponto (tipo negócio) que está distante (ST_DISTANCE) da geometria linha (arruamento), exemplificada na Listing 4.4. Em relação aos valores definidos pelo usuário na camada de visualização note na linha 14 o valor da distância, na linha 15 o nome da rua.

Listing 4.4: Consulta espacial CE04. Fonte: O Autor, para este trabalho, 2016.

1 SELECT ST_X(prefeitura.alvara . localidade ), ST_Y(prefeitura . alvara . localidade ),

2 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

3 CASE WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1980

4 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1989 THEN ’A’

5 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 1990

6 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 1999 THEN ’B’

7 WHEN CAST(to_char(prefeitura.alvara.data_emissao,’YYYY’) AS INT) >= 2000

8 AND CAST(to_char(prefeitura.alvara . data_emissao , ’YYYY’) AS INT) <= 2009 THEN ’C’

9 ELSE ’D’ END

10 FROM prefeitura . alvara , prefeitura . alvara pa

11 WHERE ST_DISTANCE(prefeitura.alvara.localidade,

12 ST_GeomFromText(’POINT(’||ST_X(ST_ASTEXT(pa.LOCALIDADE))

13 || ’ ’||ST_Y(ST_ASTEXT(pa.LOCALIDADE))||’)’,4326)::geography)< + p2_v

14 AND pa.endereco =’RUA XV DE NOVEMBRO’

15 GROUP BY ST_Y(prefeitura.alvara.localidade ), ST_X(prefeitura . alvara . localidade ),

16 prefeitura . alvara . nome_empresarial, prefeitura . alvara . atividade_principal_agregada ,

17 prefeitura . alvara . data_emissao ;

A seguir é apresentada a abstração realizada para cada uma das perguntas e as primi- tivas computacionais em banco de dados espacial. A Tabela 4.9 apresenta a geometria origem e destino, a função espacial, se existem ou não restrições e qual a consulta espacial aplicada a cada uma das perguntas. A tipificação não aplicada na coluna consulta deve ser entendida

levando em consideração que, as geometrias e funções são semelhantes a outras perguntas com consulta associada e apresentada na Tabela 4.9.

Tabela 4.9: Aplicação das consultas espaciais as questões.

Questão Geometria ori- gem

Geometria des- tino

Função espacial Outras restrições Consulta 1 ponto polígono st_contains período de tempo CE01 2 ponto linha st_distance período de tempo

e zoneamento

não aplicada 3 ponto ponto st_distance período de tempo CE02 4 ponto ponto st_distance zoneamento CE02 5 ponto polígono st_contains não aplicada 6 ponto polígono st_contains período de tempo CE01 7 ponto linha st_distance período de tempo CE03 8 ponto polígono st_contains período de tempo não aplicada 9 ponto polígono st_contains não aplicada

10 ponto linha st_distance CE03

11 ponto ponto st_distance CE02

12 ponto polígono st_contains zoneamento (ZR1 e APA)

CE01

13 ponto polígono st_contains CE01

14 ponto polígono st_contains não aplicada