1

我从这里下载了一个shapefile,它为我提供了一个cantor map。我有DotSpatial并在 c# 中加载了地图。我需要遍历地图并获取每个坐标的高度。

我已经通过 C# 在 WPF 中创建了一个 3d ViewPort,并且有一个网格,我只需要网格上每个点的高度来生成一个 3D 地图。

1-我不知道文件是否有协调的高度。如果此站点未提供具有此属性的文件,我在哪里可以获得具有高度属性的文件?

2- 如何使用 DotSpatial 了解地图的经度和纬度的最小值和最大值?

我想写一些这样的代码。(这只是一个伪代码)

double dx = Math.Abs(MaxLongitude - minLongitude) / myMapGrid.Nx;
double dy = Math.Abs(MaxLatitude - minLatitude) / myMapGrid.Ny;
for (int x = 0; x < myMapGrid.Nx; x++)
{
    for (int y = 0; y < myMapGrid.Ny; y++)
    {
        double z = GetHeightOfCoordination(map, minLongitude+(x*dx), minLatitude+(y*dy));
        SetMapGridData(myMapGrid, x, y, z);
    }
}

3-最后如何获得每个协调点的高度值?

4

1 回答 1

1
 var test = Shapefile.OpenFile(@"C:\yourpath");
 while (i < test.Features.Count)
    {
     var temp = test.GetFeature(i);
     var coordinates = temp.Coordinates
     for (int geo = 0; geo <= temp.NumGeometries - 1; geo++)
   {
    foreach (DotSpatial.Topology.Coordinate x in temp.GetBasicGeometryN(geo).Coordinates)
                    {
    int X = x.X;
    int Y = x.Y;
    int Z = x.Z;
    }
    }
    }

或者,如果你只是想看看你的,temp.Coordinates你会得到这个: [{"M":"NaN","X":494869.712,"Y":5458703.355,"Z":"NaN","NumOrdinates":2}]

(希望你的包含一个Z值。)

于 2018-01-31T23:11:29.340 回答