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:
| Tabela | Linhas | Conteúdo |
|---|---|---|
| countries | 246 | países e suas fronteiras |
| capitals | 192 | capitais |
| nyc_census_blocks | 38.794 | setores censitários com população |
| nyc_neighborhoods | 129 | bairros |
| nyc_streets | 19.091 | ruas |
| nyc_subway_stations | 491 | estações de metrô |
| nyc_homicides | 3.982 | homicídios |
Estrutura das tabelas
Clique em uma tabela para ver suas colunas, uma linha de exemplo e as chaves.
Lista de tabelas
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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;
| capital | country | lat | lon | inside_border |
|---|---|---|---|---|
| Abu Dhabi | United Arab Emirates | 24.30 | 54.70 | true |
| Abuja | Nigeria | 9.08 | 7.40 | true |
| Accra | Ghana | 5.60 | -0.19 | true |
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;
| station | borough | routes | srid |
|---|---|---|---|
| Cortlandt St | Manhattan | R,W | 26918 |
| Rector St | Manhattan | 1 | 26918 |
| South Ferry | Manhattan | 1 | 26918 |
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:
- Extrair Geometria como Texto
- Extrair Geometria como JSON
- Distância entre cidades
- Área do País
- Estações de metrô de Manhattan
- Área do Bairro
- Área do Bairro
- Área média do bairro
- Extensão das ruas de Nova York
- 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.