1 votos

Cómo seleccionar todos los puntos de un polígono en Spatialite

Necesito seleccionar todas las coordenadas de los vértices de una tabla de polígonos en Spatialite DB. En PostGIS, normalmente haría algo como

SELECT 
  st_x((st_dumppoints(poly_geom)).geom),
  st_y((st_dumppoints(poly_geom)).geom)
FROM
  my_poly_table;

Pero no hay st_dumppoints en Spatialite. ¿Cómo puedo obtener una tabla con todos los vértices de cada característica?

2voto

GriffinHeart Puntos 187

Con esto debería bastar:

SELECT 
ST_X(ST_Centroid(ST_DissolvePoints(geometry))), 
ST_Y(ST_Centroid(ST_DissolvePoints(geometry))) 
FROM my_poly_table;

0voto

Joe Puntos 16

Es un proceso de dos fases que debe utilizar ST_DissolvePoints https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html y geometrías elementales https://www.gaia-gis.it/fossil/libspatialite/info/d6069e7bf8c7f124

La tabla virtual ElementaryGeometries se introdujo en SpatiaLite 4.2.1 pero tuve que utilizar la versión 4.4.0-RC0 para obtener los resultados.

En primer lugar, cree una nueva tabla 'multipoints' que almacene las geometrías de los polígonos como multipuntos. He aquí un ejemplo con un polígono en línea:

CREATE TABLE multipoints AS 
SELECT  ST_DissolvePoints
(ST_GeomFromText('POLYGON (( 340 520, 340 540, 360 540, 360 520, 340 520 ))'))
AS geometry;

Ahora puede consultar la tabla virtual ElementaryGeometries:

SELECT mp.rowid, e.item_no, ST_AsText(e.geometry) AS geometry
FROM multipoints AS mp
JOIN ElementaryGeometries AS e ON (e.f_table_name = 'multipoints' 
AND e.origin_rowid = mp.rowid);

1   0   POINT(340 520)
1   1   POINT(340 540)
1   2   POINT(360 540)
1   3   POINT(360 520)
1   4   POINT(340 520)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X