我有一个数据表zct(区域/多边形坐标表),其列定义为:
private void buildZoneDataTable()
{
// Add columns to the DataTable.
zct.Columns.Add("Zone Name", System.Type.GetType("System.String"));
zct.Columns.Add("X_Coordinate", System.Type.GetType("System.Double"));
zct.Columns.Add("Y_Coordinate", System.Type.GetType("System.Double"));
coordDGV.DataSource = zct;
foreach (DataGridViewColumn dgvcol in coordDGV.Columns)
{
dgvcol.SortMode = DataGridViewColumnSortMode.NotSortable;
}
zct的每一行都是我稍后将呈现的多边形顶点的坐标,但现在我的目标是拥有所有命名区域/多边形及其多边形坐标的嵌套列表。
到目前为止,我已经创建了一个polyzone:
private void BuildZoneList()
{
//iterate through all rows of the zct
for (int i = 0; i < zct.Rows.Count; i++)
{
//if first row, or row I has a different name start new zone
if(i == 0 || zct.Rows[i][0] != zct.Rows[i-1][0])
{
//create new polyzone named by the first column
PolyZone pZone = new PolyZone(zct.Rows[i][0].ToString());
}
}
}
下面是我的polyzone类的一个片段:
public class PolyZone
{
public string polyZoneName;
List<Point3D> pointList = new List<Point3D>(0);
Point3D polyCenter = new Point3D(0,0,0);
public PolyZone(string zoneName)
{
polyZoneName = zoneName;
}
public void add(Point3D point3D)
{
pointList.Append(point3D);
}
请尝试以下操作:
class Program
{
static void Main(string[] args)
{
DataTable zct = new DataTable();
zct.Columns.Add("Zone Name", System.Type.GetType("System.String"));
zct.Columns.Add("X_Coordinate", System.Type.GetType("System.Double"));
zct.Columns.Add("Y_Coordinate", System.Type.GetType("System.Double"));
zct.Columns.Add("Z_Coordinate", System.Type.GetType("System.Double"));
var zones = zct.AsEnumerable().GroupBy(x => x.Field<string>("Zone Name")).ToList();
List<PolyZone> polyZones = new List<PolyZone>();
foreach (var zone in zones)
{
PolyZone newZone = new PolyZone(zone.Key);
polyZones.Add(newZone);
foreach (DataRow row in zone)
{
double x = double.Parse(row.Field<string>("X_Coordinate"));
double y = double.Parse(row.Field<string>("Y_Coordinate"));
double z = double.Parse(row.Field<string>("Z_Coordinate"));
newZone.add(new Point3D(x, y, z));
}
}
}
}
public class PolyZone
{
public string polyZoneName;
List<Point3D> pointList = new List<Point3D>(0);
Point3D polyCenter = new Point3D(0, 0, 0);
public PolyZone(string zoneName)
{
polyZoneName = zoneName;
}
public void add(Point3D point3D)
{
pointList.Add(point3D);
}
}
我试图从顶点位置创建一组多边形,保存在X,Y格式。 下面是我的数据的一个例子——每行代表一个多边形的顶点。多边形是正方形 我正在使用,因此我的数据需要在列表中。所以我创建了一个循环来尝试从矩阵中将我的数据转换为列表格式。 我创建了一个循环,遵循我在这个网站上的其他一些问题中找到的代码。我突破了每一步,试图理解为什么我只有一个多边形作为输出,即使我有2组点。 你能帮我理解我如何调整代码写出两个多边形
我的geodataframe如下所示: 我可以在“几何体”列中看到点列表,但我想将这些点拉出并放入列表中。例如,在pandas中,您可以执行类似df['column']的操作。到列表()。但是,在尝试此操作时,我得到一个错误: 你知道我如何去掉“多边形”名称,直接得到组成该多边形的点的列表吗?说清楚,我不想要多边形的外部或边界,我想要边界内的所有点。
我有一些关于点为双类型的多边形的问题...我要做的是,给定点,创建多边形,然后测试1个具体点是否在多边形内。 所以我知道在Java中有一个类,叫做多边形,用得像这样:(三角形) 但我的“多边形”必须是“双”类型,而不是“int”(简单示例) 在我的项目中,我真的不需要在小程序或类似物上绘制它,我只需要计算点是否在里面。 所以我的问题是: 有没有什么方法可以用双坐标来处理多边形,可以计算这个点(双坐
我正在学习图的结构和算法。从概念上讲,我理解DFS、BFS,并且我可以通过一个图来实现它们,但是传统上图是如何组成的呢? 通常,我将它们看作是以边为指针的节点列表、与它们连接的节点的边列表,或者是一个2D矩阵,其中两个节点的交点arr[node_a][node_b]是边的权重。 当涉及到实际构建它的输入,我不知道从哪里开始。
我有一个城市建筑物的框架。这些建筑有一个纬度和经度列,并分组到单独的管理位置。 我已经成功地创建了一个geopandas数据框,每个建筑都有一个“几何”列,其中包含形状优美的点,并在地图上用不同的颜色为每个管理位置绘制这些点。但是,是否有办法按管理位置对geodataframe进行分组,并将“几何体”列作为一个形状良好的多边形,包含每个管理位置内每个建筑对应的点? 我目前有: 但当我绘制它时: 它
我使用以下方法从拉多边形中获取多边形: 但是,我正在尝试从多边形获取坐标,但我不能: poligon@polygons[1]类“Polygons”Slot“Polygon”的对象:[1]类“多边形”Slot”labpt“的对象:[1]-46.37327-23.91955 提前致谢