none
Geometry Punkte aus Tabelle zu Linestring machen RRS feed

  • Frage

  • Hallo Zusammen,

    ich habe in einer Tabelle Punkte

    insert into @tmp values (0x00000000010C00000000000008400000000000000000)
    
    insert into @tmp values (0x00000000010C0A8A9E4C3979AA3C0000000000000840)
    
    insert into @tmp values (0x00000000010C00000000000008C00A8A9E4C3979BA3C)
    
    insert into @tmp values (0x00000000010C88E776F9EADAC3BC00000000000008C0)
    

    diese möchte ich jetzt gerne zu einem Linestring verbinden.

    Geht das irgendwie? Meine Versuche sind bis jetzt gescheitert.

    Viele Grüße

    Anna

    Donnerstag, 14. März 2013 11:38

Antworten

  • Hallo Anna,

    so solltest Du es hin bekommen:

    -- Tabellenvariable erstellen und mit Punkten füllen
    DECLARE @tmp AS TABLE (point geometry);
    insert into @tmp values (0x00000000010C00000000000008400000000000000000);
    insert into @tmp values (0x00000000010C0A8A9E4C3979AA3C0000000000000840);
    insert into @tmp values (0x00000000010C00000000000008C00A8A9E4C3979BA3C);
    insert into @tmp values (0x00000000010C88E776F9EADAC3BC00000000000008C0);
    
    -- Kontrollausgabe
    SELECT *, point.ToString() as PointString
    FROM @tmp;
    
    -- Alle Punkte als komma-separierte Liste
    DECLARE @string varchar(200);
    SET @string = '';
    
    SELECT @string = @string + SUBSTRING(point.ToString(), 8, LEN(point.ToString()) - 8) + ', '
    FROM @tmp;
    
    -- Hängendes Komma entfernen
    SET @string = LEFT(@string, LEN(@string) - 1);
    -- Kontrollausgabe
    PRINT @string;
    
    -- Ausgabe als LineString
    SELECT geometry::STGeomFromText('LINESTRING(' + @string + ')', 0)

    Ergebnis:


    Olaf Helper

    Blog Xing

    Mittwoch, 20. März 2013 12:03

Alle Antworten

  • Hallo Anna,

    Was für Punkte sind diese?

    Schau Dir mal folgenden Links an http://msdn.microsoft.com/en-us/library/bb964737.aspx

    http://msdn.microsoft.com/en-us/library/bb895372.aspx

    Gruss,
    Ionut

    Freitag, 15. März 2013 12:02
    Moderator
  • Hallo Anna,

    so solltest Du es hin bekommen:

    -- Tabellenvariable erstellen und mit Punkten füllen
    DECLARE @tmp AS TABLE (point geometry);
    insert into @tmp values (0x00000000010C00000000000008400000000000000000);
    insert into @tmp values (0x00000000010C0A8A9E4C3979AA3C0000000000000840);
    insert into @tmp values (0x00000000010C00000000000008C00A8A9E4C3979BA3C);
    insert into @tmp values (0x00000000010C88E776F9EADAC3BC00000000000008C0);
    
    -- Kontrollausgabe
    SELECT *, point.ToString() as PointString
    FROM @tmp;
    
    -- Alle Punkte als komma-separierte Liste
    DECLARE @string varchar(200);
    SET @string = '';
    
    SELECT @string = @string + SUBSTRING(point.ToString(), 8, LEN(point.ToString()) - 8) + ', '
    FROM @tmp;
    
    -- Hängendes Komma entfernen
    SET @string = LEFT(@string, LEN(@string) - 1);
    -- Kontrollausgabe
    PRINT @string;
    
    -- Ausgabe als LineString
    SELECT geometry::STGeomFromText('LINESTRING(' + @string + ')', 0)

    Ergebnis:


    Olaf Helper

    Blog Xing

    Mittwoch, 20. März 2013 12:03
  • Hallo Anna,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Danke und viele Grüße,
    Ionut

    Dienstag, 26. März 2013 13:55
    Moderator