iData批量将图形打印成png图片

2021-08-18 11:12:30 浏览数 (1)

iData数据工厂是南方数码研发的一个集测绘数据采编成图、数据入库、产品制作和生产任务管理于一体的拥有自主产权的一体化地理信息数据处理平台。新一代一体化测绘数据生产平台,能够实现数据采集、数据编辑、数据入库、数据质检、生产任务管理,3D测图等多种功能。支持对 CAD 系统( AutoCAD 、 MicroStation )数据的直接编辑和转换分发和打开,数据处理平台以ArcGIS 的原生空间数据库 Geodatabase PersonalGeodatabase ,文件后缀.mdb )为存储格式,直接面向 ArcGIS 及空间数据库,生产的数据无需转换,直接入库,进一步保证了数据的一致性和完整性。生产还能实现与现有GIS 系统之间的无缝数据交换和入库更新一体化,并且真正实现了图库一体化、图属一体化。并且支持C#、C 、lua、Java、Python语言进行二次开发。

在学习这个软件和软件的C#二次开发接口时,看到有个把图形打印到图片上的功能,后来就尝试做了一个程序,把所有的分幅图自动循环进行打开、调用程序内部接口,把图形打印成png图片。下面就用C#语言做的应用程序。

代码语言:javascript复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;
using System.Timers;

using Southgis.iData;

namespace CSiData
{

    public class iDataMain : iDataRunnerInterface
    {
        public void AddCommand()
        {
            //添加要执行的命令
            iDataInterface.AddCommand("CSiData.Class1", "ExportPng", "图形导出图片");
        }
        public void InitApplication()
        {
            //模块加载后第一个执行
        }

        public void UnloadApplication()
        {
            //模块卸载时执行
        }
    }

    public class Class1
    {
        public static void ExportPng()
        {
            iDataInterface iDataIntFac = new iDataInterface();
            string sourcePath = iDataIntFac.sourcePath();
            string[] templesfileNames = File.ReadAllLines(sourcePath   "\"   "TEMPLESETFILE.txt", Encoding.UTF8);
            string templesfileName = templesfileNames[0];

            FolderBrowserDialog fderBrowDlg = new FolderBrowserDialog();
            fderBrowDlg.Description = "请选择数据文件夹";
            if (fderBrowDlg.ShowDialog() == DialogResult.OK)
            {
                string dbPath = fderBrowDlg.SelectedPath;
                List<string> strFilePaths = Tools.GetFilesPath(dbPath);
                for (int i = 0; i < strFilePaths.Count; i  )
                {
                    string strFilePath = strFilePaths[i];
                    string extion = Path.GetExtension(strFilePath);
                    string dic = Path.GetDirectoryName(strFilePath);
                    string fileName = Path.GetFileNameWithoutExtension(strFilePath);
                    if (extion == ".mdb")
                    {
                        DbBase db = iDataIntFac.GetCurBase();
                        iDataIntFac.OpenDoc(strFilePath, false, templesfileName, 2);
                        List<iDataEntity> listEnts = new List<iDataEntity>();
                        //选择图上全部实体
                        iDataIntFac.iDataSSGetX(out listEnts, null, false, SelectMode.selAll);
                        iDataIntFac.saveEntitysToImage(dic   "\"   fileName   ".png", 1600, 1600, listEnts, null, -1, null, null);
                    }
                }
            }

        }
    }
}

程序加载:

数据文件

单个数据打开:

程序批量处理后结果图片

0 人点赞