管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2024-09-03 3cfb6aa02516135fb174ab1b30620f2007924663
ExportMap/cs/XYZUtils.cs
@@ -23,7 +23,7 @@
            {
                if (string.IsNullOrWhiteSpace(pyFile))
                {
                    pyFile = Path.Combine(ExportUtil.SourcesPath, "xyz.py");
                    pyFile = Path.Combine(ExportUtil.SourcesPath, "xyz2.py");
                }
                return pyFile;
@@ -66,11 +66,12 @@
        }
        /// <summary>
        /// 获取发布地址
        /// 获取发布地址:http://localhost/ExportMap/tile0/{z}/{x}/{y}.png?path=2d\tiles\0102
        /// </summary>
        public static string GetReleaseUrl(string dircode)
        {
            return "http://{host}/LFData/2d/tiles/" + dircode + "/{z}/{x}/{y}.png";
            //return "http://{host}/LFData/2d/tiles/" + dircode + "/{z}/{x}/{y}.png";
            return "{host}/ExportMap/tile0/{z}/{x}/{y}.png?path=2d/tiles/" + dircode;
        }
        /// <summary>
@@ -86,26 +87,28 @@
            string dateStr = ExportUtil.DateStr;
            //string batFile = Path.Combine(BatPath, dateStr + ".bat");
            string tifFile = Path.Combine(Tools.TempDir, ExportUtil.DateStr + ".txt");
            string txtFile = Path.Combine(Tools.TempDir, ExportUtil.DateStr + ".txt");
            string xyzPath = Path.Combine(SGUtils.LFData, "2d\\tiles", args.dircode);
            //if (args.isNew && Directory.Exists(xyzPath)) Tools.DelPath(xyzPath); // 已存在的,删除
            if (!Directory.Exists(xyzPath)) Directory.CreateDirectory(xyzPath);
            WriteText(tifFile, list);
            int pubid = PubDBHelper.GetPushlishId(args.dircode, "DOM");
            List<int> mids = PubDBHelper.GetPublishMetaId(pubid);
            WriteText(txtFile, list, mids);
            string cmd = string.Format("python \"{0}\" -qgz {1} -file \"{2}\" -out \"{3}\" -min {4} -max {5}", PyFile, Qgz, tifFile, xyzPath, args.min, args.max);
            //err = Tools.ExecCmd(GetCmds(batFile, cmd));
            err = Tools.ExecCmd(cmd, true);
            string cmd = string.Format("python \"{0}\" -qgz {1} -file \"{2}\" -out \"{3}\" -min {4} -max {5} -noData {6}", PyFile, Qgz, txtFile, xyzPath, args.min, args.max, args.noData);
            SysTask task = TaskDBHelper.CreateTask(args, "DOM", "影像数据(DOM)");
            err = Tools.ExecCmd(task, cmd, true);
            //if (File.Exists(batFile)) File.Delete(batFile);
            if (File.Exists(tifFile)) File.Delete(tifFile);
            if (File.Exists(txtFile)) File.Delete(txtFile);
            List<int> ids = new List<int>();
            string viewFile = Path.Combine(xyzPath, "view.html");
            if (File.Exists(viewFile))
            {
                string path = "2d\\tiles" + "\\" + args.dircode;
                int pubid = InsertToDB(list, args, path);
                pubid = InsertToDB(list, args, path);
                if (pubid > 0) ids.Add(pubid);
            }
@@ -114,22 +117,11 @@
        }
        /// <summary>
        /// 获取命令行
        /// </summary>
        private static List<string> GetCmds(string batFile, string cmd)
        {
            string str = File.ReadAllText(BaseBat) + cmd;
            File.WriteAllText(batFile, str);
            return new List<string>() { "\"" + batFile + "\"" };
        }
        /// <summary>
        /// 查询元数据
        /// </summary>
        public static List<SysMeta> SelectMetas(List<int> ids, string types = "")
        {
            string sql = string.Format("select a.*, fn_get_fullname(dircode, 2) dirname from lf.sys_meta a where id in ({0}) {1} order by id", string.Join(",", ids), types);
            string sql = string.Format("select a.*, fn_get_fullname(dircode, 2) dirname from lf.sys_meta a where id in ({0}) {1} order by id desc", string.Join(",", ids), types);
            DataTable dt = Tools.DBHelper.GetDataTable(sql);
            List<SysMeta> list = ModelHandler.FillModel<SysMeta>(dt);
@@ -137,9 +129,22 @@
        }
        /// <summary>
        /// 根据ID查询元数据
        /// </summary>
        public static SysMeta SelectMeta(int id)
        {
            string sql = string.Format("select a.*, fn_get_fullname(dircode, 2) dirname from lf.sys_meta a where id = {0}", id);
            DataTable dt = Tools.DBHelper.GetDataTable(sql);
            List<SysMeta> list = ModelHandler.FillModel<SysMeta>(dt);
            return null == list || list.Count == 0 ? null : list[0];
        }
        /// <summary>
        /// 写文本文件
        /// </summary>
        private static void WriteText(string file, List<SysMeta> list)
        private static void WriteText(string file, List<SysMeta> list, List<int> mids)
        {
            string uploadFolder = Tools.GetSetting("uploadFolder");
@@ -147,11 +152,14 @@
            foreach (SysMeta meta in list)
            {
                string filePath = Path.Combine(uploadFolder, meta.path);
                if (File.Exists(filePath)) files.Add(filePath);
                if (!File.Exists(filePath)) continue;
                bool exists = mids.Contains(meta.id);
                files.Add(string.Format("{0},{1}", filePath, exists ? 1 : 0));
            }
            //files.Add(@"E:\01.Data\33.DOM\2.大庆DOM\5154.50-415.50.tif");
            //files.Add(@"E:\01.Data\33.DOM\2.大庆DOM\5154.50-416.00.tif");
            string str = string.Join("\n", files);
            string str = string.Join("\r\n", files);
            File.WriteAllText(file, str);
        }
@@ -161,50 +169,46 @@
        /// </summary>
        private static int InsertToDB(List<SysMeta> metas, XYZArgs args, string path)
        {
            if (PubDBHelper.IsPublish(args.dircode)) return 0;
            //if (PubDBHelper.IsPublish(args.dircode, "DOM")) return 1;
            int pubid = PubDBHelper.GetPushlishId(args.dircode, "DOM");
            if (pubid > 0) // 更新发布
            {
                List<int> ids = PubDBHelper.GetPublishMetaId(pubid);
                foreach (SysMeta m in metas)
                {
                    if (!ids.Contains(m.id)) PubDBHelper.InsertMetaPub(m.id, pubid, args.userId);
                }
                string geom = GetPointZ(args);
                PubDBHelper.UpdatePublish(pubid, args.name, args.userId, geom);
            SysPublish sys = NewPublish(metas[0], args);
            sys.path = path;
                return pubid;
            }
            int pubid = PubDBHelper.InsertPublish(sys);
            SysMeta meta = metas[0];
            meta.type = "DOM";
            meta.name = args.name;
            meta.dircode = args.dircode;
            SysPublish sys = Tools.NewPublish(meta, args, GetReleaseUrl(args.dircode), path);
            sys.geom = GetPointZ(args);
            pubid = PubDBHelper.InsertPublish(sys);
            if (pubid > 0)
            {
                sys.id = pubid;
                PubDBHelper.InsertLayer(sys, new SysMeta()
                {
                    name = args.name,
                    type = metas[0].type,
                    dirname = metas[0].dirname
                    type = meta.type,
                    dirname = meta.dirname
                });
                foreach (SysMeta meta in metas)
                foreach (SysMeta m in metas)
                {
                    PubDBHelper.InsertMetaPub(meta.id, pubid, args.userId);
                    PubDBHelper.InsertMetaPub(m.id, pubid, args.userId);
                }
            }
            return pubid;
        }
        /// <summary>
        /// 创建数据发布类
        /// </summary>
        private static SysPublish NewPublish(SysMeta meta, XYZArgs args)
        {
            SysPublish sp = new SysPublish();
            sp.name = args.name;
            sp.url = GetReleaseUrl(args.dircode);
            sp.type = "DOM";
            sp.status = 3;
            sp.dirid = args.dircode;
            sp.depid = args.depcode;
            sp.min = args.min;
            sp.max = args.max;
            sp.json = null;
            sp.create_user = args.userId;
            sp.geom = GetPointZ(args);
            sp.bak = null;
            return sp;
        }
        /// <summary>