【发布时间】: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(.. 开头
但最近我意识到有些城镇包含更多的多边形,WellKnownText 以MULTIPOLYGON(.. 开头,而函数STPolyFromText 以错误结尾。
我已将它放在try{} 块中,但在catch{} - 如果值是多多边形 - 是否有可能以某种方式获得单个多边形?我知道有方法STMPolyFromText,但我无法访问那里的单个多边形,只能像方法STPolyFromText那样访问。
我的目标是将多面体拆分为多边形,然后对每个多边形执行与上述相同的方法。
【问题讨论】:
标签: c# polygon geography sqlgeography