wiki:server/bdqueimadas

Version 11 (modified by gribeiro, 10 years ago) (diff)

--

TerraMA² - Configuração BDQueimadas

1. Crie um banco de dados chamado queimadas.

2. Remova a role public da lista de acesso a este banco.

3. Crie as seguintes contas de usuário, sem privilégios de super-usuário:

  • jean
  • gribeiro
  • appqueimadas

4. Atribua os seguintes privilégios:

GRANT connect ON DATABASE queimadas TO gribeiro, jean, appqueimadas;

GRANT all ON DATABASE queimadas TO jean;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO gribeiro, appqueimadas;

5. No GeoServer?, crie uma workspace:

Data -> Workspaces -> Add new workspace

    Name: queimadas
    Namespace URI: http://www.inpe.br/queimadas

6. Registre o servidor PostgreSQL como uma fonte de dados do GeoServer?:

Data -> Stores -> Add new Store -> PostGIS

As seguintes opções foram utilizadas:

Workspace: queimadas

Data Source Name: queimadas

Description: Banco de Dados de Queimadas

database: queimadas

user: appqueimadas

max connections: 16

fetch size: 5000

Loose bbox: true

Estimated Extents: true

encode functions: true

Support on the fly geometry simplifictaion: false

7. Criar estilos para as camadas:

Data -> Styles -> Add a new style

Estilo Situação Atual:

Name: Situacao Atual

Workspace: queimadas

Colar o seguinte texto na área de texto:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
    xmlns="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>Situacao Atual</Name>
    <UserStyle>
      <Title>Situacao Atual</Title>
      <FeatureTypeStyle>
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>count</ogc:PropertyName>
              <ogc:Literal>0</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FFEBCD</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>0</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>101</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FFC387</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>100</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>501</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FAA046</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>500</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>1001</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FA872D</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>1000</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>5001</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FA5C25</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>5000</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>25001</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#C34231</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>25000</ogc:Literal>
              </ogc:PropertyIsGreaterThan>
              <ogc:PropertyIsLessThan>
                <ogc:PropertyName>count</ogc:PropertyName>
                <ogc:Literal>50001</ogc:Literal>
              </ogc:PropertyIsLessThan>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#A21C0D</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Estilo Países:

Name: Paises

Workspace: queimadas

Colar o seguinte texto na área de texto:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
    xmlns="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>Paises</Name>
    <UserStyle>
      <Title>Paises</Title>
      <FeatureTypeStyle>
        <Rule>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FFEBCD</CssParameter>
              <CssParameter name="fill-opacity">0</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#FF8C00</CssParameter>
              <CssParameter name="stroke-width">3</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
         </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Estilo Estados:

Name: Estados

Workspace: queimadas

Colar o seguinte texto na área de texto:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
    xmlns="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>Estados</Name>
    <UserStyle>
      <Title>Estados</Title>
      <FeatureTypeStyle>
        <Rule>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#1E90FF</CssParameter>
              <CssParameter name="fill-opacity">0</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#FFFF00</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
         </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Estilo Focos:

Name: Focos

Workspace: queimadas

Colar o seguinte texto na área de texto:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
    xmlns="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>Focos</Name>
    <UserStyle>
      <Title>Focos</Title>
      <FeatureTypeStyle>
        <Rule>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>cross</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#FF0000</CssParameter>
                </Fill>
              </Mark>
              <Size>8</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

8. Criar as camadas:

Data -> Layers -> Add a new resource

Add layer from: queimadas:queimadas

Obs.: o texto queimadas:queimadas// é a concatenação de: workspace:store//.

Iremos selecionar a opção Action: publish para as seguintes camadas:

  • estados
  • focos_de_2016_04_01_a_2016_05_05
  • paises

Na aba Data, iremos Computar os bounding box de cada layer:

  • Bounding Boxes / Native Bounding Box
  • Bounding Boxes / Lat/Lon? Bounding Box

Na aba Publishing iremos:

  • Na seção WMS, selecionar os estilos de cada camada

Dicas

A tabela estados possui 3496 linhas, com geometrias do tipo MultiPolygon?. Estas geometrias possuem em média 9935 vértices, sendo o total de 34.732.383 vértices. Considerando que cada vértices é formado por uma componente x e outra y, representadas por números de 8-bytes, temos um espaço de armazenamento em RAM de aproximadamente ~529.98 MiB.

SELECT SUM(ST_NPoints(geom)) AS num_pts,  (SUM(ST_NPoints(geom)) * 2.0 * 8.0) / (1024.0*1024.0) FROM estados;

As geometrias (MultiPolygon?) da tabela paises, 256 linhas com cada geometria tendo em média 123.650, possuem 31.654.555 vértices, que ocupam aproximadamente ~483.01 MiB.

SELECT SUM(ST_NPoints(geom)) AS num_pts,  (SUM(ST_NPoints(geom)) * 2.0 * 8.0) / (1024.0*1024.0) FROM paises;

As geometrias (Point) da tabela focos, 181.859 linhas, possuem 181.859 vértices, que ocupam aproximadamente ~2.77 MiB.

SELECT SUM(ST_NPoints(geom)) AS num_pts,  (SUM(ST_NPoints(geom)) * 2.0 * 8.0) / (1024.0*1024.0) FROM focos_de_2016_04_01_a_2016_05_05;

No psql, podemos ativar a medição de tempo das operações com o seguinte comando:

\timing on

No psql, podemos redirecionar a saída das consultas para um arquivo:

\o /home/terrama2/Downloads/saida.txt

No psql, devemos alterar o alinhamento do texto produzido pela consulta:

\a

Para medir o tempo de recuperar todas as linhas de cada tabela do BDQueimadas:

\o /home/terrama2/Downloads/estados.txt
SELECT * FROM estados;
Time: 3733,414 ms

\o /home/terrama2/Downloads/focos.txt
SELECT * FROM focos_de_2016_04_01_a_2016_05_05;
Time: 703,639 ms

\o /home/terrama2/Downloads/paises.txt
SELECT * FROM paises;
Time: 4006,834 ms