Ich habe eine mehrzeilige Zeichenfolge und möchte sie in eine Linienfolge konvertieren, um einige Funktionen zu verwenden, die nur mit Linienfolgen funktionieren. Ich ST_Dump()
habe eine Sammlung meiner Geometrien verwendet und bekommen. Wenn ich sie wieder zusammenführe, erhalte ich immer noch den Multilinestring. Soll ich die Npoints bekommen und zusammenfügen oder so, um eine einfache Linienfolge zu erhalten? ST_LineMerge()
funktioniert auch nicht auf meinem Multilinestring, es gibt das gleiche zurück.
mein beispiel,
MULTILINE ((- 3,16420835153456 55,9269166007097, -3,164222 55,926918), (- 3,1642070167833 55,9269296196706, -3,16421351659546 55,9268662214904), (- 3,16421351659546 55,9268662214904, -3,16421636372824 55,9268384509897), (- 3,16421636372824 55,9268384509897, -3,16422182573761 55,9267851753802), (- 3,16422182573761 55,9267851753802, -3,16422870102352 55,926718114886 ), (- 3,16422870102352 55,926718114886, -3,16423309121073 55,926675293667), (- 3,16423309121073 55,926675293667, -3,16423565148822 55,9266503211093), (- 3,16423565148822 55,9266503211093, -3,16424103159897 55,9265978443265), (- 3,16424103159897 55,9265978443265, -3,16424680776317 55,9265415044985), (- 3,16424680776317 55,9265415044985, -3,16425267254583 55,9264843002995 ), (- 3.16425267254583 55.9264843002995, -3.16425541048045 55.9264575949012), (- 3.16425541048045 55.9264575949012, -3.16426111146586 55.9264019883556),(-3,16426111146586 55,9264019883556, -3,1642667032531 55,9263474469124), (- 3,1642667032531 55,9263474469124, -3,16426957768543 55,9263194101362), (- 3,16426957768543 55,9263194101362, -3,16427488261739 55,9262676666359), (- 3,16427488261739 55,9262676666359, -3,16428009893088 55,9262167875066), (- 3,16428009893088 55,9262167875066, -3,164282741107 55,9261910161221), (-3,1642875546472 55,9261440655823, -3,164282741107 55,9261910161221), (- 3,1642875546472 55,9261440655823, -3,16429466890915 55,9260746741522), (- 3,16429466890915 55,9260746741522, -3,16430092974527 55,9260136069079), (- 3,16430092974527 55,9260136069079, -3,16430822838418 55,9259424170929), (- 3,16430822838418 55,9259424170929, -3,16431547242401 55,925871759829), (-3.16431547242401 55.925871759829, -3.16431448732505 55.9258328901507), (- 3.16431770120536 55.9257327846001, -3.16431547242401 55.925871759829), (- 3.164339 55.925777, -3.16431770120536 55.9257327846001))
Antworten:
Sie könnten auch ST_SnapToGrid verwenden , um Ihre Daten zu reparieren, aber Sie müssen mit den Parametern herumspielen , um sie richtig zu machen.
quelle
Sind Sie sicher, dass alle Ihre zu konvertierenden MultiLines konvertiert werden können ?
Ansonsten
ST_LineMerge
sollte funktionieren:AKTUALISIEREN
Das ist also der Multilinestring, den Sie bereitgestellt haben. Sieht von hier oben gültig aus .:
Wenn Sie jedoch zur Überprüfung näher heran zoomen, sehen Sie deutlich, dass dies nicht in eine gültige Linienfolge umgewandelt werden kann.
GÜLTIG:
UNGÜLTIG:
Aber nehmen Sie eine GÜLTIGE Teilmenge Ihrer Punkte und es funktioniert einwandfrei :
quelle
Ziehen Sie die Verwendung von ST_SubDivide in Betracht, um große Geometrien nach Release 2.2.0 in kleinere zu unterteilen.
Ich habe dies auf MultiLineString validiert und getestet, um sie in LineString zu brechen.
https://postgis.net/docs/ST_Subdivide.html
quelle