4

我有一个多边形的 SqlGeography 列表。我想将它们组合成一个多多边形类型的 SqlGeography。

List<SqlGeography> areaPolygons = GetAreaPolygons()
SqlGeography multiPoly = null;

foreach (SqlGeography geog in areaPolygons)
{
    /// Combine them somehow?
}
4

1 回答 1

5

我找到了一种使用 SqlGeographyBuilder 的方法,可能有一种更有效的方法,但这有效:

List<SqlGeography> areaPolygons = GetAreaPolygons()
SqlGeography multiPoly = null;

SqlGeographyBuilder sqlbuilder = new SqlGeographyBuilder();
sqlbuilder.SetSrid(4326);
sqlbuilder.BeginGeography(OpenGisGeographyType.MultiPolygon);

foreach (SqlGeography geog in areaPolygons)
{
    sqlbuilder.BeginGeography(OpenGisGeographyType.Polygon);

    for (int i = 1; i <= geog.STNumPoints(); i++)
        {
            if (i == 1)
                sqlbuilder.BeginFigure((double)geog.STPointN(i).Lat, (double)geog.STPointN(i).Long);
            else
                sqlbuilder.AddLine((double)geog.STPointN(i).Lat, (double)geog.STPointN(i).Long);
        }

        sqlbuilder.EndFigure();
        sqlbuilder.EndGeography();
}

sqlbuilder.EndGeography();
multiPoly = sqlbuilder.ConstructedGeography;
于 2014-07-07T11:12:17.380 回答