我有一个csv文件,列出了各种多边形的X和Y坐标。我有一个名为" Polygon"使用文本字段中的区域和名称等功能。
csv文件示例:
这些是2个正方形形状,一个的左下角为0,0,另一个为5,5。
问题是,如何使用我的" Polygon" master,它占用表中列出的坐标。所以一个" Polygon"将是0,0,其他是5,5。
" FID"是序列中的唯一编号,有助于识别下一个点。 "#形状"有助于确定坐标属于哪个形状。例如:Shape#1有4个顶点(0,0; 1,0; 1,1; 0,1),第5个顶点(0,0再次)关闭形状。 " FID"有助于确定这些顶点的顺序,即1,1在1.0之后出现,反之亦然。
所以,如果我想绘制Shape#1,它将是一个边长为1个单位的正方形。
感谢任何帮助。
感谢。
答案 0 :(得分:0)
下面的C#示例可能会对您有所帮助。它不会使用大师和掉落,但这应该大致完成你所需要的。
var data = new[]
{
new {FID = 0, ShapeNum = 1, X = 0.0, Y = 0.0},
new {FID = 1, ShapeNum = 1, X = 1.0, Y = 0.0},
new {FID = 2, ShapeNum = 1, X = 1.0, Y = 1.0},
new {FID = 3, ShapeNum = 1, X = 0.0, Y = 1.0},
new {FID = 4, ShapeNum = 1, X = 0.0, Y = 0.0},
new {FID = 5, ShapeNum = 2, X = 5.0, Y = 5.0},
new {FID = 6, ShapeNum = 2, X = 6.0, Y = 5.0},
new {FID = 7, ShapeNum = 2, X = 6.0, Y = 6.0},
new {FID = 8, ShapeNum = 2, X = 5.0, Y = 6.0},
new {FID = 9, ShapeNum = 2, X = 5.0, Y = 5.0}
};
// group by shapenum
var data2 = from record in data
group record by record.ShapeNum
into g
select new {ShapeNum = g.Key, Records = g}
;
var app = new Microsoft.Office.Interop.Visio.ApplicationClass();
var doc = app.Documents.Add("");
var page = doc.Pages[1];
foreach (var g in data2)
{
var sorted_records = g.Records.OrderBy(i => i.FID).ToList();
var doubles = new List<double>();
foreach (var r in sorted_records)
{
doubles.Add(r.X);
doubles.Add(r.Y);
}
page.DrawPolyline(doubles.ToArray(), 0);
}