Я не могу найти никаких функций, которые выполняли бы это в SQL Server 2008, но я также относительно новичок в функциях sql SQL Server 2008.
Имея дело с SQL Server 2008, я обычно просматриваю форумы PostGIS и списки адресов электронной почты и смотрю, как это делается там (PostgreSQL-PostGIS занимаются этим намного дольше). Кажется, у кого-то возникла противоположная проблема как этот, который, по-видимому, является результатом, которого вы добиваетесь.
К сожалению, ST_LineMerge (или STLineMerge) не существует, так что вам, вероятно, придется создать свой собственный.
Я не уверен, что эти примеры будут работать во всех случаях (и сами строки не в последовательном порядке):
select geometry::STGeomFromText(Replace(@g2.STSymDifference(@g1).ToString(),'))','),' + Replace(@g1.STIntersection(@g2).ToString(),'LINESTRING','') + ')'), @g1.STSrid).STAsText()
здесь та же логика с фактическими данными строки:
DECLARE @g1 geometry;
DECLARE @g2 geometry;
DECLARE @g3 geometry;
SET @g1 = geometry::STGeomFromText('LINESTRING(0 0, 0 20)', 0);
SET @g2 = geometry::STGeomFromText('LINESTRING(0 5, 0 10)', 0);
SELECT @g1.STIntersection(@g2).ToString();
SELECT @g1.STIntersection(@g2).STAsText();
SELECT @g2.STSymDifference(@g1).ToString();
select @g1.STIntersection(@g2).ToString();
SET @g3 = geometry::STGeomFromText(Replace(@g2.STSymDifference(@g1).ToString(),'))','),' + Replace(@g1.STIntersection(@g2).ToString(),'LINESTRING','') + ')'), @g1.STSrid);
select @g3.STAsText();
person
Community
schedule
16.03.2009