17. Ejercicios sobre Proyecciones¶
Aquí tienes un recordatorio de algunas de las funciones que hemos visto. Pista: ¡serán útiles para los ejercicios!
sum(expresión) función de agregación para devolver una suma de un conjunto de registros
ST_Length(linestring) retorna la longitud de la línea
ST_SRID(geometry) retorna el SRID de la geometría
ST_Transform(geometry, srid) convierte las geometrías a un determinado SRID
ST_GeomFromText(text) retorna un objeto
geometry
desde una definición WKTST_AsText(geometry) devuelve la representación de geometry en formato WKT
ST_AsGML(geometry) retorna la geometría expresada como un texto GML
Recuerde los recursos que están disponibles:
También recuerde las tablas que tenemos disponibles:
nyc_census_blocks
name, popn_total, boroname, geom
nyc_streets
name, type, geom
nyc_subway_stations
name, geom
nyc_neighborhoods
name, boroname, geom
17.1. Ejercicios¶
¿Cuál es la longitud total de las calles de Nueva York, medida en UTM 18?
SELECT Sum(ST_Length(geom)) FROM nyc_streets;
10418904.7172
¿Cuál es la definición WKT del SRID 2831?
SELECT srtext FROM spatial_ref_sys WHERE SRID = 2831;
O, vía https://epsg.io/2831
PROJCS["NAD83(HARN) / New York Long Island", GEOGCS["NAD83(HARN)", DATUM["NAD83 (High Accuracy Regional Network)", SPHEROID["GRS 1980", 6378137.0, 298.257222101, AUTHORITY["EPSG","7019"]], TOWGS84[-0.991, 1.9072, 0.5129, 0.0257899075194932, -0.009650098960270402, -0.011659943232342112, 0.0], AUTHORITY["EPSG","6152"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4152"]], PROJECTION["Lambert Conic Conformal (2SP)", AUTHORITY["EPSG","9802"]], PARAMETER["central_meridian", -74.0], PARAMETER["latitude_of_origin", 40.166666666666664], PARAMETER["standard_parallel_1", 41.03333333333333], PARAMETER["false_easting", 300000.0], PARAMETER["false_northing", 0.0], PARAMETER["scale_factor", 1.0], PARAMETER["standard_parallel_2", 40.666666666666664], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], AUTHORITY["EPSG","2831"]]
¿Cuál es la longitud de todas las calles de Nueva York, medida en el SRID 2831?
SELECT Sum(ST_Length(ST_Transform(geom,2831))) FROM nyc_streets;
10421993.706374
Nota
La diferencia entre las medidas de Long Island en UTM 18 y State Plane Long Island es de (10421993 - 10418904)/10418904, es decir, 0,02%. Calculado en el esferoide utilizando Geografía la longitud total de las calles es 10421999, que se aproxima más al valor del State Plane. Esto no es sorprendente, ya que la proyección State Plane Long Island está calibrada con precisión para un área muy pequeña (la ciudad de Nueva York), mientras que UTM 18 tiene que proporcionar resultados para un región grande.
¿Cuántas calles cruza el meridiano 74?
SELECT Count(*) FROM nyc_streets WHERE ST_Intersects( ST_Transform(geom, 4326), 'SRID=4326;LINESTRING(-74 20, -74 60)' );
223
El «meridiano 74» es una forma elegante de decir «una línea vertical en geografía donde el valor X es -74». Podemos construir dicha línea y compararla con las calles, proyectadas también en geografía. Si proyectamos la línea en UTM y la comparamos allí, obtendremos una respuesta ligeramente distinta. Para obtener la misma respuesta, hay que «segmentarla», para que tenga más puntos, antes de transformarla.
SELECT Count(*) FROM nyc_streets WHERE ST_Intersects( geom, ST_Transform(ST_Segmentize('SRID=4326;LINESTRING(-74 20, -74 60)'::geometry,0.001), 26918) );