2012-12-31 18 views
3
SQL SERVER 2012 

我需要找到一个线的几何形状的长度我用STIntersect后对相交多边形几何线条的几何多边形相交后。例如,我有一条长度为7731米的线条,但是然后对着一组多边形,我需要找到这条线的长度在每个多边形中的长度。查找几何线的长度是用STIntersect

输出表看起来像

ReferenceID PolygonID LineID Length 
12324   3234  24661 1635 
12325   3233  24652  663 
12326   3236  24653  256 
12327   3365  24634  165 

目前使用的这一点,但无法返回几何也不长度

insert [VMS_OBS_LINES_INTERSECT] (CA_Reference_Key, STAT_AREA,WATERS,GNMFSAREA, Grid_ID, Length)select l.CA_Reference_Key,g.stat_area,g.waters, g.GNMFSAREA , g.Grid_ID, g.shape.STIntersection(l.shape).STLength() 
FROM GRID_AREA_SQL g, VMS_OBS_COMBINE_LINES_AI l 
WHERE g.shape.STIntersects(l.shape) = 1; 
+0

这是否回答你的问题? MarkD

回答

3
declare @g geometry, @l geometry; 

select @g = geometry::STGeomFromText('POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))', 0), --10x10 box 
     @l = geometry::STGeomFromText('LINESTRING(-10 -10 , 20 20)', 0); --a line that will go through the corners of the box 

select @g.STIntersection(@l).STLength();