diff --git a/.vs/MES_Wind/v14/.suo b/.vs/MES_Wind/v14/.suo index cb6fd1d498a0625adb592e12c13dcb104d419259..08af522f7c927f14408dee4f1187fe6ae765e6a0 100644 Binary files a/.vs/MES_Wind/v14/.suo and b/.vs/MES_Wind/v14/.suo differ diff --git a/MES_Wind.suo b/MES_Wind.suo index 2ea2f364cb9dad12c9cc25b314f33f3b774f6c5d..97a24a568608b5f69373b8c0f05bc0e80bb23560 100644 Binary files a/MES_Wind.suo and b/MES_Wind.suo differ diff --git a/MES_Wind/bin/Debug/MES_Wind.exe b/MES_Wind/bin/Debug/MES_Wind.exe index 8b4b4ded8be093d926e5c38717adeed4c227aa48..4ba5d4f04cca387742d936bd39cebda4c1f527fb 100644 Binary files a/MES_Wind/bin/Debug/MES_Wind.exe and b/MES_Wind/bin/Debug/MES_Wind.exe differ diff --git a/MES_Wind/bin/Debug/MES_Wind.pdb b/MES_Wind/bin/Debug/MES_Wind.pdb index 93bac92b4d2994488e9c8b653f72e81f608d3621..67a6071cd0de29fc5c8b32d50652a7fbaf40d11c 100644 Binary files a/MES_Wind/bin/Debug/MES_Wind.pdb and b/MES_Wind/bin/Debug/MES_Wind.pdb differ diff --git a/MES_Wind/frmMain.cs b/MES_Wind/frmMain.cs index 142cfe8ed4f822d836c68b95c3cc858f3c8f69ac..8f75115c93d533202d10ebb3f835c42ddd5cdb74 100644 --- a/MES_Wind/frmMain.cs +++ b/MES_Wind/frmMain.cs @@ -132,10 +132,55 @@ namespace MES_Wind } public double interpol(Coordinate coords, IMapRasterLayer raster) { - double rval = 0; - RcIndex rc= raster.DataSet.Bounds.ProjToCell(coords); - rval = raster.DataSet.Value[rc.Row, rc.Column]; - return rval; + const bool normalX = true; + const bool normalY = false; + RcIndex rc = raster.DataSet.Bounds.ProjToCell(coords); + Coordinate center = raster.DataSet.Bounds.CellCenter_ToProj(rc.Row, rc.Column); + double xDiff = coords.X - center.X; + double yDiff = coords.Y - center.Y; + //calculate second index + int row2, col2; + if ((xDiff >= 0 && normalX ) || (!normalX && xDiff < 0)) + { + row2 = rc.Row >= raster.DataSet.EndRow ? rc.Row - 1 : rc.Row + 1; + } + else + { + row2 = rc.Row > 0 ? rc.Row - 1 : rc.Row + 1; + } + if ( (yDiff >= 0 && normalY) || (!normalY && yDiff < 0)) + { + col2 = rc.Column >= raster.DataSet.EndColumn ? rc.Column - 1 : rc.Column + 1; + } + else + { + col2 = rc.Column > 0 ? rc.Column - 1 : rc.Column + 1; + } + // indexes and values at bounds + RcIndex rcBotLeft = new RcIndex(Math.Min(row2, rc.Row), Math.Min(col2, rc.Column)); + RcIndex rcBotRight = new RcIndex(Math.Max(row2, rc.Row), Math.Min(col2, rc.Column)); + RcIndex rcTopLeft = new RcIndex(Math.Min(row2, rc.Row), Math.Max(col2, rc.Column)); + RcIndex rcTopRight = new RcIndex(Math.Max(row2, rc.Row), Math.Max(col2, rc.Column)); + double valBotLeft = raster.DataSet.Value[rcBotLeft.Row, rcBotLeft.Column]; + double valBotRight = raster.DataSet.Value[rcBotRight.Row, rcBotRight.Column]; + double valTopLeft = raster.DataSet.Value[rcTopLeft.Row, rcTopLeft.Column]; + double valTopRight = raster.DataSet.Value[rcTopRight.Row, rcTopRight.Column]; + Coordinate origin = raster.DataSet.CellToProj(rcBotLeft.Row, rcBotLeft.Column); + //Coordinate last = raster.DataSet.CellToProj(rcTopRight.Row, rcTopRight.Column);//test only + // sizes for cell + double hx = raster.DataSet.Bounds.CellWidth; + double hy = raster.DataSet.Bounds.CellHeight; + // coefficients + double px = (coords.X - origin.X) / hx; + double py = (coords.Y - origin.Y) / hy; + // inverse directions + px *= normalX ? 1 : -1; + py *= normalY ? 1 : -1; + // interpolation + double top = (1 - px) * valTopLeft + px * valTopRight; + double bot = (1 - px) * valBotLeft + px * valBotRight; + double rval = (1 - py) * bot + py * top; + return rval; } private void bntLoadWindX_Click(object sender, EventArgs e) diff --git a/MES_Wind/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/MES_Wind/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 27c54be79154026d2b3cdf1afe456561f89b70a9..147137f32ceb82e088c1738cdf9d757e9d3d0565 100644 Binary files a/MES_Wind/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/MES_Wind/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/MES_Wind/obj/Debug/MES_Wind.csproj.GenerateResource.Cache b/MES_Wind/obj/Debug/MES_Wind.csproj.GenerateResource.Cache index 7625ca23c955eb59eae90ea06ae0f436d78e15e3..2519674b69188d02cab962f1e4ea362abfbc3dc7 100644 Binary files a/MES_Wind/obj/Debug/MES_Wind.csproj.GenerateResource.Cache and b/MES_Wind/obj/Debug/MES_Wind.csproj.GenerateResource.Cache differ diff --git a/MES_Wind/obj/Debug/MES_Wind.csprojResolveAssemblyReference.cache b/MES_Wind/obj/Debug/MES_Wind.csprojResolveAssemblyReference.cache index d4ec5078c7883e25a038a5bbc60b1d2c4ed47b30..d5f6c22ffb8e82ddfda4a47b3fdfe5c6b7bea630 100644 Binary files a/MES_Wind/obj/Debug/MES_Wind.csprojResolveAssemblyReference.cache and b/MES_Wind/obj/Debug/MES_Wind.csprojResolveAssemblyReference.cache differ diff --git a/MES_Wind/obj/Debug/MES_Wind.exe b/MES_Wind/obj/Debug/MES_Wind.exe index 8b4b4ded8be093d926e5c38717adeed4c227aa48..4ba5d4f04cca387742d936bd39cebda4c1f527fb 100644 Binary files a/MES_Wind/obj/Debug/MES_Wind.exe and b/MES_Wind/obj/Debug/MES_Wind.exe differ diff --git a/MES_Wind/obj/Debug/MES_Wind.pdb b/MES_Wind/obj/Debug/MES_Wind.pdb index 93bac92b4d2994488e9c8b653f72e81f608d3621..67a6071cd0de29fc5c8b32d50652a7fbaf40d11c 100644 Binary files a/MES_Wind/obj/Debug/MES_Wind.pdb and b/MES_Wind/obj/Debug/MES_Wind.pdb differ