2017-06-27 1 views
0

J'ai téléchargé un fichier de formes de here qui a fourni une carte de cantor pour moi. J'ai obtenu DotSpatial et j'ai chargé la carte en C#. J'ai besoin de parcourir la carte et d'obtenir la hauteur de chaque coordination.Comment puis-je parcourir un fichier de formes (.shp) et avoir la hauteur de chaque coordiantion?

J'ai créé un ViewPort 3d dans WPF par C# et j'ai une grille dont j'ai juste besoin pour avoir la hauteur de chaque point de la grille pour avoir une carte 3D.

1- Je ne sais pas si le fichier a les hauteurs pour les coordinations ou non. Si ce site ne fournit pas un fichier avec cet attribut, où puis-je obtenir les fichiers qui ont la propriété height dans eux?

2- Comment utiliser DotSpatial pour comprendre le minimum et le maximum de longitude et de latitude de la carte?

Je veux écrire un code comme ça. (Il est juste un pseudo-code)

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- et enfin comment puis-je obtenir la valeur de la hauteur de chaque point de coordination?

Répondre

0
var shapefile = Shapefile.OpenFile(@"C:\yourpath"); 
while (i < test.Features.Count) 
{ 
var temp = test.GetFeature(i); 
var coordinates = temp.Coordinates 
} 

Vous pouvez ensuite utiliser

temp.Coordinates.AsEnumerable(); 

ou

temp.Coordinates.AsQueryable(); 

si vous vouliez regarder à travers et seulement obtenir votre coordonnée Z.

Sinon, votre sortie juste temp.coordinates ressemblera à quelque chose comme ceci: [{ "M": "nan", "X": 494869,712, "Y": 5.458.703,355, "Z": "nan", » NumOrdinates ": 2}]

(Espérons que le vôtre contient une valeur Z.)