Esempio n. 1
0
        static public IProgressTaskDialog CreateProgressDialogInstance()
        {
            Assembly uiAssembly = Assembly.LoadFrom(SystemVariables.ApplicationDirectory + @"/gView.Win.Explorer.UI.dll");

            IProgressTaskDialog p = uiAssembly.CreateInstance("gView.Framework.UI.Dialogs.FormTaskProgress") as IProgressTaskDialog;

            return(p);
        }
Esempio n. 2
0
        async public Task <IDatasetElement> Element(string title)
        {
            foreach (IDatasetElement element in _elements)
            {
                if (element == null)
                {
                    continue;
                }
                if (element.Title == title)
                {
                    return(element);
                }
            }
            try
            {
                if (title.ToLower().EndsWith(".shp"))
                {
                    title = title.Substring(0, title.Length - 4);
                }
                DirectoryInfo di = new DirectoryInfo(_connectionString);
                FileInfo[]    fi = di.GetFiles(title + ".shp");
                if (fi.Length == 0)
                {
                    _errMsg = "Can't find shapefile...";
                    return(null);
                }
                SHPFile shpFile = new SHPFile(fi[0].FullName);

                FileInfo idx = new FileInfo(shpFile.IDX_Filename);
                if (!idx.Exists ||
                    idx.LastWriteTime < shpFile.LastWriteTime)
                {
                    DualTree tree = new DualTree(500);

                    CreateSpatialIndexTree creator = new CreateSpatialIndexTree(shpFile, tree, (IEnvelope)(new Envelope(shpFile.Header.Xmin, shpFile.Header.Ymin, shpFile.Header.Xmax, shpFile.Header.Ymax)));

                    if (_useGUI)
                    {
                        IProgressTaskDialog progress = ProgressDialog.CreateProgressDialogInstance();
                        if (progress != null && progress.UserInteractive)
                        {
                            progress.Text = "Create Spatial Index...";
                            progress.ShowProgressDialog(tree, creator.Create());
                        }
                        else
                        {
                            await creator.Create();
                        }
                    }
                    else
                    {
                        await creator.Create();
                    }
                }

                gView.Framework.FDB.IIndexTree iTree = null;
                if (shpFile.IDX_Exists)
                {
                    iTree = new IDXIndexTree(shpFile.IDX_Filename);
                }

                ShapeDatasetElement element = new ShapeDatasetElement(shpFile, this, iTree);
                _elements.Add(element);
                return(element);
            }
            catch (Exception ex)
            {
                _errMsg = ex.Message;
            }
            return(null);
        }