Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
select m.nome_munic
from munbrasil m, microbrasil mb
where (ST_CONTAINS(mb.geom, m.geom) or ST_COVERS(mb.geom, m.geom))
and mb.nome_micro = 'Blumenau'
2.
select m.nome_munic
from munbrasil m, microbrasil mb
where ST_TOUCHES(mb.geom, m.geom)
and mb.nome_micro = 'Blumenau'
3.
select m.nome_munic, mb2.nome_micro
from munbrasil m, microbrasil mb1, microbrasil mb2
where ST_TOUCHES(mb1.geom, m.geom)
and ST_CONTAINS(mb2.geom, m.geom)
and mb1.nome_micro = 'Blumenau'
order by m.nome_munic
4.
select m.nome_munic, m.sigla
from munbrasil m, rodovia_br r
where r.sigla = 'BR-101'
and ST_INTERSECTS(m.geom, r.geom)
5.
select nome_localidade
from munbrasil m, localidade l
where ST_CONTAINS(m.geom, l.geom)
and m.nome_munic = 'Praia Norte'
6.
select m.nome_munic, count(*) as c
from localidade l, munbrasil m
where ST_CONTAINS(m.geom, l.geom)
GROUP BY m.nome_munic
ORDER BY c DESC
LIMIT 1
7.
select distinct m.nome_munic
from munbrasil m, rodovia_br r
where ST_INTERSECTS(m.geom, r.geom)
and m.sigla = 'MG'
order by m.nome_munic
8.
select distinct m.nome_micro
from microbrasil m, rio r
where ST_INTERSECTS(m.geom, r.geom)
and r.nome_rio_completo = 'Rio das Velhas'
order by m.nome_micro
9.
select distinct r.sigla
from rodovia_br r, rio, estado e
where ST_INTERSECTS(r.geom, rio.geom)
and ST_INTERSECTS(rio.geom, e.geom)
and rio.cod_curso_dagua = '74'
A consulta abaixo usa o ndice (operador <->) APENAS na hora da ordenao dos resultados
por distncia ao ponto de referncia. Esse operador retorna a distncia entre
os retngulos envolventes mnimos dos objetos, mas no caso os objetos so pontos,
e portanto os REM so pontuais tambm. Haveria erro se os objetos envolvidos
fossem linhas ou polgonos. O mtodo tambm no retorna o VALOR da distncia, pois
no usa a projeo para calcul-lo. Se for necessrio ter esse valor, incluir o
comando ST_DISTANCE na linha do SELECT.
select a.municipio
from sede_munbrasil a, localidade b
where b.nome_localidade = 'EPITACIOLNDIA'
order by a.geom <-> b.geom
LIMIT 10
O mtodo tambm no retorna o VALOR da distncia, pois
no usa a projeo para calcul-lo, e sim a distncia entre retngulos.
Se for necessrio ter esse valor, incluir o comando ST_DISTANCE na linha do SELECT.
select a.municipio, ST_DISTANCE_SPHEROID(a.geom, b.geom,
'SPHEROID["WGS 84",6378137,298.257223563]') / 1000
from sede_munbrasil a, localidade b
where b.nome_localidade = 'EPITACIOLNDIA'
order by a.geom <-> b.geom
LIMIT 10
Existem diversas implementaes de funes de N vizinhos mais prximos, com
caractersticas variadas. Por exemplo, pode-se usar a funo ST_DWITHIN para
limitar o nmero de candidatos soluo, mas isso implica em estimar uma distncia
dentro da qual existam, garantidamente, N vizinhos. Outras solues funcionam
interativamente, com um raio de busca que aumenta progressivamente.
18.
(
select l.nome_localidade
from rodovia_br r, localidade l
where ST_DWITHIN (
st_transform(r.geom, 29193),
st_transform(l.geom, 29193),
20000)
and r.sigla = 'BR-040'
)
UNION
(
select s.municipio
from rodovia_br r, sede_munbrasil s
where ST_DWITHIN (
st_transform(r.geom, 29193),
st_transform(s.geom, 29193),
20000)
and r.sigla = 'BR-040'
)
Obs.: esta consulta exige a transformao do SRID para UTM, onde se pode especificar
a distncia em metros.
19.
select st_area(st_transform(geom, 29190))
from
(
26.
create view estado_sf as
(
select distinct e.*
from estado e, rio r
where st_intersects(e.geom,r.geom)
and r.cod_curso_dagua = '74'
)
27.
select e.sigla, sum(st_length(st_transform(r.geom, 29193)))/1000
from rio r, estado e
where st_intersects(r.geom, e.geom)
and r.cod_curso_dagua = '74'
group by e.sigla
28.
create table temp as
(
select st_union(
st_geometryfromtext(
st_astext(
st_buffer(
st_geographyfromtext(
astext(geom)), 50000))))
from sede_munbrasil
)
29.
select st_area(st_difference(a.geom, b.geom)) / st_area(a.geom)
from
(select st_union(e.geom) as geom
from estado e) as a,
(select st_union(st_buffer(s.geom, 0.5)) as geom
from sede_munbrasil s
) as b
30.
Obs.: A funo ST_AsKML do PostGIS coloca em formato KML a geometria de CADA objeto
passado como parmetro.
O arquivo KML propriamente dito requer algumas linhas de header e de fechamento
para que esteja bem formado.
O script abaixo cria uma funo que acrescenta essas linhas saida de ST_AsKML
-- Function: public.askml(text, text, geometry)
-- DROP FUNCTION public.askml(text, text, geometry);
CREATE OR REPLACE FUNCTION public.askml(name text, description text, the_geom geometry)
RETURNS text AS
$BODY$
DECLARE
result text;
BEGIN
result := '<?xml version=''1.0'' encoding=''UTF-8''?>' || E'\n' ||
'<kml xmlns=''http://earth.google.com/kml/2.1''>' || E'\n' ||
'<Document>' || E'\n' ||
Uso:
select askml('cid', 'pequenas cidades', collect(geom))
from sede_munbrasil s, popbrasil p
where pop2010 <= 5000
and s.cod7 = p.mun
A funo collect rene todas as geometrias das cidades em uma s, para figurar
no interior do arquivo KML, impedindo que o script coloque um header e um footer
em cada objeto individual.