Use the TerrainAccessor.cs class 120 lines of code
public virtual Terraintile Getelevationarray (double, double south, double, double, int, samples) {
Terraintile res = null;
res = new Terraintile (null);
Res. North = North;
Res. South = South;
Res. West = West;
Res. east = East;
Res. Samplespertile = samples;
Res. IsInitialized = true;
Res. IsValid = true;
Double latrange = Math.Abs (North-south);
Double lonrange = Math.Abs (east-west);
float[,] data = new Float[samples,samples];
Float scalefactor = (float) 1/(samples-1);
for (int x = 0; x < samples, + +)
{
for (int y = 0; y < samples; y++)
{
D ouble Curlat = north-scalefactor * Latrange * x;
Double Curlon = West + scalefactor * lonrange * y;
//Key, get the elevation value of all the tile sample points
Data[x,y = Getelevationat (Curlat, Curlon, 0);
}
}
Res. Elevationdata = data;
Return res;
}
Key code: Data[x,y] = Getelevationat (Curlat, Curlon, 0);
Getelevationat (); In TerrainAccessor.cs is an abstract method. The true implementation is overloaded in the Terrainaccessor subclass Nltterrainaccessor.
120行 public override float GetElevationAt(double latitude, double longitude)
{
return GetElevationAt(latitude, longitude, m_terrainTileService.SamplesPerTile / m_terrainTileService.LevelZeroTileSizeDegrees);
}