Estoy tratando de calcular los centroides x e y de una tabla utilizando ST_Centroide . La documentación dice que devuelve el centro geométrico de una geometría. Primero hice una columna X
:
ALTER TABLE "test_table" ADD X double precision;
y pensaba almacenar allí la componente x del centroide. Mi código para calcular el centroide es el siguiente:
select
ST_Centroid(a.the_geom)
FROM
"test_table" AS a
Sin embargo, esta consulta devuelve el siguiente resultado que no entiendo:
"01010000006BAEC2FBDFC61E415B3E9E2946520541"
"0101000000E6ABADEBFEC51E4102E9A95858520541"
"01010000003233333321C61E410BD7A37061520541"
"0101000000F710787300C61E4177C8C783D94E0541"
Mi segundo problema con este enfoque es tratar de almacenar el resultado. Cuando intenté insertar este resultado en la Columna X
No he podido averiguar la sintaxis correcta. Lo que intenté usar fue:
INSERT INTO "test_table" (X)
VALUES ( ST_Centroid(a.the_geom) ),
FROM "test_table" AS a
y también
INSERT INTO "test_table" (X)
VALUES ( SELECT ST_Centroid(a.the_geom)
FROM "test_table" AS a)
pero ninguno de ellos funciona.
Mis dos preguntas básicas son (1) cuál es el valor que devuelve ST_Centroid
y (2) ¿cómo puedo insertar el resultado en una tabla existente?
0 votos
He probado la solución de Underdark, o una variación de la misma: ALTER TABLE parcels2012_2 ADD x double precision; ALTER TABLE parcels2012_2 ADD y double precision; UPDATE parcels2012_2 SET x = ST_X(ST_PointOnSurface(the_geom)); UPDATE parcels2012_2 SET y = ST_Y(ST_PointOnSurface(the_geom)); Sin embargo, obtengo un error: ¡NOTICE: TopologyException: side location conflict at -80.206658911211804 26.809848924607316 ERROR: GEOS pointonsurface() threw an error! ¿Alguna idea? Puedo devolver fácilmente puntos individuales, e incluso pequeños subconjuntos, pero no puede manejar los 625.000 polígonos en un solo comando.
0 votos
Esto es una pregunta, no una respuesta.
0 votos
Le recomiendo que formule una nueva pregunta si su investigación indica que no se ha respondido ya aquí o en otro lugar.
0 votos
Se ha contestado (hace 2 años) y con la respuesta correcta marcada