Me gustaría crear un vectorLayer QGISpara mostrar todos los puntos que forman una LINESTRINGo una MULTILINESTRINGalmacenada en una base de PostGISdatos.
Creo que necesito transformar todos los puntos de LINESTRING(o MULTILINESTRING) a POINT.
Primera pregunta :
¿Hay alguna PostGISfunción para hacer eso?
Segunda pregunta :
Si quiero excluir puntos duplicados de la POINTtabla de resultados , ¿cómo puedo hacer eso?
qgis
postgis
point
polyline-creation
linestring
Heisenbug
fuente
fuente

Respuestas:
Para obtener un punto en orden y un enlace a la geometría original, use
y elimine los duplicados de http://wiki.postgresql.org/wiki/Deleting_duplicates
recuerde que necesita tener una identificación única para eliminar duplicados, si no tiene una necesita crearla
fuente
SELECT (ST_DumpPoints(the_geom)).path as path, id, (ST_DumpPoints(the_geom)).geom FROM linestringsEn cuanto a la primera pregunta, existe una función PostGIS solo para eso, ST_DumpPoints .
El primer ejemplo en la página de documentos es exactamente lo que necesita. Es una función de retorno de conjunto, por lo que no solo volca los puntos, sino también cierta información (la matriz de ruta) que los relaciona con la geometría original. Como solo te interesan los puntos, puedes probar algo como esto:
fuente
anuncio 1.
anuncio 2. Seleccione puntos duplicados PostGIS
fuente
OGC WKB expected, EWKB provided - use GeometryFromEWKB() for this. Podrías saltarte porST_AsEWKB()completo, pero aún así no tendría ningún sentido, mira el último ejemplo en ST_PointFromWKBPara volcar solo puntos únicos, puede usar algunas subconsultas con una
SELECT DISTINCT ONexpresión :fuente