Más

Postgis inserta una consulta para almacenar geometría y otros datos.

Postgis inserta una consulta para almacenar geometría y otros datos.


Estoy usando funciones de Postgisst_dumpyst_splitpara dividir un polígono en función de la línea. Ahora, después de dividir; la geometría de salida también se almacena en una tabla de base de datos. Aquí está la consulta:

inserte en aoo (geom) SELECT ST_AsTEXT ((ST_Dump (ST_Split (círculo, línea))). geom) Como wkt FROM (SELECT ST_GeomFromText ('LINESTRING (73.33393335342407 33.82005181729661,73.33685159683228 43.80892) As960, seleccione línea', círculo de aoo donde gid = 71)) Como foo;

Pero, el problema es que también quiero almacenar otros datos con estas geometrías. Como

insertar en aoo (geom, nombre)

pero no sé cuál es la forma de hacerlo.


En primer lugar, no use ST_AsText cuando desee recuperar una geometría, simplemente se devolverá a la geometría, por lo que es una pérdida de ciclos.

No estoy seguro de dónde proviene su campo de nombre que desea insertar, por lo que asumiré que proviene de su registro de círculo. Tenga en cuenta que el truco está en su subselección de foo, primero debe enumerar todos los campos que desea recuperar.

INSERT INTO aoo (geom, name) SELECT (ST_Dump (ST_Split (circle, line))). Geom, foo.name FROM ST_GeomFromText ('LINESTRING (73.33393335342407 33.82005181729661,73.33685159683228 33.80960 INNER66 AsIN) (SEL. círculo, nombre de aoo donde gid = 71) Como foo ON ST_Intersects (línea, foo.circle);

Debería poder hacer esto:

Insertar INTO aoo (geom, out_name) SELECT ST_AsTEXT ((ST_Dump (ST_Split (círculo, línea))). Geom) Como wkt, in_name FROM (SELECT ST_GeomFromText ('LINESTRING (73.33393335342407 33.82005181729661,73.32850.15980) Como línea (seleccione geom As círculo de aoo donde gid = 71)) As foo;

dóndeout_namees el nombre de campo del campo de nombre en la tabla de destino &en nombrees el nombre de campo del campo de nombre en la tabla de origen


Bueno, otros han intentado responder bien a mi pregunta. Pero esos no están de acuerdo con mis requisitos. Lo que hice en este caso fue manejar el caso enExtremo del servidor.Usando la matriz PHP, obtenga las geometrías descargadas:

while ($ fila = pg_fetch_assoc ($ rs)) {$ resultado [] = $ fila ['wkt']; }

Al usar el fragmento anterior, cadaarrojadola geometría se almacena en un índice en$ resultadoformación. Por lo tanto, podemos usarinsertaroactualizarconsulta para almacenar datos que no sean geometrías. ¡Salud!