関連する町のポリゴン(データ型)を含むTown列を持つテーブルがあります。TownBoundarygeography
町ごとに、次のような 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{}-値がマルチポリゴンの場合-どうにかして個々のポリゴンを取得することは可能ですか? method があることは知っていSTMPolyFromTextますが、そこにある個々のポリゴンにアクセスすることはできず、 method のようにポイントにのみアクセスできますSTPolyFromText。
私の目標は、マルチポリゴンをポリゴンに分割し、foreach ポリゴンよりも上記と同じ方法を実行することです。