Devuelve o establece el identificador de referencia espacial
SRID(tcbuffer) → integer setSRID(tcbuffer,integer) → tcbuffer
SELECT SRID(tcbuffer 'SRID=5676; [Cbuffer(Point(0 0),1)@2001-01-01, Cbuffer(Point(1 1),2)@2001-01-02)'); -- 5676 SELECT asEWKT(setSRID(tcbuffer '[Cbuffer(Point(0 0),1)@2001-01-01, Cbuffer(Point(1 1),2)@2001-01-02)', 5676)); -- SRID=5676;[Cbuffer(POINT(0 0),1)@2001-01-01, Cbuffer(POINT(1 1),2)@2001-01-02)
Transforma a una referencia espacial diferente
transform(tcbuffer,integer) → tcbuffer transformPipeline(tcbuffer,pipeline text,srid integer, is_forward boolean=true) → tcbuffer
La función transform especifica la transformación con un SRID de destino. Se genera un error cuando el búfer circular temporal de entrada tiene un SRID desconocido (representado por 0). La función transformPipeline especifica la transformación con una canalización de transformación de coordenadas definida representada con el siguiente formato de cadena: urn:ogc:def:coordinateOperation:AUTHORITY::CODE. El SRID del búfer circular temporal de entrada se ignora y el SRID del búfer circular temporal de salida se establecerá en cero a menos que se proporcione un valor a través del parámetro opcional srid. Como se indica en el último parámetro, la canalización se ejecuta de forma predeterminada en dirección hacia adelante; al establecer el parámetro en falso, la canalización se ejecuta en la dirección inversa.
SELECT asEWKT(transform(tcbuffer 'SRID=4326;Cbuffer(Point(4.35 50.85),1)@2001-01-01', 3812)); -- SRID=3812;Cbuffer(POINT(648679.0180353033 671067.0556381135),1)@2001-01-01
WITH test(tcbuffer, pipeline) AS (
SELECT tcbuffer 'SRID=4326;{Cbuffer(Point(4.3525 50.846667),1)@2001-01-01,
Cbuffer(Point(-0.1275 51.507222),2)@2001-01-02}',
text 'urn:ogc:def:coordinateOperation:EPSG::16031' )
SELECT asEWKT(transformPipeline(transformPipeline(tcbuffer, pipeline, 4326), pipeline,
4326, false), 6) FROM test;
/* SRID=4326;{Cbuffer(POINT(4.3525 50.846667),1)@2001-01-01,
Cbuffer(POINT(-0.1275 51.507222),2)@2001-01-02} */
Devuelve el área atravesada por el búfer circular temporal
traversedArea(tcbuffer,unary_union boolean=false) → geometry
SELECT ST_AsText(traversedArea(tcbuffer '[Cbuffer(Point(1 1), 0.3)@2001-01-01, Cbuffer(Point(1 1), 0.5)@2001-01-02]')); -- CURVEPOLYGON(CIRCULARSTRING(0.5 1,1.5 1,0.5 1)) SELECT ST_AsText(traversedArea(tcbuffer '[Cbuffer(Point(1 1), 0.5)@2001-01-01, Cbuffer(Point(3 1), 0.5)@2001-01-02, Cbuffer(Point(1 1), 0.5)@2001-01-03]', true)); /* CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(3 0.5,3.5 1,3 1.5),(3 1.5,1 1.5), CIRCULARSTRING(1 1.5,0.646446609406726 1.353553390593274,0.5 1), CIRCULARSTRING(0.5 1,0.646446609406726 0.646446609406726,1 0.5),(1 0.5,3 0.5))) */ SELECT ST_AsText(traversedArea(tcbuffer '[Cbuffer(Point(1 1), 0)@2001-01-01, Cbuffer(Point(3 1), 0)@2001-01-02, Cbuffer(Point(4 1), 0.5)@2001-01-03]', true)); /* GEOMETRYCOLLECTION(CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(3.75 0.566987298107781, 4.5 1,3.75 1.433012701892219),(3.75 1.433012701892219,3 1,3.75 0.566987298107781))), LINESTRING(1 1,3 1)) */
El argumento es falso salvo que se indique, y la función responde entonces las piezas que barre el búfer, cada una un disco o la región que un disco barre entre dos instantes consecutivos, reunidas en una geometría. Con unary_union = true se disuelven en la región que cubren, calculada de forma exacta: cada encuentro de los círculos y de los segmentos que los unen se decide sobre las coordenadas de entrada, ningún arco se reemplaza por segmentos y solo se redondean los vértices del resultado, cada uno una vez. El resultado conserva sus arcos, como CURVEPOLYGON o MULTISURFACE. Donde el búfer mantiene un radio nulo, la línea o el punto que traza y que ningún disco cubre se devuelve junto a las superficies en una GEOMETRYCOLLECTION. Donde el cálculo no puede decidir un encuentro o un orden de los bordes, la función genera un error en lugar de responder una aproximación.
Devuelve el punto geométrico temporal dado por los centros de un búfer circular temporal
centroid(tcbuffer) → tgeompoint
SELECT asText(centroid(tcbuffer '[Cbuffer(Point(1 1), 0.5)@2001-01-01, Cbuffer(Point(3 3), 0.5)@2001-01-03]')); -- [POINT(1 1)@2001-01-01, POINT(3 3)@2001-01-03]
Devuelve la envolvente convexa del área atravesada por el búfer circular temporal
convexHull(tcbuffer) → geometry
La envolvente convexa se calcula sobre el área atravesada exacta, arcos incluidos: un arco alcanza más allá de los puntos que lo definen, por lo que aporta a la envolvente el trozo de su círculo que ninguna otra característica del área alcanza. Por lo tanto, el resultado es un CURVEPOLYGON curvo delimitado por un COMPOUNDCURVE de arcos circulares y segmentos rectos, tan exacto como la región que devuelve traversedArea. La envolvente es lineal solo cuando el búfer mantiene un radio cero, ya que el área atravesada no lleva entonces ningún arco.
SELECT ST_AsText(convexHull(tcbuffer '[Cbuffer(Point(1 1), 0.5)@2001-01-01, Cbuffer(Point(1 3), 0.5)@2001-01-02]')); /* CURVEPOLYGON(COMPOUNDCURVE((1.5 3,1.5 1),CIRCULARSTRING(1.5 1,1 0.5,0.5 1), (0.5 1,0.5 3),CIRCULARSTRING(0.5 3,1 3.5,1.5 3))) */ SELECT ST_AsText(convexHull(tcbuffer '[Cbuffer(Point(1 1), 0)@2001-01-01, Cbuffer(Point(1 3), 0)@2001-01-02, Cbuffer(Point(3 3), 0)@2001-01-03]')); -- POLYGON((1 1,1 3,3 3,1 1))