FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Finally fixed rendering issue of projected GDAL raster layers, all ca… · ALVIS-Software/SharpMap@919ae54 · GitHub

Repository navigation

Commit 919ae54

Browse files
Finally fixed rendering issue of projected GDAL raster layers, all calculations need to be done on layer coordinates, not view coordinates.
1 parent 3445d4c commit 919ae54

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

‎SharpMap.Extensions/Layers/GdalRasterLayer.cs‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,24 +1216,27 @@ protected virtual void GetPreview(Dataset dataset, Size size, Graphics g,
12161216

12171217
double mapPixelWidth = map.PixelWidth;
12181218
double mapPixelHeight = map.PixelHeight;
1219+
var envelope = map.Envelope.Intersection(envelopeInMapProjection);
12191220

12201221
for (int pixY = 0; pixY < bitmapData.Height; pixY++)
12211222
{
12221223
//if (pixY > 10) break;
12231224
var rowPtr = bitmapData.Scan0 + pixY * bitmapData.Stride;
12241225
var row = (byte*) rowPtr;
12251226

1226-
double gndY = Math.Min(Envelope.MaxY, displayBbox.MaxY) - pixY * mapPixelHeight;
1227-
//if (gndY > map.Envelope.MaxY) continue;
1228-
double gndX = Math.Max(Envelope.MinX, displayBbox.MinX);
1227+
double gndY = envelope.MaxY - pixY * mapPixelHeight;
1228+
double gndX = envelope.MinX;
12291229

12301230
for (int pixX = 0; pixX < bitmap.Width; pixX++)
12311231
{
1232+
// remember steps based on image source projection
1233+
var sourceGndY = gndY;
1234+
var sourceGndX = gndX;
12321235

12331236
// transform ground point if needed
12341237
if (inverseTransform != null)
12351238
{
1236-
double[] dblPoint = inverseTransform.Transform(new[] {gndX, gndY});
1239+
double[] dblPoint = inverseTransform.Transform(new[] { sourceGndX, sourceGndY });
12371240
gndX = dblPoint[0];
12381241
gndY = dblPoint[1];
12391242
}
@@ -1335,7 +1338,9 @@ protected virtual void GetPreview(Dataset dataset, Size size, Graphics g,
13351338
}
13361339

13371340
Incrementation:
1338-
gndX += mapPixelWidth;
1341+
// Restore layer's steps to before transformation, so steps are properly calculated in source dimensions
1342+
gndY = sourceGndY;
1343+
gndX = sourceGndX + mapPixelWidth;
13391344
}
13401345
}
13411346
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL