我从here下载了一个shapefile,它为我提供了一个cantor地图。 我有DotSpatial并在c#中加载了地图。我需要遍历地图并获得每个协调的高度。
我已经通过C#在WPF中创建了一个3D ViewPort,并且我只需要一个网格,让网格上每个点的高度都有一个3D地图。
1-我不知道文件是否具有协调的高度。如果此站点没有提供具有此属性的文件,我在哪里可以获取具有height属性的文件?
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-最后我如何获得每个协调点的高度值?
答案 0 :(得分: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
。)