繁体   English   中英

从几何点提取多边形纬度/经度

[英]Extract Polygon Lat/Longs from Geometry Point

让我先声明一下,我已经查看了我遇到的几乎所有 Stackoverflow 问题,但我似乎找不到任何有效的方法。 我开始觉得我做错了。

我有存储在Geometry类型中的形状。 在我的 WPF 应用程序中,形状应如下所示 -

在此处输入图像描述

问题是我的很多几何点都是GEOMETRYCOLLECTION 在我的应用程序中,我需要多边形纬度/经度点。 几何集合也包含线串,我不需要。 我只需要多边形点。

例子 -

在此处输入图像描述

我有没有办法通过 SQL 服务器提取多边形纬度/经度点? 我们以前使用过Geom.STConvexHull() function,但是我需要比它提供的更多的定义点。

你可以像这样使用一个小助手 function :

create or alter function GetGeometries(@geo geometry, @geometry_type varchar(200) = null)
returns @geometries table (i int primary key, geo geometry)
as
begin
  declare @i int = 1;
  while (1=1)
  begin
    declare @g geometry = @geo.STGeometryN(@i);
    if @g is null break;

    if (@geometry_type is null or @g.InstanceOf(@geometry_type)=1 )
    begin
      insert into @geometries(i,geo)values (@i, @g);
    end
    set @i += 1;
  end

  return;
end

go

create or alter function GetPoints(@geo geometry)
returns @geometries table (i int primary key, point geometry)
as
begin
  declare @i int = 1;
  while (1=1)
  begin
    declare @g geometry = @geo.STPointN(@i);
    if @g is null break;

    insert into @geometries(i,point)values (@i, @g);

    set @i += 1;
  end

  return;
end

go


DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';

SELECT g.i geometry_index, p.i point_index, p.point.STX X, p.point.STY Y
from dbo.GetGeometries(@g,'POLYGON') g
outer apply dbo.GetPoints(g.geo) p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM