19. Ejercicios de Datos Tipo Geography¶
Aquí tiene un recordatorio de todas las funciones que hemos visto hasta ahora. Le serán útiles para los ejercicios!
Sum(number) suma todos los números del conjunto de resultados
ST_GeogFromText(text) retorna un objeto tipo geography
ST_Distance(geography, geography) retorna la distancia entre dos objetos tipo geography
ST_Transform(geometry, srid) retorna el objeto tipo geometría en la nueva proyección
ST_Length(geography) retorna la longitud de la línea
ST_Intersects(geometry, geometry) retorna true si los objetos no son disyuntos en un espacio plano
ST_Intersects(geography, geography) devuelve true si los objetos no son disjuntos en el espacio esferoidal
También recuerde las tablas que tenemos disponibles:
nyc_streets
name, type, geom
nyc_neighborhoods
name, boroname, geom
19.1. Ejercicios¶
¿A qué distancia está Nueva York de Seattle? ¿Cuáles son las unidades de la respuesta?
Nota
New York =
POINT(-74.0064 40.7142)
y Seattle =POINT(-122.3331 47.6097)
SELECT ST_Distance( 'POINT(-74.0064 40.7142)'::geography, 'POINT(-122.3331 47.6097)'::geography );
3875538.57141352
**¿Cuál es la longitud total de todas las calles de Nueva York, calculada sobre el esferoide?
SELECT Sum( ST_Length(Geography( ST_Transform(geom,4326) ))) FROM nyc_streets;
10421999.666
Nota
La longitud calculada en la proyección plana «UTM Zone 18» es 10418904,717, un 0,02% de diferencia. UTM es bueno para preservar el área y la distancia, dentro de los límites de la zona.
**¿Se cruza “POINT(1 2,0001)” con “POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))” en geografía? ¿En geometría? ¿Por qué la diferencia?
SELECT ST_Intersects( 'POINT(1 2.0001)'::geography, 'POLYGON((0 0,0 2,2 2,2 0,0 0))'::geography ); SELECT ST_Intersects( 'POINT(1 2.0001)'::geometry, 'POLYGON((0 0,0 2,2 2,2 0,0 0))'::geometry );
true and false
Nota
La arista superior del cuadrado es una línea recta en geometría, y pasa por debajo del punto, por lo que el cuadrado no contiene el punto. La arista superior del cuadrado es un gran círculo en geografía, y pasa por encima del punto, por lo que el cuadrado sí contiene el punto.