• Nenhum resultado encontrado

Mini-curso MapServer Avançado PHP/MapScript

N/A
N/A
Protected

Academic year: 2021

Share "Mini-curso MapServer Avançado PHP/MapScript"

Copied!
79
0
0

Texto

(1)

Mini-curso MapServer Avançado

PHP/MapScript

Carlos Henrique Bughi

bughi@univali.br

Laboratório de Computação Aplicada – G10

Centro de Ciências Tecnológicas da Terra e do Mar Universidade do Vale do Itajaí

(2)

PHP/MapScript

Agenda

• Sobre o G10 • Introdução ao PHP/MapScript – O que é – Porque usar – Estrutura • Requisitos – PHP • Conceitos básicos • Programação OO • Acessando PostGreSQL – AJAX

• Modelo de objetos PHP/MapScript • Modelando a aplicação

– Requisitos do sistema – Diagrama de classes

(3)

Laboratório de Computação Aplicada – G10

Histórico e Características

• Início das atividades: 2001 – Áreas: Engenharia Ambiental Ciências da Computação Oceanografia Geografia • Linhas de Pesquisa:

– Desenvolvimento de sistemas de informação e apoio à decisão com suporte geoespacial

(4)

Laboratório de Computação Aplicada – G10

Histórico e Características

• Equipe atual:

– 1 Doutor – 1 Mestre – 2 Mestrandos – 6 Técnicos – 12 Graduandos

(5)

Laboratório de Computação Aplicada – G10

Histórico e Características

• Infra-estrutura (80m2):

– 4 Servidores

– 6 Workstations

– 20 PCs

– 4 Notebooks

(6)
(7)

Laboratório de Computação Aplicada – G10

Histórico e Características

• 42 Projetos

• Troféu FINEP de Inovação Tecnológica

– Etapa Sul – 2003

– Etapa Sul – 2006

• Finalista do Prêmio Empreendedorismo

– Guia do Estudante - 2005

(8)

Laboratório de Computação Aplicada – G10

Histórico e Características

• Projetos em desenvolvimento

– Projeto TAMAR – SITAMAR – SEAP/PR – RASTRO e COB

– Porto de Itajaí – Sistema de Informação Ambiental – MMA/SRH – Censo Gestão de Recursos Hídricos – MMA/FNMA – Pesca Responsável

(9)

Laboratório de Computação Aplicada – G10

(10)
(11)

PHP/MapScript

Definição

• O PHP/MapScript é um módulo desenvolvido

para a linguagem de script PHP que permite o

uso de funções e classes existentes no

Mapserver (desenvolvido utilizando a linguagem

C);

• Desenvolvido e mantido pela DM Solutions

Group, atualmente encontra-se na versão 4.8.1

(03/01/06);

• Permite aliar as facilidades de uma linguagem

de programação com as funcionalidades SIG do

MapServer;

(12)

PHP/MapScript

Definição

(13)

PHP/MapScript

Porque usar

• O PHP/MapScript permite fazer coisas que o

MapServer CGI não consegue:

– Criação de layers dinâmicas;

– Navegação customizada;

– Classificação de layers em tempo real;

– Maior capacidade de pesquisa;

– Suporte à leitura e gravação de shapefiles;

– Manipulação dinâmica de definições do arquivo

MapFile;

– Liberdade para a criação de lógica e algoritmos

complexos;

(14)

PHP/MapScript

Requisitos

• Para utilizar o PHP/MapScript, alguns requisitos

básicos são necessários:

– Conhecimento do MapServer CGI e da estrutura do

MapFile;

– Conhecimento da linguagem PHP;

– Seguindo as últimas tendências, conhecimento em

AJAX para a construção de aplicações com

PHP/MapScript mais eficientes e amigáveis ao

usuário final;

(15)

Estrutura do MapFile

MAP QUERYMAP SYMBOL WEB REFERENCE_MAP SCALEBAR LEGEND LAYER CLASS STYLE GRID FEATURE LABEL PROJECTION 0..1 0..* 0..1 0..1 0..1 0..1 0..* 1..* 0..* 0..1 0..* 0..1 0..1 0..1 0..1 0..1

(16)

Estrutura do MapFile

• Objetos MapFile

– Map: Objeto mestre do MapFile

– Web: Define parâmetros para uma interface web

– Layer: Descreve as camadas utilizadas para fazer o mapa – Class: Define classes temáticas para uma camada;

– Label: Define formatos de fonte e apresentação de textos; – Style: Mantém parâmetros para simbolização

• Parâmetros da requisição (para testes com CGI):

– Mode: Modo de operação do MapServer (map) – Map: Caminho para o arquivo MapFile

(17)

Estrutura do MapFile

• Criação do mapfile para o sistema em

PHP/MapScript

– Layers vetoriais

• brasil.shp • capitais.shp • eixo_geo.shp • lote_geo.shp • quadra_geo.shp • via_geo.shp

– Layers raster

• Rectifyikonos_mini.tif

Obtendo informações sobre o Shapefile:

(18)

Estrutura do MapFile

• Criação do mapfile para o sistema em

PHP/MapScript

– Limites do mapa

• -47.886453 -15.809809 -47.848327 -15.786974

– Imagem para o mapa de referência

(19)

Construindo uma aplicação WebGIS com

PHP/MapScript

(20)

Sistema WebGIS com PHP/MapScript

Requisitos

• Requisitos contemplados

– Pan

– Zoom in pontual

– Zoom in por seleção

– Zoom out

– Retorno aos limites originais

– Pesquisa pontual

– Pesquisa por seleção

– Mapa de referência dinâmico

– Listagem dinâmica de camadas

– Cálculo de distância

(21)

Sistema WebGIS com PHP/MapScript

Arquitetura

Cliente Web (Navegador) Servidor HTTP Requisição AJAX Resposta Motor PHP MapFile Mapscript requisicao index.html rotinas.js principal.css

(22)

Sistema WebGIS com PHP/MapScript

Estrutura de arquivos e diretórios

(23)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

(24)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• principal.css: arquivo de definição de estilos

– Referenciado no index.html através de:

(25)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Variáveis globais:

• btnAcao: define a ação atual

• requisicaoAcao: define a ação passada para a requisição • requisicaoParametros: define parâmetros adicionais

passados para a requisição

btnAcao

requisicaoAcao

Valores possíveis Valores possíveis 1 – zoomin 2 – zoomout 3 – query 4 – reset 5 – distancia 6 – pan 7 – inserirMarco iniciarSistema retornarLimite mudarStatusCamada realizarZoomPorSelecao realizarZoomPontual realizarPesquisaPorSelecao realizarPesquisaPontual inserirMarco inserirPontoDistancia

(26)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Variáveis do mapa:

• limite: limites do mapa separados por vírgula (retornado pelo servidor);

• larguraPadrao: largura da imagem (deve ser definido direto no arquivo);

• alturaPadrao: altura da imagem (deve ser definido direto no arquivo);

– Variáveis de seleção:

• offsetX e offsetY: armazenam o clique inicial do mapa;

• minx, miny, maxx e maxy: armazenam as coordenadas da seleção; • arrastando: status da seleção, arrastando = true indica que uma

(27)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Métodos:

• inicia(): chamado no evento onload() do elemento body, realiza a primeira requisição ao servidor;

• iniciaBtn(): define as imagens desabilitadas de cada botão; • selecionaBtnAcao(acao): define a imagem habilitada para o

botão definido pelo argumento acao;

• criaAjax(): retorna o objeto XMLHttpRequest;

• enviaRequisicao(): realiza uma requisição em segundo plano utilizando Ajax;

• codificaXml(xmlDoc): analisa XML de retorno decidindo, através da ação, qual método deve ser chamado;

(28)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Métodos:

• montarMapa(xmlDoc): atualiza o mapa principal, a imagem de referência, a imagem de escala, os limites do mapa de acordo com os valores existentes no arquivo xmlDoc;

• montarCamadas(xmlDoc): Cria a lista de camadas de acordo com os valores existentes do arquivo xmlDoc;

• atualizarCamadas(xmlDoc): atualiza a visibilidade das camadas do sistema;

• montarResultado(xmlDoc): Cria uma lista com os resultados de uma pesquisa;

• ocultarResultado(): oculta elemento DIV contendo a lista de resultados da pesquisa;

(29)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Métodos:

• mudaStatusCamada(camada): envia requisição com a camada que terá o status alterado;

• aguardar(mostrar): mostra ou oculta o elemento DIV com a mensagem “aguarde”;

• montarDistancia(xmlDoc): atualiza o mapa principale os dados de distância de acordo com os valores existentes no arquivo xmlDoc;

• cancelarDistancia(): envia uma solicitação para limpar os pontos de cálculo de distância;

(30)

Sistema WebGIS com PHP/MapScript

Arquivos lado cliente

• rotinas.js

– Métodos:

• iniciaMovimento(e): função associada ao evento

onmousedown do DIV mapa responsável por iniciar o processo de seleção de uma área no mapa;

• movimentaMouse(e): função associada ao evento

onmousemove do DIV mapa responsável por desenhar o DIV de seleção e mostrar as coordenadas do mapa;

• levantaMouse(e): função associada ao evento onmouseup do DIV mapa responsável por obter as coordenadas finais da seleção e realizar a requisição para zoom ou pesquisa;

• pixelParaGeo(x,y, largura,altura,limite): Converte píxel para coordenada geográfica;

(31)

Estrutura dos arquivos XML trocados pelo

sistema

(32)

Sistema WebGIS com PHP/MapScript

Documentos XML

(33)

Sistema WebGIS com PHP/MapScript

Documentos XML

• Retorno das ações retornarLimite,

realizarZoomPontual, realizarZoomPorSelecao,

mudarStatusCamada

(34)

Sistema WebGIS com PHP/MapScript

Documentos XML

• Retorno das ações realizarPesquisaPontual e

realizarPesquisaPorSelecao

(35)

Definindo o esqueleto da nossa classe

Mapscript.php

(36)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Classe MapScript: responsável pela integração

entre o sistema e o MapServer;

• Atributos:

– private $mapFileUsuario: indica o arquivo MapFile

utilizado para a sessão do usuário;

– private $limiteAtual: indica os limites do mapa;

– private $objMapa: objeto mapObj;

– const MAPFILEORIGINAL: indica o arquivo MapFile

padrão, deve ser informado pelo programador;

– const LIMITEORIGINAL: indica os limites iniciais do

mapa, deve ser informado pelo programador;

(37)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– __CONSTRUCT($mapfile = null, $limite = null)

• Construtor da classe MapScript, se os parâmetros $mapfile e $limite não forem informados serão utilizados os valores das constantes MAPFILEORIGINAL e LIMITEORIGINAL;

– public retornaMapFile()

• Salva arquivo MapFile para a sessão do usuário;

– public retornaImagemEscala()

• Salva imagem da escala e retorna o caminho;

– public retornaImagemMapa()

(38)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– public retornaImagemReferencia ()

• Salva imagem de referência dinâmica e retorna o caminho;

– public alteraStatusCamada($camada)

• Inverte status da camada passada por parâmetro

– public realizaZoomPontual ($x, $y, $direcao)

• Realiza zoom pontual na coordenada $x e $y; • Direção:

– 2 Æ zoom in (2 vezes) – -2 Æ zoom out (2 vezes) – 1 Æ pan

(39)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– public realizaZoomPorSelecao ($minx,$miny, $maxx,

$maxy)

• Realiza zoom na seleção definida por $minx, $miny, $maxx e $maxy;

– public retornarAosLimitesOriginais ()

• Ajusta os limites do mapa conforme definido na constante LIMITEORIGINAL;

– private alteraLimite($limite)

• Altera os limites do mapa para o definido pela variável $limite;

(40)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– public retornaLimite()

• Retorna os limites atuais do mapa;

– public realizaPesquisaPontual ($x, $y, $camada)

• Realiza pesquisa pontual (coordenada $x e $y) na layer definida pela variável $camada;

• Retorna documento XML contendo o resultado da pesquisa;

– public realizaPesquisaPorSelecao ($minx, $miny,

$maxx, $maxy, $camada)

• Realiza pesquisa espacial na layer $camada através do

polígono defino pelas variáveis $minx, $miny, $maxx, $maxy; • Retorna documento XML contendo o resultado da pesquisa;

(41)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– private montarXmlPesquisa ($objLayer)

• Constrói documento XML de pesquisa segundo resultados do objeto $objLayer;

• Retorna o documento;

– public retornaCamadas ($classificar=true)

• Constrói documento XML contendo a relação das camadas existentes;

• Se $classificar for igual a false então não é inserido os dados de classificação (útil para ajuste de status);

(42)

Sistema WebGIS com PHP/MapScript

Classe MapScript

• Métodos:

– private pixelParaGeoX ($x)

• Retorna valor em coordenada do mapa de um valor $x em píxel;

– private pixelParaGeoY ($y)

• Retorna valor em coordenada do mapa de um valor $y em píxel;

– Os métodos utilizados para calcular distância serão

apresentados mais adiante;

(43)
(44)
(45)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• mapObj (objeto do mapa)

– Construtor: ms_newMapObj($mapfile);

– Membros da classe: Tabela 10, página 22;

– Métodos da classe: páginas 23 a 33;

– Métodos utilizados pelo sistema:

• int save(string filename)

– Salva o estado do objeto map atual em um arquivo. Retorna -1 em caso de erro. Use caminhos absolutos. Se um caminho relativo for usado, então ele será relativo ao local do MapFile.

• imageObj drawScaleBar()

– Renderiza a barra de escala e retorna o manuseamento em um objeto image.

(46)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• mapObj (objeto do mapa)

– imageObj draw()

• Renderiza o mapa e retorna o manuseamento em um objeto image.

– imageObj drawScaleBar()

• Renderiza a barra de escala e retorna o manuseamento em um objeto image.

– mapObj clone()

• Retorna o handle para um novo mapObj que é um clone do mapObj atual. Todos os parâmetros do mapObj são

copiados para o novo mapObj. Retorna NULL em caso de erro.

(47)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• mapObj (objeto do mapa)

– layerObj getLayerByName(string layer_name)

• Retorna um layerObj de um mapa dado um nome de um layer. Retorna FALSE se o layer não existir.

– void zoompoint(int nZoomFactor, pointObj oPixelPos, int nImageWidth, int nImageHeight, rectObj oGeorefExt)

• Faz zoom para uma posição XY. Os parâmetros são:

– Zoom factor: valores positivos aumentam o zoom, valores negativos diminuem o zoom. Fator 1 centraliza.

– Pixel position (pointObj): coordenadas x, y do click com (0,0) no canto superior-esquerdo.

– Width: largura da imagem atual em pixel. – Height: altura da imagem atual em pixel.

– Georef extent (rectObj): extents georeferenciados atuais.

– MaxGeoref extent (rectObj): (opcional) extent georeferenciado máximo. Se provido então será impossível fazer zoom para fora desses extents.

(48)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• mapObj (objeto do mapa)

– void zoomrectangle(rectObj oPixelExt, int

nImageWidth, int nImageHeight, rectObj oGeorefExt)

• Ajusta os extents do mapa para os extents passados. Os parâmetros são:

– oPixelExt (rect object): Extents em pixel, com (0,0) no canto superior-esquerdo;

– Width: largura em pixel da imagem atual – Height: altura em pixel da imagem atual

(49)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• mapObj (objeto do mapa)

– void setextent(double minx, double miny, double

maxx, double maxy)

• Ajusta os extents do mapa (no sistema de referência definido no MapFile).

– array getlayersdrawingorder()

• Retorna um array contendo os índices dos layers na ordem que eles serão desenhados.

– layerObj getLayer(int index)

• Retorna um layerObj da layer informada pelo index (0=primeira layer)

(50)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– Objetos layerObj podem ser retornados pelo mapObj;

– Construtor: ms_newLayerObj ($mapObj [, layerObj]);

– Membros da classe: Tabela 7, página 12;

– Métodos da classe: páginas 13 a 20;

– Métodos utilizados pelo sistema:

• int set(string property_name, new_value)

– Ajusta um novo valor à uma propriedade de um objeto. Retorna -1 em caso de erro.

(51)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– int queryByPoint(pointObj point, int mode, double buffer)

• Pesquisa no layer em uma localização pontual especificada em coordenadas do mapa georeferenciado (não em pixels).

• A pesquisa é feita em todos os shapes que fazem parte de uma CLASSE que contém um valor TEMPLATE ou qualquer classe de um layer que contenha um valor LAYER TEMPLATE.

• O modo é MS_SINGLE ou MS_MULTIPLE dependendo do número de resultados que você quer. Passar buffer <=0 opta-se pelas

tolerâncias ajustadas no arquivo map (em pixels) mas você pode usar um buffer especificado em unidade do mapa.

• Retorna MS_SUCCESS se shapes foram encontrados ou MS_FAILURE se nada foi encontrado ou se algum outro erro ocorreu.

(52)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– int queryByRect(rectObj rect)

• Pesquisa no layer usando um retângulo especificado em coordenadas do mapa georeferenciado (i.e. não em pixels). • A pesquisa é feita em todos os shapes que fazem parte de

uma CLASSE que contém um valor TEMPLATE ou qualquer classe de um layer que contenha um valor LAYER

TEMPLATE.

• Retorna MS_SUCCESS se shapes foram encontrados ou MS_FAILURE se nada foi encontrado ou se algum outro erro ocorreu.

(53)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– int getNumResults()

• Retorna o número de resultados do layer na última pesquisa.

– int getMetaData(string name)

• Busca uma entrada de metadado em um layer por nome. Retorna "" se nenhuma entrada combina com o nome. Perceba que a busca é caso sensitivo.

– int open()

• Abre o layer para uso com o getShape(). Retorna MS_SUCCESS/MS_FAILURE.

(54)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– resultCacheMemberObj getResult(int index)

• Retorna um objeto resultCacheMemberObj com os índices de um objeto layer

• Parâmetro index varia de 0 à numresults-1.

• Retorna um objeto válido ou FALSE(0) se o index é inválido.

– shapeObj getShape(int tileindex, int shapeindex)

• Recupera um shapeObj de um layer pelo seu índice.

tileindex é usado apenas para shapefiles indexados (você recebe ele de um resultCacheMemberObj retornado por um getResult() por instância).

• Simplesmente passe tileindex = -1 para outras fontes de dados.

(55)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– void close()

• Fecha o layer aberto anteriormente com open().

– boolean isVisible()

• Retorna MS_TRUE ou MS_FALSE dependendo se a layer está visível no mapa.

– classObj getClass(int classIndex)

• Retorna um classObj da layer dada um valor de index (0=primeira classe);

• Para descobrir o total de classes, utilize layerObj->numclasses;

(56)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• layerObj (objeto da layer)

– int addFeature(shapeObj shape)

• Adiciona uma nova feature em um layer. Retorna -1 em caso de erro.

(57)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• RectObj (objeto que define um retângulo)

– Podem estar embutidos em outros objetos ou criados

a partir do construtor;

– Construtor: RectObj ms_newRectObj()

– Membros da classe:

maxy double maxx double miny double minx double Nome Tipo de dado

(58)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• RectObj (objeto que define um retângulo)

– Métodos da classe:

– int set(string property_name, new_value)

• Ajusta um novo valor à propriedade de um objeto. Retorna -1 em caso de erro.

– void setextent(double minx, double miny, double maxx, double maxy)

• Ajusta os extents do retângulo.

– int draw(mapObj map, layerObj layer, imageObj img, int class_index, string text)

• Desenha um retângulo individual usando layer. O class_index é usado para classificar o retângulo baseado nas classes definidas para o layer. A string text é usada para anotar o retângulo. Retorna MS_SUCCESS/MS_FAILURE.

(59)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• RectObj (objeto que define um retângulo)

– double fit(int width, int height)

• Ajusta o extents do retângulo para se encaixar na largura/altura especificada.

– int project(projectionObj dentro, projectionObj fora)

• Projeta o retângulo da projeção "dentro" (primeiro

argumento) para a projeção "fora" (segundo argumento). Retorna MS_SUCCESS/MS_FAILURE.

– void free()

(60)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• PointObj (objeto que define um ponto)

– Construtor: Point = ms_newPointObj();

– Membros da classe:

Usado apenas para arquivos shape medidos. Ajuste para zero para outros m

double

Usado para arquivos shape 3D. Ajuste para zero para outros tipos.

z double y double x double Observações Nome Tipo de dado

(61)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• PointObj (objeto que define um ponto)

– Métodos da classe:

– int setXY(double x, double y [, double m])

• Ajusta os valores das coordenadas X,Y. O terceiro parâmetro m é usado apenas para medição de shape files e não é obrigatório. • Retorna 0 em caso de sucesso, -1 caso contrário.

– int setXYZ(double x, double y, double z [, double m])

• Ajusta os valores das coordenadas X,Y e Z. O quarto parâmetro m é usado apenas para medição de shape files e não é obrigatório. • Retorna 0 em caso de sucesso, -1 caso contrário.

– int draw(mapObj map, layerObj layer, imageObj img, int class_index, string text)

• Desenha o ponto individual usando layer. A classe_index é usado para classificar o ponto baseado nas classes definidas no layer. A string text é usada para anotar o ponto.

(62)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• PointObj (objeto que define um ponto)

– double distanceToPoint(pointObj poPoint)

• Calcula a distância entre dois pontos.

– double distanceToLine(pointObject p1, pointObject p2)

• Calcula a distância entre um ponto e uma linha definida por dois pontos passados por argumento.

– double distanceToShape(shapeObj shape)

• Calcula a menor distância entre um ponto e um shape.

– int project(projectionObj dentro, projectionObj fora)

• Projeta o ponto da projeção de "dentro" (primeiro argumento) à projeção "fora" (segundo argumento). Retorna

MS_SUCCESS/MS_FAILURE.

– void free()

(63)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• LineObj (objeto que define uma linha)

– Construtor: LineObj = ms_newLineObj() ;

– Membros da classe:

Somente leitura numpoints Int Observações Nome Tipo de dado

(64)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• LineObj (objeto que define uma linha)

– Métodos da classe:

– int add(pointObj ponto)

• Adiciona um ponto ao fim da linha.

– int addXY(double x, double y [, double m])

• Adiciona um ponto ao fim da linha. O terceiro parâmetro m é usado apenas para shapefiles medidos. Não é obrigatório.

– int addXYZ(double x, double y, double z [, double m])

• Adiciona um ponto ao fim da linha. O quarto parâmetro m é usado apenas para shapefiles medidos. Não é obrigatório.

(65)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• LineObj (objeto que define uma linha) PointObj

– point(int i)

• Retorna a referência para o ponto número i. A referência é válida apenas durante a vida do lineObj que contém o ponto.

– int project(projectionObj in, projectionObj out)

• Projeta a linha desde a projeção "in" (primeiro argumento) até a projeção "out" (segundo argumento). Retorna

MS_SUCCESS/MS_FAILURE.

– void free()

(66)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• ShapeObj (objeto que define um shape)

– Construtor: ShapeObj = ms_newShapeObj(int type) ;

– Membros da classe:

Somente leitura bounds rectObj Somente leitura tileindex int Somente leitura index int Somente leitura numlines int Somente leitura type int classindex int text string Observações Nome Tipo de dado

(67)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• ShapeObj (objeto que define um shape)

– Métodos da classe:páginas 43 a 46;

– Método utilizados pelo sistema:

• int add(lineObj line)

(68)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• ClassObj (objeto que define uma classe)

– Pode ser retornado por uma classe LayerObj;

– Construtor: classObj ms_newClassObj(layerObj layer,

classObj class)

– Membros da classe: Tabela 1, página 4;

– Métodos da classe: Páginas 4 a 6;

– Método utilizado pelo sistema:

• imageObj createLegendIcon(int width, int height)

– Desenha o ícone da legenda e retorna um novo objeto imageObj.

(69)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• StyleObj (objeto que define um estilo)

– Instâncias de styleObj estão sempre embutidas

dentro de classObj.

– Construtor: styleObj ms_newStyleObj(classObj class,

styleobj style)

(70)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• StyleObj (objeto que define um estilo)

– Métodos da classe:

• int set(string property_name, new_value)

– Ajusta um novo valor à propriedade de um objeto. Retorna -1 em caso de erro.

• styleObj clone()

(71)

Sistema WebGIS com PHP/MapScript

Realizando pesquisa

Por atributo:

• int queryByAttributes(string qitem, string

qstring, int mode)

– Pesquisa no layer por shapes que fazem

intersecção com os atuais

extents do mapa. O

parâmetro qitem é o item (atributo) no qual a

pesquisa é realizada e o parâmetro qstring é a

expressão a ser procurada.

– A query é realizada em todos os shapes que

fazem parte de uma CLASSE que contém um

valor TEMPLATE ou qualquer classe de um layer

que contenha um valor LAYER TEMPLATE.

(72)

Sistema WebGIS com PHP/MapScript

Realizando pesquisa

Espacial:

• int queryByFeatures(int slayer)

– Realiza um conjunto de pesquisas baseadas em

um conjunto de resultados anteriores de outro

layer. Atualmente os resultados devem ser

baseados em layers de poligonos.

– Retorna MS_SUCCESS se shapes foram

encontrados ou MS_FAILURE se nada foi

encontrado ou se algum outro erro ocorreu.

(73)

Sistema WebGIS com PHP/MapScript

Realizando pesquisa

Espacial:

• int queryByShape(shapeObj shape)

– Pesquisa no layer baseado em um único shape,

sendo que o shape deve ser um polígono.

– Retorna MS_SUCCESS se shapes foram

encontrados ou MS_FAILURE se nada foi

encontrado ou se algum outro erro ocorreu.

(74)

Sistema WebGIS com PHP/MapScript

Liberando pesquisa

• Para liberar o resultado de uma pesquisa,

utiliza-se o método freequery do objeto map:

• void freequery(layerindex)

– Libera um resultado de uma pesquisa em um

layer especificado;

– Se o layerindex for -1, todas as pesquisas no

layer serão liberadas;

(75)

Sistema WebGIS com PHP/MapScript

Entendendo a estrutura do MapScript

• Exemplo de uso do PHP/MapScript

(76)
(77)

Sistema WebGIS com PHP/MapScript

Alterações no arquivo MapFile

• Definir todas as referências a arquivos a partir

da raiz; /var/www/html/

• Inserir no objeto Metadata das layers que

poderão ser pesquisadas:

– "pesquisa" "1"

– "campos" "QUADRAS,RA“

• Tamanho da imagem de saída

– Width 600

– Height 540

(78)

Sistema WebGIS com PHP/MapScript

(79)

Sistema WebGIS com PHP/MapScript

Referências

Documentos relacionados

Em caso de rotura de stocks, reservamo-nos no direito de envio em várias expedições ou no não fornecimento desses produto.. Esta tabela pode sofrer alterações sem

Considerando que o valor de bolsa e os indicadores de geração de valor são cada vez mais utilizados pelos investidores ao analisar o desempenho econômico e

É conveniente que os alunos estejam na Escola com antecedência de 10 (dez) minutos do horário inicial das aulas. A tolerância para a entrada na primeira aula será de 10 minutos,

Também é assegurado ao empregado o pagamento do dia trabalhado em feriados, não compensados, nos moldes do Enunciado 146 do TST, observada a prescrição constante da

Com relação a leitura realizada na BNCC, os resultados foram catalogados para a identificação dos elementos que caracterizam o enfoque CTS, sendo analisada a

Esta fala de Waiwai explicita dois tipos de experiências relativas a filmagens que os Waiãpi conheceram: uma negativa, que remete a uma primeira experiência nos anos 70 com os

• • Suporta conexão com os bancos de dados mais utilizados do Suporta conexão com os bancos de dados mais utilizados do mercado, como por exemplo, MySQL, PostgreSQL, Oracle e

A interpolaç ção consiste em escrever o valor de uma ou mais ão consiste em escrever o valor de uma ou mais variá vari áveis dentro da string que ser veis dentro da string que