Как я могу пройти шейп-файл (.shp) и иметь высоту каждой координаты?

Я скачал шейп-файл отсюда, который предоставил мне карту кантора. Я получил DotSpatial и загрузил карту в C#. Мне нужно пройти карту и получить высоту каждой координации.

Я создал 3D ViewPort в WPF от C#, и у меня есть сетка, которая мне нужна, у которой есть высота каждой точки сетки, чтобы иметь 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- и, наконец, как я могу получить значение высоты каждой точки координации?

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 значение.)

Другие вопросы по тегам