10. Ejercicios de Geometría¶
Aquí tiene un recordatorio de todas las funciones que hemos visto hasta ahora. Le serán útiles para los ejercicios!
sum(expresión) función de agregación para devolver una suma de un conjunto de registros
count(expression): devolver la cantidad de filas (registros) que retorna una consulta
ST_GeometryType(geometry) devuelve el tipo de geometría
ST_NDims(geometry) devuelve el número de dimensiones de la geometría
ST_SRID(geometry) devuelve el número identificador de referencia espacial de la geometría
ST_X(point) retorna la coordenada X
ST_Y(point) retorna la coordenada Y
ST_Length(linestring) retorna la longitud de la línea
ST_StartPoint(geometry) devuelve la primera coordenada como un punto
ST_EndPoint(geometry) devuelve la última coordenada como un punto
ST_NPoints(geometry) devuelve el número de coordenadas en la linestring
ST_Area(geometría) devuelve el área de la geometría
ST_NRings(geometry) devuelve el número de anillos, usualmente 1 (o más si hay agujeros)
ST_ExteriorRing(polygon) retorna el anillo exterior como una línea
ST_InteriorRingN(polygon, integer) retorna el anillo interior especificado como una linea
ST_Perimeter(geometry) devuelve la longitud de todos los anillos
ST_NumGeometries(multi/geomcollection) retorna el número de partes de una colección
ST_GeometryN(geometry, integer) retorna la parte especificada de una colección
ST_GeomFromText(text) retorna un objeto
geometry
desde una definición WKTST_AsText(geometry) devuelve la representación de geometry en formato WKT
ST_AsEWKT(geometry) retorna un texto EWKT
ST_GeomFromWKB(bytea) devuelve
geometry
ST_AsBinary(geometry) retorna un WKB de tipo
bytea
ST_AsEWKB(geometry) retorna un EWKB de tipo
bytea
ST_GeomFromGML(text) devuelve
geometry
ST_AsGML(geometry) retorna la geometría expresada como un texto GML
ST_GeomFromKML(text) devuelve
geometry
ST_AsKML(geometry) retorna un texto KML
ST_AsGeoJSON(geometry) retorna un texto en formato JSON
ST_AsSVG(geometry) retorna un texto en formato SVG
También recuerde las tablas que tenemos disponibles:
nyc_census_blocks
blkid, popn_total, boroname, geom
nyc_streets
name, type, geom
nyc_subway_stations
name, geom
nyc_neighborhoods
name, boroname, geom
10.1. Ejercicios¶
¿Cuál es el área del barrio “West Village”?
SELECT ST_Area(geom) FROM nyc_neighborhoods WHERE name = 'West Village';
1044614.5296486
Nota
El área se da en metros cuadrados. Para obtener un área en hectáreas, divide entre 10000. Para obtener un área en acres, divide entre 4047.
¿Cuál es el tipo de geometría de ‘Pelham St’? ¿La longitud?
SELECT ST_GeometryType(geom), ST_Length(geom) FROM nyc_streets WHERE name = 'Pelham St';
ST_MultiLineString 50.323
¿Cuál es la representación GeoJSON de la estación de metro “Broad St”?
SELECT ST_AsGeoJSON(geom) FROM nyc_subway_stations WHERE name = 'Broad St';
{"type":"Point", "crs":{"type":"name","properties":{"name":"EPSG:26918"}}, "coordinates":[583571.905921312,4506714.341192182]}
¿Cuál es la longitud total de las calles (en kilómetros) en la ciudad de Nueva York? (Pista: las unidades de medida de los datos espaciales son metros, hay 1000 metros en un kilómetro.)
SELECT Sum(ST_Length(geom)) / 1000 FROM nyc_streets;
10418.9047172
¿Cuál es el área de Manhattan en acres? (Pista: tanto
nyc_census_blocks
comonyc_neighborhoods
tienen unboroname
en ellos.)SELECT Sum(ST_Area(geom)) / 4047 FROM nyc_neighborhoods WHERE boroname = 'Manhattan';
13965.3201224118
o…
SELECT Sum(ST_Area(geom)) / 4047 FROM nyc_census_blocks WHERE boroname = 'Manhattan';
14601.3987215548
¿Cuál es la estación de metro más al occidente?
SELECT ST_X(geom), name FROM nyc_subway_stations ORDER BY ST_X(geom) LIMIT 1;
Tottenville
¿Cuál es la longitud de “Columbus Cir” (también conocido como Columbus Circle)?
SELECT ST_Length(geom) FROM nyc_streets WHERE name = 'Columbus Cir';
308.34199
¿Cuál es la longitud de las calles en la ciudad de Nueva York, resumida por tipo?
SELECT type, Sum(ST_Length(geom)) AS length FROM nyc_streets GROUP BY type ORDER BY length DESC;
type | length --------------------------------------------------+------------------ residential | 8629870.33786606 motorway | 403622.478126363 tertiary | 360394.879051303 motorway_link | 294261.419479668 secondary | 276264.303897926 unclassified | 166936.371604458 primary | 135034.233017947 footway | 71798.4878378096 service | 28337.635038596 trunk | 20353.5819826076 cycleway | 8863.75144825929 pedestrian | 4867.05032825026 construction | 4803.08162103562 residential; motorway_link | 3661.57506293745 trunk_link | 3202.18981240201 primary_link | 2492.57457083536 living_street | 1894.63905457332 primary; residential; motorway_link; residential | 1367.76576941335 undefined | 380.53861910346 steps | 282.745221342127 motorway_link; residential | 215.07778911517
Nota
La cláusula
ORDER BY length DESC
ordena el resultado por longitud en orden descendente. El resultado es que los tipos más frecuentes aparecen primero en la lista.