管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2024-07-22 1f22a86346c18ccb29a4a712c4acb05c013b33d4
修改高程和水面的计算方法
已修改1个文件
21 ■■■■■ 文件已修改
SimuTools/Tools/Handle.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SimuTools/Tools/Handle.cs
@@ -36,8 +36,8 @@
            if (!Directory.Exists(temp)) Directory.CreateDirectory(temp);
            CopeTerrain(terrainFile, outPath, layer);
            //CopeWater(waterPath, outPath, layer);
            CopeFlow(flowPath, outPath, layer);
            CopeWater(waterPath, outPath, layer);
            //CopeFlow(flowPath, outPath, layer);
            CopeLayerJson(outPath, layer);
            if (Directory.Exists(temp)) Directory.Delete(temp, true);
@@ -56,7 +56,7 @@
                if (null == ds || 0 == ds.RasterCount || null == ds.GetSpatialRef()) return;
                SetTerrainInfo(ds, layer);
                //CreateTerrainPng(ds, layer, outPath);
                CreateTerrainPng(ds, layer, outPath);
            }
            finally
            {
@@ -200,22 +200,16 @@
                Graphics graphic = Graphics.FromImage(image);
                graphic.Clear(Color.Transparent); // 填充透明色
                //double perHeight = (layer.extension.maxHeight - layer.extension.minHeight) * 100 / 65536;
                //int val = Convert.ToInt32(buffer[x * y]* 100); //Convert.ToInt32((buffer[x * y] - layer.extension.minHeight) * 100);
                //int val = Convert.ToInt32((buffer[x * y] - layer.extension.minHeight) * 100 / perHeight);
                double perHeight = (layer.extension.maxHeight - layer.extension.minHeight) * 100 / 65536;
                for (int x = 0; x < width; x++)
                {
                    for (int y = 0; y < height; y++)
                    {
                        int offset = x + y * width;
                        if (float.IsNaN(buffer[offset]) || buffer[offset] < -999)
                        {
                            //image.SetPixel(x, y, Color.Transparent);
                            continue;
                        }
                        if (float.IsNaN(buffer[offset]) || buffer[offset] < -999) continue;
                        int val = Convert.ToInt32(buffer[offset] * 100);
                        //int val = Convert.ToInt32(buffer[offset] * 100);
                        int val = Convert.ToInt32((buffer[offset] - layer.extension.minHeight) * 100 / perHeight);
                        int r = val / 65536;
                        int g = (val - r * 65536) / 256;
                        int b = val % 256;
@@ -224,7 +218,6 @@
                        image.SetPixel(x, y, color);
                    }
                }
                image.Save(png, System.Drawing.Imaging.ImageFormat.Png);
            }
            finally