Funciones geoespaciales en la versión 2 del motor Athena - Amazon Athena

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Funciones geoespaciales en la versión 2 del motor Athena

En este tema se incluyen las funciones geoespaciales ESRI compatibles con la versión 2 del motor Athena. Para obtener más información acerca de las versiones de motor Athena, consulte Control de versiones del motor Athena.

Cambios en la versión 2 del motor Athena

Athena es compatible con los siguientes tipos de funciones geoespaciales:

Funciones del constructor

Utilice las funciones del constructor para obtener representaciones binarias de tipos de datos geométricos point, line o polygon. También puede utilizar estas funciones para convertir datos binarios a texto y obtener valores binarios para los datos geométricos que se expresan como Well-Known Text (WKT).

ST_AsBinary(geometry)

Devuelve un tipo de datos binarios de longitud variable (varbinary) que contiene la representación WKB de la geometría especificada. Ejemplo:

SELECT ST_AsBinary(ST_Point(-158.54, 61.56))

ST_AsText(geometry)

Convierte todos los tipos de datos geométricos especificados en texto. Devuelve un valor en un tipo de datos varchar, que es una representación WKT del tipo de datos geométricos. Ejemplo:

SELECT ST_AsText(ST_Point(-158.54, 61.56))

ST_GeomAsLegacyBinary(geometry)

Devuelve un varbinary heredado de la geometría especificada. Ejemplo:

SELECT ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)

ST_GeometryFromText(varchar)

Convierte texto en formato WKT en un tipo de datos geométricos. Devuelve un valor en un tipo de datos geométricos. Ejemplo:

SELECT ST_GeometryFromText(ST_AsText(ST_Point(1, 2)))

ST_GeomFromBinary(varbinary)

Devuelve un objeto de tipo geométrico de una representación WKB. Ejemplo:

SELECT ST_GeomFromBinary(ST_AsBinary(ST_Point(-158.54, 61.56)))

ST_GeomFromLegacyBinary(varbinary)

Devuelve un objeto de tipo geométrico de un tipo de varbinary heredado. Ejemplo:

SELECT ST_GeomFromLegacyBinary(ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)))

ST_LineFromText(varchar)

Devuelve un valor en la line del tipo de datos geométricos. Ejemplo:

SELECT ST_Line('linestring(1 1, 2 2, 3 3)')

ST_LineString(array(point))

Devuelve un tipo geométrico LineString formado a partir de una matriz de tipos geométricos de punto. Si hay menos de dos puntos no vacíos en la matriz especificada, se devuelve una LineString vacía. Arroja una excepción si cualquier elemento de la matriz es nulo, está vacío o es el mismo que el anterior. La geometría devuelta puede no ser simple. Según la entrada especificada, la geometría devuelta puede intersecarse a sí misma o contener vértices duplicados. Ejemplo:

SELECT ST_LineString(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_MultiPoint(array(point))

Devuelve un objeto geométrico MultiPoint formado a partir de los puntos especificados. Devuelve un valor nulo si la matriz especificada está vacía. Arroja una excepción si cualquier elemento de la matriz es nulo o está vacío. La geometría devuelta puede no ser simple y puede contener puntos duplicados si la matriz especificada tiene duplicados. Ejemplo:

SELECT ST_MultiPoint(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Point(double, double)

Devuelve un objeto point de tipo geométrico. Para los valores de datos de entrada a esta función, utilice valores geométricos, como, por ejemplo, el sistema de coordenadas cartesiano universal transversal de Mercator (UTM) o unidades de mapas geográficos (longitud y latitud) en grados decimales. Los valores de longitud y latitud utilizan el sistema geodésico mundial, también conocido como WGS 1984 o EPSG:4326. WGS 1984 es el sistema de coordenadas utilizado por el Sistema de posicionamiento global (GPS).

Por ejemplo, en la siguiente notación, las coordenadas del mapa se especifican en longitud y latitud, y el valor .072284, que es la distancia del búfer, se especifica en unidades angulares como grados decimales:

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

Sintaxis:

SELECT ST_Point(longitude, latitude) FROM earthquakes LIMIT 1

En el ejemplo siguiente se utilizan coordenadas de longitud y de latitud específicas:

SELECT ST_Point(-158.54, 61.56) FROM earthquakes LIMIT 1

En el siguiente ejemplo se utilizan coordenadas de longitud y de latitud específicas:

SELECT ST_Point(-74.006801, 40.705220)

El siguiente ejemplo utiliza la función ST_AsText para obtener la geometría de WKT:

SELECT ST_AsText(ST_Point(-74.006801, 40.705220)) AS WKT

ST_Polygon(varchar)

Usando la secuencia de las ordenadas proporcionadas en el sentido de las agujas del reloj, de izquierda a derecha, devuelve un polygon de tipo de datos geométrico. Desde la versión 2 del motor Athena, solo se aceptan polígonos como entradas. Ejemplo:

SELECT ST_Polygon('polygon ((1 1, 1 4, 4 4, 4 1))')

to_geometry(sphericalGeography)

Devuelve un objeto geométrico del objeto geográfico esférico especificado. Ejemplo:

SELECT to_geometry(to_spherical_geography(ST_Point(-158.54, 61.56)))

to_spherical_geography(geometry)

Devuelve un objeto geográfico esférico de la geometría especificada. Utilice esta función para convertir un objeto geométrico en un objeto geográfico esférico en el campo del radio de la Tierra. Esta función se puede utilizar solo en geometrías POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON y MULTIPOLYGON definidas en un espacio 2D o un GEOMETRYCOLLECTION de tales geometrías. Para cada punto de la geometría especificada, la función verifica que point.x esté dentro de [-180.0, 180.0] y point.y dentro de [-90.0, 90.0]. La función utiliza estos puntos como grados de longitud y latitud para construir la forma del resultado sphericalGeography.

Ejemplo:

SELECT to_spherical_geography(ST_Point(-158.54, 61.56))

Funciones de relaciones geoespaciales

Las siguientes funciones expresan relaciones entre dos geometrías diferentes que especifica como entrada y que devuelven resultados de tipo boolean. El orden en que especifique el par de geometrías es importante: el primer valor de geometría se denomina geometría izquierda, mientras que el segundo valor de geometría se denomina geometría derecha.

Estas funciones devuelven:

  • TRUE si y solo si se cumple la relación descrita por la función.

  • FALSE si y solo si no se cumple la relación descrita por la función.

ST_Contains(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda contiene la geometría derecha. Ejemplos:

SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', 'POLYGON((-1 3,2 1,0 -3,-1 3))')
SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', ST_Point(0, 0))
SELECT ST_Contains(ST_GeometryFromText('POLYGON((0 2,1 1,0 -1,0 2))'), ST_GeometryFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'))

ST_Crosses(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda cruza la geometría derecha. Ejemplo:

SELECT ST_Crosses(ST_Line('linestring(1 1, 2 2 )'), ST_Line('linestring(0 1, 2 2)'))

ST_Disjoint(geometry, geometry)

Devuelve TRUE si y solo si la intersección de la geometría izquierda y la geometría derecha está vacía. Ejemplo:

SELECT ST_Disjoint(ST_Line('linestring(0 0, 0 1)'), ST_Line('linestring(1 1, 1 0)'))

ST_Equals(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda es igual a la geometría derecha. Ejemplo:

SELECT ST_Equals(ST_Line('linestring( 0 0, 1 1)'), ST_Line('linestring(1 3, 2 2)'))

ST_Intersects(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda hace intersección con la geometría derecha. Ejemplo:

SELECT ST_Intersects(ST_Line('linestring(8 7, 7 8)'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Overlaps(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda se solapa con la geometría derecha. Ejemplo:

SELECT ST_Overlaps(ST_Polygon('polygon((2 0, 2 1, 3 1))'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Relate(geometry, geometry, varchar)

Devuelve TRUE si y solo si la geometría izquierda tiene la relación especificada de modelo de nueve intersecciones dimensionalmente extendido (DE-9IM) con la geometría derecha. La tercera entrada (varchar) toma la relación. Ejemplo:

SELECT ST_Relate(ST_Line('linestring(0 0, 3 3)'), ST_Line('linestring(1 1, 4 4)'), 'T********')

ST_Touches(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda toca la geometría derecha.

Ejemplo:

SELECT ST_Touches(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Within(geometry, geometry)

Devuelve TRUE si y solo si la geometría izquierda está dentro de la geometría derecha.

Ejemplo:

SELECT ST_Within(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

Funciones de operación

Utilice funciones de operación para llevar a cabo operaciones en valores de tipos de datos de geometría. Por ejemplo, puede obtener los límites de un único tipo de datos geométrico; las intersecciones entre dos tipos de datos geométricos; la diferencia entre las geometrías izquierda y derecha, donde cada geometría es del mismo tipo de datos; o un búfer o anillo exterior en torno a un tipo de datos geométrico concreto.

geometry_union(array(geometry))

Devuelve una geometría que representa la unión del conjunto de puntos de las geometrías especificadas. Ejemplo:

SELECT geometry_union(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Boundary(geometry)

Toma como entrada uno de los tipos de datos geométricos y devuelve el tipo de datos geométrico boundary.

Ejemplos:

SELECT ST_Boundary(ST_Line('linestring(0 1, 1 0)')))
SELECT ST_Boundary(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Buffer(geometry, double)

Toma como una entrada uno de los tipos de datos geométricos, como, por ejemplo, punto, línea, polígono, varias líneas o varios polígonos y una distancia como el tipo double. Devuelve el tipo de datos geométricos delimitado por la distancia especificada (o radio). Ejemplo:

SELECT ST_Buffer(ST_Point(1, 2), 2.0)

En el siguiente ejemplo, las coordenadas del mapa se especifican en longitud y latitud, y el valor .072284, que es la distancia del búfer, se especifica en unidades angulares como grados decimales:

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

ST_Difference(geometry, geometry)

Devuelve una geometría de la diferencia entre la geometría izquierda y la geometría derecha. Ejemplo:

SELECT ST_AsText(ST_Difference(ST_Polygon('polygon((0 0, 0 10, 10 10, 10 0))'), ST_Polygon('polygon((0 0, 0 5, 5 5, 5 0))')))

ST_Envelope(geometry)

Toma como entrada line, polygon, multiline y tipos de datos geométricos multipolygon. No admite el tipo de datos geométricos point. Devuelve el sobre como una geometría, en la que el sobre es un rectángulo que rodea el tipo de datos geométricos especificado. Ejemplos:

SELECT ST_Envelope(ST_Line('linestring(0 1, 1 0)'))
SELECT ST_Envelope(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_EnvelopeAsPts(geometry)

Devuelve una matriz de dos puntos que representan las esquinas inferior izquierda y superior derecha del polígono rectangular delimitador de una geometría. Devuelve un valor nulo si la geometría especificada está vacía. Ejemplo:

SELECT ST_EnvelopeAsPts(ST_Point(-158.54, 61.56))

ST_ExteriorRing(geometry)

Devuelve la geometría del anillo exterior del tipo de entrada polygon. Desde la versión 2 del motor Athena, los polígonos son las únicas geometrías aceptadas como entradas. Ejemplos:

SELECT ST_ExteriorRing(ST_Polygon(1,1, 1,4, 4,1))
SELECT ST_ExteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_Intersection(geometry, geometry)

Devuelve la geometría de la intersección de la geometría izquierda y la geometría derecha. Ejemplos:

SELECT ST_Intersection(ST_Point(1,1), ST_Point(1,1))
SELECT ST_Intersection(ST_Line('linestring(0 1, 1 0)'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))
SELECT ST_AsText(ST_Intersection(ST_Polygon('polygon((2 0, 2 3, 3 0))'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))')))

ST_SymDifference(geometry, geometry)

Devuelve la geometría de la diferencia geométricamente simétrica entre la geometría izquierda y la geometría derecha. Ejemplo:

SELECT ST_AsText(ST_SymDifference(ST_Line('linestring(0 2, 2 2)'), ST_Line('linestring(1 2, 3 2)')))

ST_Union(geometry, geometry)

Devuelve un tipo de datos geométricos que representa la unión del conjunto de puntos de las geometrías especificadas. Ejemplo:

SELECT ST_Union(ST_Point(-158.54, 61.56),ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

Funciones del descriptor de acceso

Las funciones del descriptor de acceso son útiles para obtener valores de los tipos varchar, bigint o double a partir de diferentes tipos de datos geometry, donde geometry es cualquiera de los tipos de datos geométricos compatibles con Athena: point, line, polygon, multiline y multipolygon. Por ejemplo, puede obtener una zona de un tipo de datos polygon, valores X e Y máximos y mínimos de un tipo de datos geométrico especificado, obtener la longitud de una line o recibir el número de puntos de un tipo de datos geométrico especificado.

geometry_invalid_reason(geometry)

Devuelve, en un tipo de datos varchar, el motivo por el que la geometría especificada no es válida o no es simple. Si la geometría especificada no es válida ni simple, devuelve el motivo por el que no es válida. Si la geometría especificada es válida y simple, devuelve un valor nulo. Ejemplo:

SELECT geometry_invalid_reason(ST_Point(-158.54, 61.56))

great_circle_distance(latitude1, longitude1, latitude2, longitude2)

Devuelve, como doble, la distancia de círculo grande entre dos puntos de la superficie de la Tierra en kilómetros. Ejemplo:

SELECT great_circle_distance(36.12, -86.67, 33.94, -118.40)

line_locate_point(lineString, point)

Devuelve un doble entre 0 y 1 que representa la ubicación del punto más cercano en la cadena de línea especificada al punto especificado como una fracción de la longitud total de línea 2d.

Devuelve un valor nulo si la cadena de línea o el punto especificado está vacío o nulo. Ejemplo:

SELECT line_locate_point(ST_GeometryFromText('LINESTRING (0 0, 0 1)'), ST_Point(0, 0.2))

simplify_geometry(geometry, double)

Utiliza el algoritmo Ramer-Douglas-Peucker para devolver un tipo de datos geométricos que sea una versión simplificada de la geometría especificada. Evita la creación de geometrías derivadas (en particular, polígonos) que no sean válidas. Ejemplo:

SELECT simplify_geometry(ST_GeometryFromText('POLYGON ((1 0, 2 1, 3 1, 3 1, 4 1, 1 0))'), 1.5)

ST_Area(geometry)

Toma como entrada un tipo de datos geométrico y devuelve una zona en tipo double. Ejemplo:

SELECT ST_Area(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Centroid(geometry)

Toma como entrada un polygon de tipo de datos geométricos y devuelve un point que es el centro del sobre del polígono. Ejemplos:

SELECT ST_Centroid(ST_GeometryFromText('polygon ((0 0, 3 6, 6 0, 0 0))'))
SELECT ST_AsText(ST_Centroid(ST_Envelope(ST_GeometryFromText('POINT (53 27)'))))

ST_ConvexHull(geometry)

Devuelve un tipo de datos geométricos que es la geometría convexa más pequeña que encierra todas las geometrías de la entrada especificada. Ejemplo:

SELECT ST_ConvexHull(ST_Point(-158.54, 61.56))

ST_CoordDim(geometry)

Toma como entrada uno de los tipos de datos geométricos admitidos y devuelve el recuento de componentes de coordenadas en el tipo tinyint. Ejemplo:

SELECT ST_CoordDim(ST_Point(1.5,2.5))

ST_Dimension(geometry)

Toma como entrada uno de los tipos de datos geométricos admitidos y devuelve la dimensión espacial de una geometría en tipo tinyint. Ejemplo:

SELECT ST_Dimension(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Distance(geometry, geometry)

Devuelve, en función de la referencia espacial, un doble que contiene la distancia cartesiana mínima bidimensional entre dos geometrías en unidades proyectadas. Desde la versión 2 del motor Athena, se devuelve un valor nulo si una de las entradas es una geometría vacía. Ejemplo:

SELECT ST_Distance(ST_Point(0.0,0.0), ST_Point(3.0,4.0))

ST_Distance(sphericalGeography, sphericalGeography)

Devuelve, como doble, la distancia de círculo grande entre dos puntos geográficos esféricos en metros. Ejemplo:

SELECT ST_Distance(to_spherical_geography(ST_Point(61.56, -86.67)),to_spherical_geography(ST_Point(61.56, -86.68)))

ST_EndPoint(geometry)

Devuelve el último punto de un tipo de datos geométricos line en un tipo de datos geométricos point. Ejemplo:

SELECT ST_EndPoint(ST_Line('linestring(0 2, 2 2)'))

ST_Geometries(geometry)

Devuelve una matriz de geometrías en la colección especificada. Si la geometría especificada no es una geometría múltiple, devuelve una matriz de un elemento. Si la geometría especificada está vacía, devuelve un valor nulo.

Por ejemplo, dado un objeto MultiLineString, ST_Geometries crea una matriz de objetos LineString. Dado un objeto GeometryCollection, ST_Geometries devuelve una matriz no aplanada de sus componentes. Ejemplo:

SELECT ST_Geometries(GEOMETRYCOLLECTION(MULTIPOINT(0 0, 1 1), GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))))

Resultado:

array[MULTIPOINT(0 0, 1 1),GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))]

ST_GeometryN(geometry, index)

Devuelve, como tipo de datos geométricos, el elemento geométrico en un índice entero especificado. Los índices comienzan en 1. Si la geometría especificada es una colección de geometrías (por ejemplo, un objeto GEOMETRYCOLLECTION o MULTI*), devuelve la geometría en el índice especificado. Si el índice especificado es menor que 1 o mayor que el número total de elementos de la colección, devuelve un valor nulo. Para encontrar el número total de elementos, utilice ST_NumGeometries. Geometrías singulares (por ejemplo, POINT, LINESTRING o POLYGON) se tratan como colecciones de un elemento. Las geometrías vacías se tratan como colecciones vacías. Ejemplo:

SELECT ST_GeometryN(ST_Point(-158.54, 61.56),1)

ST_GeometryType(geometry)

Devuelve, como varchar, el tipo de la geometría. Ejemplo:

SELECT ST_GeometryType(ST_Point(-158.54, 61.56))

ST_InteriorRingN(geometry, index)

Devuelve el elemento de anillo interior en el índice especificado (los índices comienzan en 1). Si el índice dado es menor que 1 o mayor que el número total de anillos internos en la geometría especificada, devuelve un valor nulo. Arroja un error si la geometría especificada no es un polígono. Para encontrar el número total de elementos, utilice ST_NumInteriorRing. Ejemplo:

SELECT ST_InteriorRingN(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'),1)

ST_InteriorRings(geometry)

Devuelve una matriz geométrica de todos los anillos interiores encontrados en la geometría especificada, o una matriz vacía si el polígono no tiene anillos interiores. Si la geometría especificada está vacía, devuelve un valor nulo. Arroja un error si la geometría especificada no es un polígono. Ejemplo:

SELECT ST_InteriorRings(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'))

ST_IsClosed(geometry)

Toma como entrada solo los tipos de datos geométricos line y multiline. Devuelve TRUE (tipo boolean) si y solo si la línea está cerrada. Ejemplo:

SELECT ST_IsClosed(ST_Line('linestring(0 2, 2 2)'))

ST_IsEmpty(geometry)

Toma como entrada solo los tipos de datos geométricos line y multiline. Devuelve TRUE (tipo boolean) si y solo si la geometría especificada está vacía, es decir, cuando los valores de inicio y finalización de line coinciden. Ejemplo:

SELECT ST_IsEmpty(ST_Point(1.5, 2.5))

ST_IsRing(geometry)

Devuelve TRUE (tipo boolean) si y solo si el tipo line está cerrado y es simple. Ejemplo:

SELECT ST_IsRing(ST_Line('linestring(0 2, 2 2)'))

ST_IsSimple(geometry)

Devuelve verdadero si la geometría especificada no tiene puntos geométricos anómalos (por ejemplo, autointersección o autotangencia). Utilice geometry_invalid_reason() para determinar por qué la geometría no es simple. Ejemplo:

SELECT ST_IsSimple(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_IsValid(geometry)

Devuelve verdadero si y solo si la geometría especificada está bien formada. Utilice geometry_invalid_reason() para determinar por qué la geometría no está bien formada. Ejemplo:

SELECT ST_IsValid(ST_Point(61.56, -86.68))

ST_Length(geometry)

Devuelve la longitud de line en tipo double. Ejemplo:

SELECT ST_Length(ST_Line('linestring(0 2, 2 2)'))

ST_NumGeometries(geometry)

Devuelve, como número entero, el número de geometrías de la colección. Si la geometría es una colección de geometrías (por ejemplo, un objeto GEOMETRYCOLLECTION o MULTI*), devuelve el número de geometrías. Las geometrías simples devuelven 1; las geometrías vacías devuelven 0. Una geometría vacía en un objeto GEOMETRYCOLLECTION se cuenta como una geometría. Por ejemplo, el siguiente ejemplo se evalúa en 1:

ST_NumGeometries(ST_GeometryFromText('GEOMETRYCOLLECTION(MULTIPOINT EMPTY)'))

ST_NumInteriorRing(geometry)

Devuelve el número de anillos interiores de la geometría polygon en tipo bigint. Ejemplo:

SELECT ST_NumInteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_NumPoints(geometry)

Devuelve el número de puntos de la geometría en tipo bigint. Ejemplo:

SELECT ST_NumPoints(ST_Point(1.5, 2.5))

ST_PointN(lineString, index)

Devuelve, como tipo de datos geométricos de punto, el vértice de la cadena de línea especificada en el índice entero especificado. Los índices comienzan en 1. Si el índice dado es menor que 1 o mayor que el número total de elementos de la colección, devuelve un valor nulo. Para encontrar el número total de elementos, utilice ST_NumPoints. Ejemplo:

SELECT ST_PointN(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]),1)

ST_Points(geometry)

Devuelve una matriz de puntos del objeto de geometría de cadena de línea especificado. Ejemplo:

SELECT ST_Points(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_StartPoint(geometry)

Devuelve el primer punto de un tipo de datos geométricos line en un tipo de datos geométricos point. Ejemplo:

SELECT ST_StartPoint(ST_Line('linestring(0 2, 2 2)'))

ST_X(point)

Devuelve la coordenada X de un punto en tipo double. Ejemplo:

SELECT ST_X(ST_Point(1.5, 2.5))

ST_XMax(geometry)

Devuelve la coordenada X máxima de una geometría en tipo double. Ejemplo:

SELECT ST_XMax(ST_Line('linestring(0 2, 2 2)'))

ST_XMin(geometry)

Devuelve la coordenada X mínima de una geometría en tipo double. Ejemplo:

SELECT ST_XMin(ST_Line('linestring(0 2, 2 2)'))

ST_Y(point)

Devuelve la coordenada Y de un punto en tipo double. Ejemplo:

SELECT ST_Y(ST_Point(1.5, 2.5))

ST_YMax(geometry)

Devuelve la coordenada Y máxima de una geometría en tipo double. Ejemplo:

SELECT ST_YMax(ST_Line('linestring(0 2, 2 2)'))

ST_YMin(geometry)

Devuelve la coordenada Y mínima de una geometría en tipo double. Ejemplo:

SELECT ST_YMin(ST_Line('linestring(0 2, 2 2)'))

Funciones de agregación

convex_hull_agg(geometry)

Devuelve la geometría convexa mínima que encierra todas las geometrías pasadas como entrada.

geometry_union_agg(geometry)

Devuelve una geometría que representa la unión del conjunto de puntos de las geometrías pasadas como entrada.

Funciones de mosaicos de Bing

Las siguientes funciones convierten geometrías y mosaicos en el sistema de mosaicos de Bing Maps de Microsoft.

bing_tile(x, y, zoom_level)

Devuelve un objeto de mosaico de Bing a partir de coordenadas enteras x y y y el nivel de zoom especificado. El nivel de zoom debe ser un entero del 1 al 23. Ejemplo:

SELECT bing_tile(10, 20, 12)

bing_tile(quadKey)

Devuelve un objeto de mosaico de Bing de una clave cuádruple (quadkey). Ejemplo:

SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 12)))

bing_tile_at(latitude, longitude, zoom_level)

Devuelve un objeto de mosaico de Bing en la latitud, longitud y nivel de zoom especificados. La latitud debe estar entre -85.05112878 y 85.05112878. La longitud debe estar entre -180 y 180. Los valores latitude y longitude deben ser un entero double y zoom_level. Ejemplo:

SELECT bing_tile_at(37.431944, -122.166111, 12)

bing_tiles_around(latitude, longitude, zoom_level)

Devuelve una matriz de mosaicos de Bing que indican el punto de latitud y longitud especificado en el nivel de zoom especificado. Ejemplo:

SELECT bing_tiles_around(47.265511, -122.465691, 14)

bing_tiles_around(latitude, longitude, zoom_level, radius_in_km)

Devuelve, en el nivel de zoom especificado, una matriz de mosaicos de Bing. La matriz contiene el conjunto mínimo de mosaicos de Bing que cubre un círculo del radio especificado en kilómetros alrededor de la latitud y longitud especificadas. Los valores latitude, longitude y radius_in_km son double; el nivel de zoom es un integer. Ejemplo:

SELECT bing_tiles_around(37.8475, 112.596667, 10, .5)

bing_tile_coordinates(tile)

Devuelve las coordenadas x y y del mosaico de Bing especificado. Ejemplo:

SELECT bing_tile_coordinates(bing_tile_at(37.431944, -122.166111, 12))

bing_tile_polygon(tile)

Devuelve la representación poligonal del mosaico de Bing especificado. Ejemplo:

SELECT bing_tile_polygon(bing_tile_at(47.265511, -122.465691, 4))

bing_tile_quadkey(tile)

Devuelve la clave cuádruple del mosaico de Bing especificado. Ejemplo:

SELECT bing_tile_quadkey(bing_tile(52, 143, 10))

bing_tile_zoom_level(tile)

Devuelve el nivel de zoom del mosaico de Bing especificado como un entero. Ejemplo:

SELECT bing_tile_zoom_level(bing_tile(52, 143, 10))

geometry_to_bing_tiles(geometry, zoom_level)

Devuelve el conjunto mínimo de mosaicos de Bing que cubre completamente la geometría especificada en el nivel de zoom especificado. Se admiten niveles de zoom de 1 a 23. Ejemplo:

SELECT geometry_to_bing_tiles(ST_Point(61.56, 58.54), 10)