Advertisement
Guest User

Untitled

a guest
Jul 7th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Exerc�cios feitos em sala de aula, usando alguns dados importados do IBGE
  2. --Alguns dados foram digitalizados utilizando a ferramenta QGIS como o layer de ferrovias
  3. --Sistema de coordenadas ou SRID utilizado 4326 WGS84
  4.  
  5. --Mudando o sistema de coordenadas
  6. UPDATE municipios SET geom = ST_SetSRID(geom,4326);
  7. UPDATE malha_viaria SET geom = ST_SetSRID(geom,4326);
  8. UPDATE principais_cidades SET geom = ST_SetSRID(geom,4326);
  9. UPDATE ferrovias SET geom = ST_SetSRID(geom,4326);
  10.  
  11.  
  12. --1) Quais as rodovias que tocam SP-461
  13. drop table temp_toca_sp461
  14. create table temp_toca_sp461 as
  15. select b.* from malha_viaria a, malha_viaria b
  16. where a.nm_sigla = 'SP-461' AND
  17. ST_TOUCHES(a.geom,b.geom);
  18.  
  19. --2) Quais sao os trechos de rodovias ligadas pelas ferrovias cadastras
  20. create table temp_exercicio2 as
  21. SELECT b.* FROM ferrovias f, malha_viaria b
  22. WHERE ST_intersects(f.geom, b.geom);
  23.  
  24. --3) Quais municipios fazem divisa com o municipio de ADAMANTINA ?
  25.  
  26. create table temp_exercicio3 as
  27. SELECT b.* FROM municipios a, municipios b
  28. WHERE a.nm_municip = 'ADAMANTINA'
  29. AND b.nm_municip <> 'ADAMANTINA'
  30. AND ST_intersects(a.geom,b.geom);
  31.  
  32. --4) Criando tabela para cadastramento e georeferenciamento de ferrovias
  33. CREATE TABLE ferrovias (
  34.  gid serial primary key,
  35.  nome varchar(20),
  36.  geom geometry(LINESTRING)
  37. );
  38.  
  39.  
  40. --############################################################################################################
  41. --Exerc�cio para classe - Baseando-se nas consultas abaixo com os dados do IBGE importados na Aula1 para o PostgreSQL + PostGIS
  42. --Criar 3 consulta usando as camadas que importamos em sala de aula
  43. --Colocar no email o arquivo SQL com as 3 consultas e o nome do aluno
  44. --E-mail jairodealmeida@gmail.com
  45. --############################################################################################################
  46.  
  47.  
  48.  
  49. -- 5) Adicionando coluna espacial
  50. SELECT AddGeometryColumn
  51. ('public','municipios','centroid',4326,'POINT',2);
  52. select * from municipios  limit 5
  53. UPDATE municipios SET centroid = ST_CENTROID(geom);
  54.  
  55.  
  56. --6) Qual a quantidade de vias(malhas_viarias)
  57. --totalmente contidas no municipio de ADAMANTINA?
  58. SELECT a.nm_municip,
  59. count(b.*) as quantidade
  60. FROM municipios a,malha_viaria b
  61. WHERE ST_Contains(a.geom,b.geom)
  62. AND a.nm_municip in ('ADAMANTINA')
  63. GROUP BY a.nm_municip
  64. ORDER BY quantidade;
  65.  
  66. -- 7) Qual o total de vias pavimentadas no municipio de ROSANA
  67. create table temp_exercicio7 as
  68. select a.* quantidade
  69. FROM malha_viaria a,municipios b
  70. WHERE b.nm_municip='ROSANA'
  71. AND a.cd_tipo_pa='pavimentada'
  72. AND st_intersects(a.geom, b.geom);
  73.  
  74. -- 8) Quais sao as malhas_viarias em pavimentacao
  75. --do estado de sao paulo
  76. create table temp_exercicio8 as
  77. SELECT b.*
  78. FROM unidade_federativa a, malha_viaria b
  79. WHERE a.nm_estado = 'SÃO PAULO'
  80. AND cd_tipo_pa='em pavimentacao'
  81. AND a.geom && b.geom;
  82.  
  83. -- 9) Vendo a projeção em SAD69
  84. select * from spatial_ref_sys where srid = 29101
  85.  
  86. -- 11) Qual a distancia entre as cidades de Assis e Campinas
  87. SELECT
  88. ST_Distance(
  89.     ST_Transform(a.geom,31983),
  90.     ST_Transform(b.geom,31983)
  91.     )/1000 distancia_km
  92. FROM principais_cidades a, principais_cidades b
  93. WHERE a.nm_nome = 'Assis' AND b.nm_nome = 'Campinas'
  94. limit 1;
  95.  
  96. -- 12) Mudando o sistema de coordenadas
  97. UPDATE manchas_urbanas SET geom = ST_SetSRID(geom,4674);
  98.  
  99. SELECT UpdateGeometrySRID('manchas_urbanas','geom',4326);
  100.  
  101. select ST_SRID(geom) from manchas_urbanas
  102.  
  103. -- 12) Resultado as manchas urbanas em hectares
  104. SELECT m.nome ,
  105. ST_AREA(m.geom,true) / 10000 hectares
  106. FROM manchas_urbanas m;
  107.  
  108. -- 13) Quais são as cidades mais proximas a cidade de Campinas?
  109. SELECT  a.nm_nome,
  110.     ST_Distance(
  111.         ST_Transform(a.geom,31983),
  112.         ST_Transform(b.geom,31983)
  113.     )/1000 AS distancia
  114. FROM principais_cidades a, principais_cidades b
  115. WHERE b.nm_nome = 'Campinas'
  116. AND a.nm_nome <> 'Campinas'
  117. ORDER BY distancia ASC
  118. LIMIT 6;
  119.  
  120. -- 14) Quais são as cidades localizadas num raio de até 50
  121. --quilometros do Município de Campinas?
  122. SELECT  b.nm_nome
  123. FROM municipios a,principais_cidades b
  124. WHERE a.nm_municip = 'CAMPINAS'
  125. AND ST_Distance(
  126.     ST_Transform(b.geom, 31983),
  127.     ST_Transform(a.geom,31983))/1000 <= 50;
  128.  
  129. create table temp_exercicio14 as
  130. SELECT b.nm_nome, b.geom
  131. FROM municipios a,principais_cidades b
  132. WHERE a.nm_municip = 'CAMPINAS'
  133. AND ST_DWITHIN(
  134.     ST_Transform(b.geom, 31983),
  135.     ST_Transform(a.geom,31983),
  136.     50*1000);
  137.  
  138. create table temp_exercicio14_buffer as    
  139. SELECT ST_Buffer(
  140.     ST_Transform(a.geom,31983),
  141.     50*1000)
  142. FROM municipios a
  143. WHERE a.nm_municip = 'CAMPINAS';
  144.  
  145. -- 15) Criar um buffer de 200 metros a partir da rodovia SP-461
  146. drop table temp_exercicio15;
  147. create table temp_exercicio15 as
  148. SELECT
  149. ST_UNION(ST_Buffer(
  150.     ST_Transform(a.geom,31983),
  151.     200)
  152. )
  153. FROM malha_viaria a
  154. WHERE a.nm_sigla = 'SP-461';
  155.  
  156.  
  157.  
  158. -- 16) Criando indice espacial
  159. CREATE INDEX principais_cidades_idx
  160.   ON principais_cidades
  161.   USING GIST (geom);
  162.  
  163. --  Criando indice espacial
  164. CREATE INDEX malha_viaria_idx
  165.   ON malha_viaria
  166.   USING GIST (geom);
  167.  
  168. --Criando indice espacial
  169. CREATE INDEX municipios_idx
  170.   ON municipios
  171.   USING GIST (geom);
  172.  
  173. VACUUM ANALYZE principais_cidades;
  174. VACUUM ANALYZE malha_viaria;
  175. VACUUM ANALYZE municipios;
  176.    
  177.  
  178. -- 17) Identificar qual o cidade por meio da coordenada fornecida: Exemplo 'POINT(-63.88186513101888 -8.74772579141916)'
  179. SELECT nm_nome,
  180. ST_DISTANCE(
  181.     ST_GeometryFromText('POINT(-63.88186513101888 -8.74772579141916)', 4326),
  182.     geom,
  183.     true) as distancia
  184. FROM principais_cidades
  185. ORDER BY distancia ASC
  186. limit 1;
  187.  
  188. -- 18) Quais os municípios cruzados pela SP-461 e qual a extensão
  189. --total dos trechos contidos em cada um destes municípios?
  190. SELECT b.nm_municip,
  191. sum(st_length(st_transform(a.geom,31983)))/1000 km
  192. FROM malha_viaria a, municipios b
  193. WHERE a.nm_sigla = 'SP-461' AND
  194. a.geom && b.geom
  195. GROUP BY b.nm_municip
  196. ORDER BY b.nm_municip asc
  197.  
  198. create table temp_exercicio18 as
  199. SELECT b.nm_municip,
  200. sum(st_length(st_transform(a.geom,31983)))/1000 km,
  201. ST_UNION(b.geom) as geouniao
  202. FROM malha_viaria a, municipios b
  203. WHERE a.nm_sigla = 'SP-461' AND
  204. ST_CROSSES(a.geom , b.geom)
  205. GROUP BY b.nm_municip
  206. ORDER BY b.nm_municip asc
  207.  
  208. -- 19)Selecionar o ponto inicial, final e a entensão das ferrovias
  209. --que formam a Ferrovia1, nos limites do municipio de CAMPINAS?
  210. SELECT
  211. ST_AsText(ST_StartPoint(ST_LineMerge(a.geom))) inicial,
  212. ST_AsText(ST_EndPoint(ST_LineMerge(a.geom))) final,
  213. ST_Length(a.geom,true) metros
  214. FROM ferrovias  a, municipios b
  215. WHERE nm_municip = 'CAMPINAS' AND
  216. ST_Intersects(b.geom, a.geom)
  217.  
  218. --Especializando
  219. create table tep_exercicio19 as
  220. SELECT
  221. ST_StartPoint(ST_LineMerge(a.geom)) inicial,
  222. ST_EndPoint(ST_LineMerge(a.geom)) final,
  223. ST_Length(a.geom,true) metros
  224. FROM malha_viaria a, municipios b
  225. WHERE nm_municip = 'CAMPINAS' AND
  226. ST_Intersects(b.geom, a.geom)
  227.  
  228.  
  229. SELECT AddGeometryColumn
  230. ('public','municipios','box',4326,'GEOMETRY',2);
  231. UPDATE municipios SET box = ST_ENVELOPE(geom);
  232.  
  233. SELECT
  234. ST_MAKELINE(
  235.     a.geom,
  236.     b.geom
  237.     ) ligacao
  238. FROM principais_cidades a, principais_cidades b
  239. WHERE a.nm_nome = 'Assis' AND b.nm_nome = 'Campinas';
  240.  
  241. select st_geometrytype(geom) from principais_cidades limit 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement