Novo mês, novos objetivos. Sua ajuda ajuda o projeto a avançar. 🖥️ Apoie o sqltest →
Código SQL copiado para a área de transferência

Banco de dados Countries (PostGIS): tabelas espaciais e exercícios de SQL

Countries é um banco PostGIS para aprender SQL espacial: países e capitais do mundo, além de camadas de Nova York com setores censitários, bairros, ruas e estações de metrô. No SQLtest.online você consulta o banco direto no navegador: resolve exercícios com correção automática e executa suas próprias consultas no playground, sem instalar nada.

  • 7 tabelas espaciais
  • 246 países
  • 491 estações de metrô
  • 11 exercícios de SQL

O que é o Countries

PostGIS é a extensão do PostgreSQL que acrescenta tipos geométricos e centenas de funções espaciais: distâncias, áreas, interseções, transformações de coordenadas. Este banco permite experimentá-las com dados conhecidos.

As tabelas de Nova York vêm do conhecido workshop "Introduction to PostGIS", e as tabelas do mundo trazem as fronteiras dos países e as capitais. Juntas, elas cobrem pontos, linhas e polígonos em dois sistemas de coordenadas.

O que há no banco

As tabelas se dividem em dois grupos.

Mundo

countries com polígonos de fronteira e capitals com pontos, ambas em SRID 4326 (longitude e latitude).

Nova York

nyc_census_blocks, nyc_neighborhoods, nyc_streets, nyc_subway_stations e nyc_homicides, em SRID 26918 (UTM zona 18N, metros).

O ponto principal: as tabelas do mundo guardam graus, e as de Nova York guardam metros. Distâncias e áreas nas camadas de Nova York saem diretamente em metros; nas tabelas do mundo, converta para geography ou transforme a geometria antes.

Quantos dados há nas tabelas:

TabelaLinhasConteúdo
countries246países e suas fronteiras
capitals192capitais
nyc_census_blocks38.794setores censitários com população
nyc_neighborhoods129bairros
nyc_streets19.091ruas
nyc_subway_stations491estações de metrô
nyc_homicides3.982homicídios

Estrutura das tabelas

Clique em uma tabela para ver suas colunas, uma linha de exemplo e as chaves.

Lista de tabelas

countries - lista de países com geometria.
  • ididentificador único do registro (PK)
  • namenome do país
  • bordergeometria do país (MultiPolygon, SRID 4326)
id name border
1 France MultiPolygon(...) [SRID=4326]
  • PRIMARY KEY, btree (id)
capitals - lista de capitais com localização.
  • ididentificador único do registro (PK)
  • namenome da capital
  • country_idreferência ao país (FK)
  • locationlocalização da capital (Point, SRID 4326)
id name country_id location
1 Paris 1 Point(...) [SRID=4326]
  • PRIMARY KEY, btree (id)
  • FOREIGN KEY (country_id) REFERENCES countries(id)
nyc_census_blocks - blocos censitários de Nova York.
  • gididentificador único do registro (PK)
  • blkidID do bloco censitário
  • popn_totalpopulação total
  • popn_whitepopulação branca
  • popn_blackpopulação negra
  • popn_nativpopulação nativa
  • popn_asianpopulação asiática
  • popn_otheroutra população
  • boronamenome do bairro
  • geomgeometria do bloco censitário (MultiPolygon, SRID 4326)
gid blkid popn_total popn_white popn_black popn_nativ popn_asian popn_other boroname geom
1 360050001001000 1000 500 200 50 150 100 Manhattan MultiPolygon(...) [SRID=4326]
  • PRIMARY KEY, btree (gid)
nyc_homicides - incidentes de homicídio na cidade de Nova York.
  • gididentificador único do registro (PK)
  • incident_ddata do incidente
  • boronamenome do bairro
  • num_victimnúmero de vítimas
  • primary_momotivo principal
  • idID do incidente
  • weaponarma usada
  • light_darkcondição de luz ou escuro
  • yearano do incidente
  • geomlocalização do incidente (Point, SRID 4326)
gid incident_d boroname num_victim primary_mo id weapon light_dark year geom
1 2003-01-01 Manhattan 1 Desconhecido 1 Arma de fogo D 2003 Point(...) [SRID=4326]
  • PRIMARY KEY, btree (gid)
nyc_neighborhoods - bairros da cidade de Nova York.
  • gididentificador único do registro (PK)
  • boronamenome do bairro
  • namenome do bairro
  • geomgeometria do bairro (MultiPolygon, SRID 4326)
gid boroname name geom
1 Manhattan Financial District MultiPolygon(...) [SRID=4326]
  • PRIMARY KEY, btree (gid)
nyc_streets - ruas da cidade de Nova York.
  • gididentificador único do registro (PK)
  • idID da rua
  • namenome da rua
  • onewayindicador de mão única
  • typetipo de rua
  • geomgeometria da rua (LineString, SRID 4326)
gid id name oneway type geom
1 1 Broadway NO avenue LineString(...) [SRID=4326]
  • PRIMARY KEY, btree (gid)
nyc_subway_stations - estações de metrô da cidade de Nova York.
  • gididentificador único do registro (PK)
  • objectidID do objeto
  • idID da estação
  • namenome da estação
  • alt_namenome alternativo
  • cross_strua transversal
  • long_namenome longo
  • labelrótulo
  • boroughbairro
  • nghbhdbairro
  • routesrotas
  • transferstransferências
  • colorcor
  • expressindicador expresso
  • closedindicador fechado
  • geomlocalização da estação (Point, SRID 4326)
gid objectid id name alt_name cross_st long_name label borough nghbhd routes transfers color express closed geom
1 1 1 Times Square Times Sq 7th Ave Times Square-42nd Street Times Sq Manhattan Midtown 1,2,3,7,A,C,E,N,Q,R,S,W 42nd St Vermelho Sim Não Point(...) [SRID=4326]
  • PRIMARY KEY, btree (gid)

Exemplos de consultas

Estas consultas mostram como os dados se relacionam. Copie qualquer uma e execute no playground.

Uma capital dentro do seu país: coordenadas do ponto com ST_X / ST_Y e verificação espacial com ST_Contains.

SELECT c.name AS capital, co.name AS country,
       round(ST_Y(c.location)::numeric, 2) AS lat,
       round(ST_X(c.location)::numeric, 2) AS lon,
       ST_Contains(co.border, c.location) AS inside_border
FROM capitals c
JOIN countries co ON co.id = c.country_id
ORDER BY c.name
LIMIT 3;
capitalcountrylatloninside_border
Abu DhabiUnited Arab Emirates24.3054.70true
AbujaNigeria9.087.40true
AccraGhana5.60-0.19true

Estações de metrô e seu SRID: as camadas de Nova York usam a projeção 26918.

SELECT s.name AS station, s.borough, s.routes, ST_SRID(s.geom) AS srid
FROM nyc_subway_stations s
ORDER BY s.gid
LIMIT 3;
stationboroughroutessrid
Cortlandt StManhattanR,W26918
Rector StManhattan126918
South FerryManhattan126918

Exercícios de SQL por tema

Há 11 exercícios de PostGIS neste banco: distâncias, áreas, comprimentos, conversões para texto e JSON e junções espaciais. As soluções são verificadas automaticamente em um PostgreSQL real com PostGIS. O número à direita é a quantidade de exercícios do tema; os pontos coloridos mostram a faixa de dificuldade.

Por onde começar

Os primeiros exercícios do banco Countries:

  1. Extrair Geometria como Texto
  2. Extrair Geometria como JSON
  3. Distância entre cidades
  4. Área do País
  5. Estações de metrô de Manhattan
  6. Área do Bairro
  7. Área do Bairro
  8. Área média do bairro
  9. Extensão das ruas de Nova York
  10. Estações Little Italy

Todos os exercícios do Countries →

Perguntas frequentes

Preciso instalar o PostGIS para usar este banco?

Não. Os exercícios e o playground do SQLtest.online executam as consultas nos nossos servidores, então basta um navegador. No playground, escolha PostgreSQL 17 + PostGIS WorkShop.

O que é um SRID?

Um identificador de sistema de referência espacial: indica em qual sistema estão as coordenadas. 4326 é longitude e latitude em graus (WGS 84); 26918 é UTM zona 18N em metros, usado para Nova York.

De onde vêm as tabelas de Nova York?

Do conjunto de dados do workshop "Introduction to PostGIS", publicado em postgis.net, um ponto de partida comum para aprender PostGIS.