A LINGUAGEM DE CONSULTA GEOMDQL
5.3 OPERADORES DA LINGUAGEM GEOMDQL
5.3.3 Operadores Geogr´ aficos e Multidimensionais (SOLAP)
Para definirmos os operadores geogr´aficos e multidimensionais da linguagem GeoMDQL, seguimos a mesma l´ogica aplicada na defini¸c˜ao das fun¸c˜oes de agrega¸c˜ao de medidas espaciais, e detalhada no Cap´ıtulo 4. Assim, novos operadores foram definidos a partir da combina¸c˜ao das opera¸c˜oes pertencentes `as classes distributiva, alg´ebrica e hol´ıstica [135] com as opera¸c˜oes espaciais dadas em [246]. Os seguintes operadores s˜ao resultantes desta combina¸c˜ao:
Operador 16 (LowDistance).
Ordena um conjunto de membros em ordem crescente pela distˆancia em rela¸c˜ao a um determi- nado ponto. O terceiro parˆametro ´e opcional, e denota a quantidade de membros retornados na consulta. Quando este parˆametro ´e omitido, todos os membros s˜ao retornados. Por Exemplo, a instru¸c˜ao a seguir:
LowDistance( [Localizacao].[Estado].[Distrito Federal], 5, [Localizacao].[Estado].members), ´e utilizada em uma consulta para retornar somente as cinco menores distˆancias entre o Distrito Federal e os demais membros do n´ıvel Estado. < BooleanExpression > ´e outro parˆametro opcional, e representa o valor booleano que indica se a distˆancia entre os membros ´e ou n˜ao retornada. Quando omitido, o valor padr˜ao ´e falso, e a distˆancia n˜ao ´e retornada.
Sintaxe:
5.3 OPERADORES DA LINGUAGEM GEOMDQL 77
Tabela 5.1 Operadores GeoMDQL sobrecarregados da linguagem MDX
Operador Descri¸c˜ao Sintaxe
DrilldownLevel Realiza a opera¸c˜ao de Drill-Down sobre um conjunto de membros, que podem representar um n´ıvel em uma hierarquia geogr´afica
DrilldownLevel(<Set>| <MemberSet>)
DrilldownMember Aplica a opera¸c˜ao de Drill-Down ao conjunto de membros geogr´aficos definidos no primeiro parˆametro, que est˜ao no conjunto representado pelo segundo parˆametro.
DrilldownMember(<MemberSet>, <MemberSet>)
DrillupLevel Aplica a opera¸c˜ao de Drill-Up ou Roll-Up aos mem- bros pertencentes a um conjunto, que podem repre- sentar um n´ıvel em uma hierarquia geogr´afica.
DrillupLevel(<MemberSet>)
DrillupMember Aplica a opera¸c˜ao de Drill-Up ao conjunto de membros geogr´aficos definidos no primeiro parˆametro, que est˜ao no conjunto representado pelo segundo parˆametro.
DrillupMember(<MemberSet>, <MemberSet>)
Ancestor Retorna o ancestral de um membro em um deter- minado n´ıvel da hierarquia geogr´afica, representado pelo nome do n´ıvel (<LevelName>) ou por um valor num´erico (<NumericExpression>) correspondente ao ´ındice do n´ıvel na hierarquia
Ancestor(<MemberName>, <LevelName>) Ancestor(<MemberName>,
<NumericExpression>)
Descendants Recupera o conjunto de descendentes de um mem- bro geogr´afico, em todos os n´ıveis anteriores ou em um determinado n´ıvel da hierarquia, representado pelo nome do n´ıvel (<LevelName>) ou pelo seu ´ındice (<NumericExpression>). Descendants(<MemberName>) Descendants(<MemberNAme>, <LevelName>) Descendants(<MemberName>, <NumericExpression>) Ascendants Recupera o conjunto de membros ascendentes de um
determinado membro geogr´afico.
Ascendants(<MemberName>) Members Retorna o conjunto de membros pertencentes a um
determinado n´ıvel, representado por < LevelN ame >
< LevelName >.Members Children Retorna todos os filhos de um determinado membro
geogr´afico.
<MemberName>.Children Siblings Retorna todos os irm˜aos de um determinado membro
geogr´afico, pertencentes ao mesmo n´ıvel, incluindo ele pr´oprio.
5.3 OPERADORES DA LINGUAGEM GEOMDQL 78
[, < N umericExpression >],
< M emberSet > [, < BooleanExpression >])
Operador 17 (TopDistance).
´
E o inverso do operador LowDistance, ou seja, ordena os membros em ordem decrescente.
Operador 18 (RankArea ).
Este operador ´e utilizado para classificar um conjunto de membros geogr´aficos de acordo com o tamanho de sua ´area geogr´afica. O membro geogr´afico de maior ´area ocupa a primeira posi¸c˜ao.
Sintaxe:
RankArea(< M emberSet >)
Operador 19 (RankPerimeter ).
´
E utilizado para classificar um conjunto de membros geogr´aficos de acordo com o tamanho de seu per´ımetro. O membro geogr´afico de maior per´ımetro ocupa a primeira posi¸c˜ao.
Sintaxe:
RankPerimeter(< M emberSet >)
Operador 20 (RankLength ).
´
E utilizado para classificar um conjunto de membros geogr´aficos de acordo com o seu compri- mento. O membro geogr´afico de maior tamanho ocupa a primeira posi¸c˜ao.
Sintaxe:
RankLength(< M emberSet >)
Operador 21 (MaxArea ).
Dado um conjunto de membros geogr´aficos, ele retorna o membro de maior ´area geogr´afica.
Sintaxe:
MaxArea(< M emberSet >)
Operador 22 (MinArea ).
´
E o inverso do operador MaxArea.
Operador 23 (MaxPerimeter ).
Dado um conjunto de membros geogr´aficos, ele retorna o membro de maior per´ımetro.
Sintaxe:
MaxPerimeter(< M emberSet >)
Operador 24 (MinPerimeter ).
´
E o inverso do operador MaxPerimeter.
Operador 25 (MaxLength ).
Dado um conjunto de membros geogr´aficos, ele retorna o membro geogr´afico de maior compri- mento.
5.3 OPERADORES DA LINGUAGEM GEOMDQL 79
Sintaxe:
MaxLength(< M emberSet >)
Operador 26 (MinLength ).
Dado um conjunto de membros geogr´aficos, ele retorna o membro geogr´afico de menor compri- mento.
Sintaxe:
MinLength(< M emberSet >)
Operador 27 (AvgArea ).
Dado um conjunto de membros geogr´aficos, ele retorna o valor escalar correspondente `a m´edia das ´areas geogr´aficas dos membros.
Sintaxe:
AvgArea(< M emberSet >)
Operador 28 (AvgPerimeter ).
Retorna um valor escalar que corresponde ao valor m´edio dos per´ımetros dos membros ge- ogr´aficos passados como parˆametro.
Sintaxe:
AvgPerimeter(< M emberSet >)
Operador 29 (AvgLength ).
Retorna um valor escalar que corresponde ao comprimento m´edio de um conjunto de membros geogr´aficos.
Sintaxe:
AvgLength(< M emberSet >)
Operador 30 (MedianArea ).
Dado um conjunto de membros geogr´aficos, ele retorna o valor escalar correspondente ao valor mediano das ´areas geogr´aficas destes membros.
Sintaxe:
MedianArea(< M emberSet >)
Operador 31 (MedianPerimeter ).
Dado um conjunto de membros geogr´aficos, ele retorna o valor escalar correspondente ao valor mediano dos per´ımetros destes membros.
Sintaxe:
MedianPerimeter(< M emberSet >)
Operador 32 (MedianLength ).
5.3 OPERADORES DA LINGUAGEM GEOMDQL 80
mediano dos comprimentos destes membros.
Sintaxe:
MedianLength(< M emberSet >)
Operador 33 (ModeArea ).
Dado um conjunto de membros geogr´aficos, ele retorna o valor escalar correspondente ao valor modal (que aparece com mais freq¨uˆencia) das ´areas geogr´aficas destes membros.
Sintaxe:
ModeArea(< M emberSet >)
Operador 34 (ModePerimeter ).
Dado um conjunto de membros geogr´aficos, ele retorna o valor escalar correspondente ao valor modal dos per´ımetros destes membros.
Sintaxe:
ModePerimeter(< M emberSet >)
Operador 35 (ModeLength ).
Dado um conjunto de membros geogr´aficos, este operador retorna o valor escalar correspondente ao valor modal dos comprimentos destes membros.
Sintaxe:
ModeLength(< M emberSet >)
Tamb´em fazem parte do conjunto de operadores multidimensionais e geogr´aficos da lin- guagem GeoMDQL os operadores Drillout e Drillin, cujas defini¸c˜oes s˜ao dadas a seguir.
Operador 36 (Drillout ).
Retorna todos os membros que fazem divisa com um determinado membro geogr´afico, da mesma hierarquia de uma dimens˜ao geogr´afica. Quando presente na opera¸c˜ao,o segundo parˆametro (que pode ser true ou false) indica se as geometrias dos membros envolvidos s˜ao agrupadas ou n˜ao, podendo transformar o resultado em um ´unico objeto geogr´afico. O valor padr˜ao para este parˆametro ´e falso.
Sintaxe:
Drillout(< M emberN ame > [, < BooleanExpression >])
Operador 37 (Drillin).
Retorna todos os membros que est˜ao dentro de um determinado membro geogr´afico, presente na mesma hierarquia de uma dimens˜ao geogr´afica.
Sintaxe:
Drillin(< M emberN ame >)
GeoFilter estende o operador Filter da linguagem MDX, para a utiliza¸c˜ao de medidas ge- ogr´aficas e opera¸c˜oes espaciais sobre estas medidas. Assim, sua defini¸c˜ao e sintaxe s˜ao dadas como segue:
5.3 OPERADORES DA LINGUAGEM GEOMDQL 81
Operador 38 (GeoFilter ).
Realiza uma filtragem em um conjunto de membros, geogr´aficos ou n˜ao, atrav´es da aplica¸c˜ao de uma express˜ao l´ogica baseada em operadores espaciais (e.g. operadores topol´ogicos e cardinais - ver Cap´ıtulo 2). Dessa forma, o parˆametro < GeoLogicalExpression > pode assumir valores como: i) Area([M easures].[AreaLote]) > 2000, que retorna somente as medidas geogr´aficas que possuem ´area superior a 2000 metros quadrados; ii)AtNortOf([Measures].[AreaLote],POINT(- 47.7972315212149 -15.7811190610677))), que retorna somente as medidas que est˜ao localizadas ao norte de determinada geometria.
Sintaxe:
GeoFilter(< M emberSet >, < GeoLogicalExpression >)
Outro operador definido para a linguagem proposta nesta tese ´e o NGeoGrouping, cuja defini¸c˜ao ´e dada abaixo:
Operador 39 (NGeoGrouping ).
Possui caracter´ısticas de minera¸c˜ao de dados, e quando aplicado a um conjunto de medidas geogr´aficas, ele as organiza em N agrupamentos. O primeiro parˆametro deste operador ´e o nome de um membro geogr´afico ou conjunto de membros geogr´aficos, que definem o contexto do agrupamento. O segundo parˆametro informa quantos agrupamentos dever˜ao ser criados, enquanto o ´ultimo parˆametro indica o nome da medida geogr´afica que ter´a seus valores agrupados. Por exemplo, a instru¸c˜ao em GeoMDQL
NGeoGrouping([Localizacao].[Estado].[PERNAMBUCO],50,[Measures].[TotalCasos]) define que todas os casos de dengue localizados no estado de Pernambuco devem ser organizados em cinq¨uenta grupos.
Sintaxe:
NGeoGrouping(< M emberN ame > | < MemberSet >, < NumericalExpression >, < GeoM easure >)
Para encontrar os vizinhos mais pr´oximos de um determinado local, ou de um membro geogr´afico, a linguagem GeoMDQL conta com o operador NNearestNeighbor, definido abaixo.
Operador 40 (NNNeighbors).
Este operador, quando aplicado a um conjunto de medidas geogr´aficas, retorna as N medidas mais pr´oximas de um determinado local. O primeiro parˆametro deve ser o nome de um mem- bro geogr´afico, ou um conjunto de membros. O segundo parˆametro, indica quantos vizinhos s˜ao retornados, enquanto o terceiro corresponde ao nome da medida geogr´afica envolvida na consulta. Por fim, o quarto parˆametro, representa a geometria de referˆencia usada na an´alise. Por exemplo, a instru¸c˜ao em GeoMDQL:
NNNeighbors([Localizacao].[Estado].[PERNAMBUCO], 150,