【问题标题】:SqlGeography get polygons from multipolygonSqlGeography 从多多边形中获取多边形
【发布时间】:2014-10-06 23:50:35
【问题描述】:

我有一个表 Town 与列 TownBoundary 包含相关城镇的多边形(geography 数据类型)。

对于每个城镇,我都会获得生成 KML(XML) 文件所需的多边形数据,例如:

sqlg = SqlGeography.STPolyFromText(new SqlChars(
town.TownBoundary.WellKnownValue.WellKnownText),
town.TownBoundary.CoordinateSystemId);
for (int i = 1; i <= sqlg.STNumPoints(); i++)
{
    SqlGeography point = sqlg.STPointN(i);
    var pLong = (point.Long).ToString().Replace(",", ".");
    var pLat = (point.Lat).ToString().Replace(",", ".");
    double dLong = double.Parse(pLong, CultureInfo.InvariantCulture);
    double dLat = double.Parse(pLat, CultureInfo.InvariantCulture);
    kmlCoordinates.Add(new Vector(dLat, dLong)); //one point od polygon
}

town.TownBoundary.WellKnownValue.WellKnownText 的值以 POLYGON(.. 开头

但最近我意识到有些城镇包含更多的多边形,WellKnownTextMULTIPOLYGON(.. 开头,而函数STPolyFromText 以错误结尾。

我已将它放在try{} 块中,但在catch{} - 如果值是多多边形 - 是否有可能以某种方式获得单个多边形?我知道有方法STMPolyFromText,但我无法访问那里的单个多边形,只能像方法STPolyFromText那样访问。

我的目标是将多面体拆分为多边形,然后对每个多边形执行与上述相同的方法。

【问题讨论】:

    标签: c# polygon geography sqlgeography


    【解决方案1】:

    解决了,在方法@​​987654321@ 中我可以使用STNumGeometries 获取多边形数组。

    sqlg = SqlGeography.STMPolyFromText(
    new SqlChars(town.TownBoundary.WellKnownValue.WellKnownText),
    town.TownBoundary.CoordinateSystemId);
    for (int i = 1; i <= sqlg.STNumGeometries(); i++)
    {
     SqlGeography poly = sqlg.STGeometryN(i);
     //foreach poly
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-14
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 2013-11-29
      相关资源
      最近更新 更多