1 / 61

Banco de Dados Espaciais

Banco de Dados Espaciais. Sistema de Informações Geográficas 2006.2 Prof. Cláudio Baptista. Oracle Spatial. Provê um esquema SQL e funções que facilitam o armazenamento, recuperação, atualização, e consulta de coleções de feições espaciais num Oracle database.

kert
Download Presentation

Banco de Dados Espaciais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Banco de Dados Espaciais Sistema de Informações Geográficas 2006.2 Prof. Cláudio Baptista

  2. Oracle Spatial • Provê um esquema SQL e funções que facilitam o armazenamento, recuperação, atualização, e consulta de coleções de feições espaciais num Oracle database. • Um geo-objeto é definido como um atributo de tipo SDO_GEOMETRY (antigo MDSYS.SDO_GEOMETRY) de uma tabela OR. • Consiste dos seguintes componentes: • Um esquema MDSYS que provê o tipo de dado geométrico; • Um mecanismo de indexação espacial; • Um conjunto de operadores e funções para executar consultas espaciais, junções espaciais e outras operações de análise espacial; • Utilitários administrativos

  3. Oracle Spatial • Modelo de dados • Element (point, polygon, linestring) • Geometria (geometry object): representação de uma feição espacial modelado com um conjunto de elementos primitivos. • Layer: coleção de geometrias com o mesmo conjunto de atributos • Coordinate System (também chamado Spatial Reference System) • Tolerance: reflete a distância que dois pontos podem estar para ainda serem considerados o mesmo ponto (útil em correção de erro).

  4. Oracle Spatial – Operações Espaciais • SDO_RELATE: usa um critério espacial, implementando o modelo de 9-interseções, com os relacionamentos topológicos (disjoint, touches, equals, inside, etc.) • SDO_WITHIN_DISTANCE: implementa um buffer. Indica se geo-objetos estão a uma certa distância um do outro • SDO_NN: indica os vizinhos mais próximos (Nearest Neghbor) de um geo-objeto.

  5. Oracle Spatial – Operações Espaciais • SDO_RELATE- Operadores topológicos • DISJOINT : as bordas e interiores não se interceptam • TOUCH: as bordas interceptam mais os interiores não. • OVERLAPBDYDISJOINT – uma linha origina-se for a de um polígono mas termina dentro • OVERLAPBDYINTERSECT – insterseção de borda com interior • EQUAL – dois objetos têm a mesma borda e mesmo interior. • CONTAINS – o interior e borda de um objeto está completamente contido no interior do outro objeto. • COVERS -- o interior de um objeto está completamente contidono interior ou borda de outro objeto e suas bordas se interceptam. • INSIDE – o oposto de CONTAINS. A INSIDE B implica que B CONTAINS A. • COVEREDBY – o oposto de COVERS • ON -- o interior e borda de um objeto está na borda de outro objeto ( e o segundo objeto cobre o primeiro objeto). Por exemplo, quando uma linha está na borda de um polígono. • ANYINTERACT – os objetos são non-disjoint

  6. Oracle Spatial – Operações Espaciais

  7. Oracle Spatial – Tipos de Dados Espaciais • O tipo SDO_Geometry é definido como: CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY); CREATE TYPE sdo_point_type AS OBJECT ( X NUMBER, Y NUMBER, Z NUMBER); CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER; CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER; • Existem outros tipos para lidar com GeoRaster, GeoCoding e Topologia e Redes

  8. Oracle Spatial – Tipos de Dados Espaciais • O atributo SDO_GTYPE indica o tipo da geometria (segue OGC Simple Feature for SQL. Possui 4 dígitos no formato dltt, onde • d: indica o número de dimensões (2, 3 ou 4) • l: usado em geometrias 3-dimensões. Colocar 0 para default. • tt: indica o tipo da geometria (00 a 07) (00 – Unknown geometry, 01 – Point, 02 – Line ou Curve, 03 – Polygon, 04 – Collection, 05 – MultiPoint, 06 – MultiLine, 07 – MultiPolygon • Ex. 2003 => Polígono em 2-dimensões

  9. Oracle Spatial – Tipos de Dados Espaciais • O atributo SDO_SRID identifica um sistema de coordenadas (spatial reference system) para geometria. Se não null, deve conter um valor da coluna SRID da tabela MDSYS.CS_SRS • Todos os valores de uma geometria devem ter o mesmo SRID

  10. Oracle Spatial – Tipos de Dados Espaciais • O atributo SDO_POINT é do tipo SDO_POINT_TYPE que possui 3 number X,Y,Z: • OBS.: usado para armazenar pontos, neste caso os arrays SDO_ELEM_INFO e SDO_ORDINATES devem ser null

  11. Oracle Spatial – Tipos de Dados Espaciais • SDO_ELEM_INFO : é um vetor de tamanho variável que armazena as características dos elementos que compõem a geometria. As coordenadas de cada elemento são armazenadas em um vetor variável chamado SDO_ORDINATES e são interpretadas através de três números armazenados no SDO_ELEM_INFO: • SDO_STARTING_OFFSET: indica qual a posição da primeira coordenada do elemento no SDO_ORDINATES; • SDO_ETYPE: indica o tipo do elemento; • SDO_INTERPRETATION: indica como o elemento deve ser interpretado juntamente com o SDO_ETYPE. • SDO_ORDINATES: contém os pontos que compõem a geometria

  12. Oracle Spatial – Tipos de Dados Espaciais • Exemplo: Para o retângulo ao lado: • SDO_GEOMETRY: • SDO_GTYPE = 2003 ( 2 indica 2-dimensões, e 03 indica um polígono. • SDO_SRID = NULL. • SDO_POINT = NULL. • SDO_ELEM_INFO = (1, 1003, 3). O último 3 indica que é um retângulo. • SDO_ORDINATES = (1,1, 5,7). Identificam as coordenadas lower-left e upper-right do retângulo.

  13. Oracle Spatial – Tipos de Dados Espaciais • Comando SQL para o ex. do retângulo: INSERT INTO cola_markets VALUES( 1, 'cola_a', SDO_GEOMETRY( 2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior) SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to -- define rectangle (lower left and upper right) with -- Cartesian-coordinate data ) );

  14. Oracle Spatial – Tipos de Dados Espaciais • Ex2: Figure 2-3 Polygon with a Hole

  15. Oracle Spatial – Tipos de Dados Espaciais • Para o Ex2 temos: • SDO_GTYPE = 2003. O 2 indica 2-dimensões, e o 3 indica um polígono. • SDO_SRID = NULL. • SDO_POINT = NULL. • SDO_ELEM_INFO = (1,1003,1, 19,2003,1). Há duas triplas: 1,1003,1 e 19,2003,1. • 1003 indica que o elementoé um exterior polygon ring; 2003 indica que elemento é um interior polygon ring. • 19 indica que a coordenada do segundo elemento (interior polygon ring) inicia na 19a. Posição do array SDO_ORDINATES array (isto é, 7, ou seja o primeiro ponto é 7,5). • SDO_ORDINATES = (2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4, 7,5, 7,10, 10,10, 10,5, 7,5).

  16. Oracle Spatial – Tipos de Dados Espaciais • Comando SQL para o EX2.: INSERT INTO cola_markets VALUES( 10, 'polygon_with_hole', SDO_GEOMETRY( 2003, -- two-dimensional polygon NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), -- polygon with hole SDO_ORDINATE_ARRAY(2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4, 7,5, 7,10, 10,10, 10,5, 7,5) ) );

  17. Oracle Spatial – Tipos de Dados Espaciais • Ex.3: Ponto • SDO_GEOMETRY: • SDO_GTYPE = 2001. O 2 indica 2-dimensões, e o 1 indica um único ponto. • SDO_SRID = NULL. • SDO_POINT = SDO_POINT_TYPE(12, 14, NULL). O atributo SDO_POINT é definedo usando o SDO_POINT_TYPE object type, porque esta é uma geometria de ponto. • SDO_ELEM_INFO e SDO_ORDINATES são ambos NULL.

  18. Oracle Spatial – Tipos de Dados Espaciais • Comando SQL para o Ex.3: Ponto INSERT INTO cola_markets VALUES( 90, 'point_only', SDO_GEOMETRY( 2001, NULL, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL));

  19. Oracle Spatial – Metadados • Existem duas visões no esquema MDSYS: • USER_SDO_GEOM_METADATA contém metadata para todas as tabelas espaciais possuidas pelo esquema do usuário. Cada coluna espacial deve ter uma linha inserida nesta view. • ALL_SDO_GEOM_METADATA contém metadata para todas tabelas espaciais nas quais o usuário tem permissão SELECT. • Existem também metadados para index: USER_SDO_INDEX_METADATA e ALL_SDO_INDEX_INFO

  20. Oracle Spatial – Metadados • A visão tem a seguinte estrutura: ( TABLE_NAME VARCHAR2(32), COLUMN_NAME VARCHAR2(32), DIMINFO SDO_DIM_ARRAY, SRID NUMBER );

  21. Oracle Spatial – Metadados • TABLE_NAME: contém o nome da tabela • COLUMN_NAME: nome da coluna do tipo SDO_GEOMETRY • DIMINFO: é um array de tamanho variável de um object type, ordenado por dimension, e tem uma entrada para cada dimensão. • Definido da seguinte forma: Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT; Create Type SDO_DIM_ELEMENT as OBJECT ( SDO_DIMNAME VARCHAR2(64), SDO_LB NUMBER, SDO_UB NUMBER, SDO_TOLERANCE NUMBER); • SRID: Sistema de referência espacial

  22. Oracle Spatial – Metadados • Exemplo: INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'cola_markets', 'shape', SDO_DIM_ARRAY( -- 20X20 grid SDO_DIM_ELEMENT('X', 0, 20, 0.005), SDO_DIM_ELEMENT('Y', 0, 20, 0.005) ), NULL -- SRID );

  23. Oracle Spatial - Exemplos • Dos distritos de São Paulo, mostrados na fig ao lado CREATE TABLE DistritosSP ( cod NUMBER(32) NOT NULL , sigla VARCHAR2(20), denominacao VARCHAR2(200), spatial_data MDSYS.SDO_GEOMETRY, PRIMARY KEY (cod))

  24. Oracle Spatial - Exemplos • Dos bairros de São Paulo, mostrados na fig ao lado. CREATE TABLE BairrosSP ( geom_id NUMBER(32) NOT NULL, bairro VARCHAR2(200), distr VARCHAR2(200), spatial_data MDSYS.SDO_GEOMETRY, PRIMARY KEY (geom_id))

  25. Oracle Spatial - Exemplos • Do mapa de drenagem, mostrado na fig. ao lado. CREATE TABLE DrenagemSP ( geom_id NUMBER(32) NOT NULL, classe VARCHAR2(100) NULL, spatial_data MDSYS.SDO_GEOMETRY, PRIMARY KEY (geom_id))

  26. Oracle Spatial - Exemplos • Inserindo dados: INSERT INTO DistritosSP (cod, sigla, denominacao, spatial_data) VALUES (1, 'VMR', 'VILA MARIA' MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY( 1, 1003, 1 ), MDSYS.SDO_ORDINATE_ARRAY(6,10, 10,1, 14,10, 10,14, 6,10))) OBS.: Num polígono o primeiro ponto é igual ao último

  27. Oracle Spatial - Exemplos • INSERT INTO DrenagemSP ( geom_id, classe, spatial_data) VALUES (1, 'RIO', MDSYS.SDO_GEOMETRY(2002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY( 1, 2, 1 ), MDSYS.SDO_ORDINATE_ARRAY(10,10, 10,14, 6,10, 14,10))) • INSERT INTO BairrosSP ( geom_id, bairro, distr, spatial_data) VALUES ( 1, 'JARDIM SHANGRILA', 'GRAJAU' MDSYS.SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(32.628, 736.944, NULL ), NULL, NULL))

  28. Oracle Spatial - Exemplos • Após criar e inserir os dados em uma tabela espacial, o usuário deve registrar seu metadado. INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'DistritosSP' ,'spatial_data' , MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',275.9670,429.567,0.0005), MDSYS.SDO_DIM_ELEMENT('Y',833.0355,582.15,0.0005)), NULL)

  29. Oracle Spatial - Exemplos • Criando índices (RTREE): CREATE INDEX index_name ON table_name (spatial_column_name) INDEXTYPE IS MDSYS.SPATIAL_INDEX; Exemplo: CREATE INDEX DistritosSP_IDX ON DistritosSP(SPATIAL_DATA) INDEXTYPE IS MDSYS.SPATIAL_INDEX

  30. Oracle Spatial - Consultas • O Oracle Spatial utiliza um modelo de consulta baseado em duas etapas, chamadas de primeiro e segundo filtro. • O primeiro filtro considera as aproximações das geometrias, pelo critério do mínimo retângulo envolvente (MBR), para reduzir a complexidade computacional. Este filtro é de baixo custo computacional e seleciona um subconjunto menor de geometrias candidatas, que será passado para o segundo filtro. • O segundo filtro trabalha com as geometrias exatas, por isso é computacionalmente mais caro e só é aplicado ao subconjunto resultante do primeiro filtro. Retorna o resultado exato da consulta.

  31. Oracle Spatial - Consultas • Principais operadores: • SDO_FILTER: Implementa o primeiro filtro do modelo de consulta, ou seja, verifica se os mínimos retângulos envolventes das geometrias têm alguma interação entre si. Sintaxe: SDO_FILTER (geometry1 SDO_GEOMETRY,geometry2 SDO_GEOMETRY) • SDO_RELATE Avalia se as geometrias possuem uma determinada relação topológica. Sintaxe: SDO_RELATE (geometry1 SDO_GEOMETRY, geometry2 SDO_GEOMETRY,param VARCHAR2). Param pode serEQUAL, DISJOINT, TOUCH, INSIDE, COVERS, COVERREDBY, OVERLAPBDYINTERSECT, ON, CONTAINS, OVERLAPBDYDISJOINT e ANYINTERACT • SDO_WITHIN_DISTANCE: Verifica se duas geometrias estão dentro de uma determinada distância. Sintaxe: SDO_WITHIN_DISTANCE (geometry1 SDO_GEOMETRY, aGeom SDO_GEOMETRY,params VARCHAR2); • SDO_NN: Identifica os n vizinhos mais próximos de uma • Geometria. Sintaxe: SDO_NN (geometry1 SDO_GEOMETRY, • aGeom SDO_GEOMETRY, param VARCHAR2, [, number NUMBER]);

  32. Oracle Spatial - Consultas • As funções fornecidas pelo Spatial podem ser agrupadas em: • Relação (verdadeiro/falso) entre duas geometrias: RELATE e WITHIN_DISTANCE. • Validação: VALIDATE_GEOMETRY_WITH_CONTEXT, VALIDATE_LAYER_WITH_CONTEXT. • Operações sobre uma geometria: SDO_ARC_DENSIFY, SDO_AREA, SDO_BUFFER, SDO_CENTROID, SDO_CONVEXHULL, SDO_LENGTH, SDO_MAX_MBR_ORDINATE, SDO_MIN_MBR_ORDINATE, SDO_MBR, SDO_POINTONSURFACE. • Operações sobre duas geometrias: SDO_DISTANCE, SDO_DIFFERENCE, SDO_INTERSECTION, SDO_UNION, SDO_XOR.

  33. Oracle Spatial - Consultas • Consulta 1: Recuperar o nome de todos os municípios da grande São Paulo que são vizinhos ao município de São Paulo. SELECT t1.nomemunicp FROM MunicipiosSP t1, MunicipiosSP t2 WHERE SDO_RELATE (t1.spatial_data, t2.spatial_data, 'mask=TOUCH') = 'TRUE' AND t2.nomemunicp = 'SAO PAULO' Ou, usando o operador TOUCH diretamente: SELECT t1.nomemunicp FROM MunicipiosSP t1, MunicipiosSP t2 WHERE SDO_TOUCH (t1.spatial_data, t2.spatial_data) = 'TRUE' AND t2.nomemunicp = 'SAO PAULO'

  34. Oracle Spatial - Consultas • Consulta 2: Recuperar o nome de todos os municípios da grande São Paulo que são vizinhos ao distrito Anhanguera da cidade de São Paulo SELECT t1.nomemunicp FROM MunicipiosSP t1, DistritosSP t2 WHERE SDO_RELATE (t1.spatial_data, t2.spatial_data, 'mask= TOUCH') = 'TRUE' AND t2.denominacao = 'ANHANGUERA' Ou usando TOUCH: SELECT t1.nomemunicp FROM MunicipiosSP t1, DistritosSP t2 WHERE SDO_TOUCH (t1.spatial_data, t2.spatial_data) = 'TRUE' AND t2.denominacao = 'ANHANGUERA'

  35. Oracle Spatial - Consultas • Consulta 3:Recuperar o número de bairros contidos no distrito Grajaú SELECT COUNT(*) FROM BairrosSP t1, DistritosSP t2 WHERE SDO_RELATE (t1.spatial_data, t2.spatial_data, 'mask=INSIDE') = 'TRUE' AND t2.denominacao = 'GRAJAU' Ou usando SDO_INSIDE: SELECT COUNT(*) FROM BairrosSP t1, DistritosSP t2 WHERE SDO_INSIDE (t1.spatial_data, t2.spatial_data) = 'TRUE' AND t2.denominacao = 'GRAJAU'

  36. Oracle Spatial - Consultas • Consulta 4: Recuperar todos os distritos que estão num raio de 3km de um determinado rio SELECT t1.denominacao FROM DistritosSP t1, DreanagemSP t2, user_sdo_geom_metadata m WHERE SDO_RELATE (t1.spatial_data, SDO_GEOM.SDO_BUFFER(t2.spatial_data, m.diminfo, 3000), 'mask=INSIDE+TOUCH+ OVERLAPBDYINTERSECT') = 'TRUE' AND m.table_name = ' DreanagemSP ' AND m.column_name = 'spatial_data' AND t2.geom_id = 55

  37. Oracle Spatial - Consultas • Consulta 5: Recuperar todos os bairros que estejam a menos de 3 Km do bairro Boacava SELECT t1.BAIRRO FROM BairrosSP t1, BairrosSP t2 WHERE SDO_GEOM.SDO_DISTANCE (t1.spatial_data, t2.spatial_data, 0.00005) < 3000 AND t2.bairro = 'BOACAVA'

  38. Oracle Spatial – Outras Características • GeoRaster: para lidar com dados raster • GeoCoding: endereçamento reverso • Spatial Topology and Network • Spatial Analysis and Mining

  39. PostGIS-PostgreSQL • PostGIS é uma extensão espacial para o PostgreSQL que implementa a especificação padrão OGC • Tipos de dados PostGIS:

  40. PostGIS-PostgreSQL • Esses tipos possuem a seguinte representação textual: • Point: (0 0 0) • LineString: (0 0, 1 1, 2 2) • Polygon: ((0 0 0, 4 0 0, 4 4 0, 0 4 0, 0 0 0), ( 1 0 0, ...), ...) • MultiPoint: (0 0 0, 4 4 0) • MultiLineString: ((0 0 0, 1 1 0, 2 2 0), (4 4 0, 5 5 0, 6 6 0)) • MultiPolygon: (((0 0 0, 4 0 0, 4 4 0, 0 4 0, 0 0 0), (...), ...), ...) • GeometryCollection: (POINT(2 2 0), LINESTRING((4 4 0, 9 9 0))

  41. PostGIS-PostgreSQL Dos distritos de São Paulo, CREATE TABLE distritossp ( cod SERIAL, sigla VARCHAR(10), denominacao VARCHAR(50), PRIMARY KEY (cod) ); SELECT AddGeometryColumn(‘BDEspacial', 'distritossp', 'spatial_data', -1, 'POLYGON', 2);

  42. PostGIS-PostgreSQL • Adicione uma coluna espacial à tabela usando a função OpenGIS "AddGeometryColumn". • A sintaxe é: AddGeometryColumn(<schema_name>, <table_name>, <column_name>, <srid>, <type>,<dimension>) • Ou, usando o esquema corrente: AddGeometryColumn(<table_name>, <column_name>, <srid>, <type>,<dimension>) • Exemplo1: SELECT AddGeometryColumn(’public’, ’roads_geom’, ’geom’, 423, ’LINESTRING’, 2) • Exemplo2: SELECT AddGeometryColumn( ’roads_geom’, ’geom’, 423, ’LINESTRING’, 2)

  43. PostGIS-PostgreSQL • Dos bairros de São Paulo CREATE TABLE bairrossp ( cod SERIAL, bairro VARCHAR(40), distr VARCHAR(40), PRIMARY KEY (cod)); SELECT AddGeometryColumn(‘BDEspacial', 'bairrossp', 'spatial_data', -1, 'POINT', 2);

  44. PostGIS-PostgreSQL • Do mapa de drenagem CREATE TABLE drenagemsp ( cod SERIAL, classe VARCHAR(255) NULL, PRIMARY KEY (cod) ); SELECT AddGeometryColumn(‘BDEspacial', 'drenagemsp', 'spatial_data', -1, 'LINESTRING', 2);

  45. PostGIS-PostgreSQL • Tabela de metadados

  46. The Well-Known Text representation of the Spatial Reference System. An example of a WKTnSRS representation is: PROJCS["NAD83 / UTM Zone 10N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101] ], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433] ], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",-123], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1] ]

  47. PostGIS-PostgreSQL • Tabela de metadados Geometry_Columns

  48. PostGIS-PostgreSQL – Inserção de Dados INSERT INTO bairrossp (bairro, spatial_data) VALUES('JARDIM DOS EUCALIPTOS', GeometryFromText('POINT(321588.628426 7351166.969244)', -1)); INSERT INTO drenagemsp (classe, spatial_data)VALUES('RIOS', GeometryFromText('LINESTRING(344467.895137 7401824.476217, 344481.584686 7401824.518728, 344492.194756 7401825.716359, …)’, -1)); INSERT INTO distritossp (denominacao, sigla, spatial_data) VALUES('MARSILAC', ‘MAR’, GeometryFromText('POLYGON((335589.530575 7356020.721956, 335773.784959 7355873.470174, …))', -1));

  49. PostGIS-PostgreSQL – Inserção de Dados Carregando dados de um Shapefile: # shp2pgsql shaperoads myschema.roadstable | psql -d roadsdb

  50. PostGIS-PostgreSQL – Index • Sintaxe: CREATE INDEX sp_idx_name ON nome_tabela USING GIST (coluna_geometrica GIST_GEOMETRY_OPS); • Exemplos: CREATE INDEX sp_idx_bairros ON bairrossp USING GIST (SPATIAL_DATA GIST_GEOMETRY_OPS) CREATE INDEX sp_idx_bairros ON distritossp USING GIST (SPATIAL_DATA GIST_GEOMETRY_OPS)

More Related