Base de datos Countries (PostGIS): tablas espaciales y ejercicios de SQL
Countries es una base PostGIS para aprender SQL espacial: países y capitales del mundo, además de capas de Nueva York con manzanas censales, barrios, calles y estaciones de metro. En SQLtest.online puedes consultarla directamente en el navegador: resolver ejercicios con corrección automática y ejecutar tus propias consultas en el playground, sin instalar nada.
- 7 tablas espaciales
- 246 países
- 491 estaciones de metro
- 11 ejercicios de SQL
Qué es Countries
PostGIS es la extensión de PostgreSQL que añade tipos geométricos y cientos de funciones espaciales: distancias, áreas, intersecciones, transformaciones de coordenadas. Esta base permite probarlas con datos conocidos.
Las tablas de Nueva York proceden del conocido taller «Introduction to PostGIS», y las tablas del mundo contienen las fronteras de los países y las capitales. Juntas cubren puntos, líneas y polígonos en dos sistemas de coordenadas.
Qué contiene la base
Las tablas se agrupan en dos bloques.
Mundo
countries con polígonos de fronteras y capitals con puntos, ambas en SRID 4326 (longitud y latitud).
Nueva York
nyc_census_blocks, nyc_neighborhoods, nyc_streets, nyc_subway_stations y nyc_homicides, en SRID 26918 (UTM zona 18N, metros).
Lo principal: las tablas del mundo guardan grados y las de Nueva York, metros. En las capas de Nueva York las distancias y áreas salen directamente en metros; en las tablas del mundo, convierte primero a geography o transforma la geometría.
Cuántos datos hay en las tablas:
| Tabla | Filas | Contenido |
|---|---|---|
| countries | 246 | países y sus fronteras |
| capitals | 192 | capitales |
| nyc_census_blocks | 38 794 | manzanas censales con población |
| nyc_neighborhoods | 129 | barrios |
| nyc_streets | 19 091 | calles |
| nyc_subway_stations | 491 | estaciones de metro |
| nyc_homicides | 3982 | homicidios |
Estructura de las tablas
Haz clic en una tabla para ver sus columnas, una fila de ejemplo y sus claves.
Lista de tablas
- ididentificador único de registro (PK)
- namenombre del país
- bordergeometría del país (MultiPolygon, SRID 4326)
| id | name | border |
|---|---|---|
| 1 | Francia | MultiPolygon(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (id)
- ididentificador único de registro (PK)
- namenombre de la capital
- country_idreferencia al país (FK)
- locationubicación de la capital (Point, SRID 4326)
| id | name | country_id | location |
|---|---|---|---|
| 1 | París | 1 | Point(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (id)
- CLAVE FORÁNEA (country_id) REFERENCIAS countries(id)
- gididentificador único de registro (PK)
- blkidID del bloque de censo
- popn_totalpoblación total
- popn_whitepoblación blanca
- popn_blackpoblación negra
- popn_nativpoblación nativa
- popn_asianpoblación asiática
- popn_otherotra población
- boronamenombre del barrio
- geomgeometría del bloque de censo (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] |
- CLAVE PRIMARIA, btree (gid)
- gididentificador único de registro (PK)
- incident_dfecha del incidente
- boronamenombre del barrio
- num_victimnúmero de víctimas
- primary_momotivo principal
- idID del incidente
- weaponarma utilizada
- light_darkcondición de luz o oscuridad
- yearaño del incidente
- geomubicación del incidente (Point, SRID 4326)
| gid | incident_d | boroname | num_victim | primary_mo | id | weapon | light_dark | year | geom |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2003-01-01 | Manhattan | 1 | Desconocido | 1 | Arma de fuego | D | 2003 | Point(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (gid)
- gididentificador único de registro (PK)
- boronamenombre del barrio
- namenombre del barrio
- geomgeometría del barrio (MultiPolygon, SRID 4326)
| gid | boroname | name | geom |
|---|---|---|---|
| 1 | Manhattan | Distrito Financiero | MultiPolygon(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (gid)
- gididentificador único de registro (PK)
- idID de la calle
- namenombre de la calle
- onewayindicador de sentido único
- typetipo de calle
- geomgeometría de la calle (LineString, SRID 4326)
| gid | id | name | oneway | type | geom |
|---|---|---|---|---|---|
| 1 | 1 | Broadway | NO | avenida | LineString(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (gid)
- gididentificador único de registro (PK)
- objectidID del objeto
- idID de la estación
- namenombre de la estación
- alt_namenombre alternativo
- cross_stcalle cruzada
- long_namenombre largo
- labeletiqueta
- boroughbarrio
- nghbhdvecindario
- routesrutas
- transferstransferencias
- colorcolor
- expressindicador de expreso
- closedindicador de cerrado
- geomubicación de la estación (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 | Rojo | Sí | No | Point(...) [SRID=4326] |
- CLAVE PRIMARIA, btree (gid)
Consultas de ejemplo
Estas consultas muestran cómo se relacionan los datos. Copia cualquiera y ejecútala en el playground.
Una capital dentro de su país: coordenadas del punto con ST_X / ST_Y y comprobación espacial con 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 |
Estaciones de metro y su SRID: las capas de Nueva York usan la proyección 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 |
Ejercicios de SQL por tema
Esta base tiene 11 ejercicios de PostGIS: distancias, áreas, longitudes, conversiones a texto y JSON y uniones espaciales. Las soluciones se comprueban automáticamente en un PostgreSQL real con PostGIS. El número de la derecha es la cantidad de ejercicios del tema; los puntos de color muestran el rango de dificultad.
Por dónde empezar
Los primeros ejercicios de la base Countries:
- Extraer Geometría como Texto
- Extraer Geometría como JSON
- Distancia entre ciudades
- Área del País
- Estaciones de Subte de Manhattan
- Área del Barrio
- Área del Barrio
- Promedio de Área por Barrio
- Longitud de las Calles de Nueva York
- Estaciones de Little Italy
Todos los ejercicios de Countries →
Preguntas frecuentes
¿Hay que instalar PostGIS para usar esta base?
No. Los ejercicios y el playground de SQLtest.online ejecutan las consultas en nuestros servidores, así que basta con un navegador. En el playground, elige PostgreSQL 17 + PostGIS WorkShop.
¿Qué es un SRID?
Un identificador de sistema de referencia espacial: indica en qué sistema están las coordenadas. 4326 es longitud y latitud en grados (WGS 84); 26918 es UTM zona 18N en metros, el que se usa para Nueva York.
¿De dónde vienen las tablas de Nueva York?
Del conjunto de datos del taller «Introduction to PostGIS» publicado en postgis.net, un punto de partida habitual para aprender PostGIS.