protected override void OnClick() { string straboPath = Environment.GetEnvironmentVariable(ArcStrabo2Extension.EnvironmentVariableSTRABO_HOME, EnvironmentVariableTarget.User); string tessPath = Environment.GetEnvironmentVariable(ArcStrabo2Extension.EnvironmentVariableTESS_DATA, EnvironmentVariableTarget.User); if (ArcStrabo2Extension.PathSet == false) { if (String.IsNullOrEmpty(straboPath) == true) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoStraboHome); return; } if (String.IsNullOrEmpty(tessPath) == true) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoTess_Data); return; } ////Initialize directories bool Initialize_straboPath_Correct = ArcStrabo2Extension.initialize_straboPath_directories(straboPath); if (Initialize_straboPath_Correct == false) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoStraboHomeWritePermission); return; } ArcStrabo2Extension.PathSet = true; } #region Text Recognition ////Save Positive and Negative Layer and making GeoJason File ComboBoxLayerSelector layerNameCombo = ComboBoxLayerSelector.GetLayerNameComboBox(); ////Select correct raster map layer RasterLayer rasterlayer = new RasterLayer(); rasterlayer = ((RasterLayer)layerNameCombo.GetSelectedLayer()); string input_data_source_directory; try { input_data_source_directory = rasterlayer.FilePath; } catch (Exception) { // Handle no input map error MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoInputMap, "Input Map Error", MessageBoxButtons.OK); return; } ////Select language from combo box in toolbar ComboBoxLanguageSelector languageNameCombo = ComboBoxLanguageSelector.GetLanguageNameComboBox(); string lng = languageNameCombo.Get_selected_language(); if (lng == null) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoInputLanguage, "Input Language Error", MessageBoxButtons.OK); return; } ////Set Log Directory Path Log.SetLogDir(ArcStrabo2Extension.Log_Path); Log.SetOutputDir(ArcStrabo2Extension.Log_Path); Log.WriteLine("MakingTextLabelGeoJsonFile Method Start SIMA"); IMap map = ArcMap.Document.FocusMap; ArcStraboObject arcStraboObject = new ArcStraboObject(); arcStraboObject.MakingTextLabelGeoJsonFile(ArcStrabo2Extension.Text_Result_Path); Log.WriteLine("MakingTextLabelGeoJsonFile Method Finish"); ////Run TextExtraction Layer from Strabo.core and load raster Layer Log.WriteLine("textLayerExtract Medthod Start SIMA"); arcStraboObject.textLayerExtract(input_data_source_directory, ArcStrabo2Extension.Text_Result_Path); Log.WriteLine("textLayerExtract Method Finish"); Log.WriteLine("AddRasterLayer Method Start SIMA"); arcStraboObject.AddRasterLayer(ArcStrabo2Extension.Text_Result_Path, ArcStrabo2Extension.TextLayerPNGFileName); Log.WriteLine("AddRasterLayer Method Finish"); ////Run TextIdentifier Method Log.WriteLine("textIndentification Method Start SIMA"); System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; ///// Attempting to create cancel feature window //DialogResult result = MessageBox.Show("Text Recognition is running.", "Application Running", MessageBoxButtons.OKCancel); //if (result == DialogResult.Cancel) //{ // return; //} //else if (result == DialogResult.OK) arcStraboObject.textIndentification(ArcStrabo2Extension.Text_Result_Path + "\\", ArcStrabo2Extension.Intermediate_Result_Path + "\\", ArcStrabo2Extension.TextLayerPNGFileName); System.Windows.Forms.Cursor.Current = Cursors.Default; Log.WriteLine("textIndentification Method Finish"); ////OCR Part Log.WriteLine("ExtractTextToGEOJSON Method Start SANJUALI"); System.Windows.Forms.Cursor.Current = Cursors.AppStarting; //// Select language from combo box in toolbar //ComboBoxLanguageSelector languageNameCombo = ComboBoxLanguageSelector.GetLanguageNameComboBox(); //string lng = languageNameCombo.Get_selected_language(); //if (lng == null) //{ // MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoInputLanguage, "Input Language Error", MessageBoxButtons.OK); // return; //} Strabo.Core.OCR.WrapperTesseract language = new Strabo.Core.OCR.WrapperTesseract(tessPath, lng); /// Strabo.Core.OCR.WrapperTesseract language = new Strabo.Core.OCR.WrapperTesseract(tessPath); language.ExtractTextToGEOJSON(ArcStrabo2Extension.Intermediate_Result_Path, ArcStrabo2Extension.Text_Result_Path, ArcStrabo2Extension.TesseractResultsJSONFileName); Log.WriteLine("ExtractTextToGEOJSON Method Finish"); System.Windows.Forms.Cursor.Current = Cursors.Default; ////Add Polygon of OCR Layer Log.WriteLine("CreateFeatureClassWithFields Method Start SIMA"); IWorkspace workspace = arcStraboObject.CreateShapefileWorkspace(ArcStrabo2Extension.Text_Result_Path); IFeatureWorkspace featureworkspace = (IFeatureWorkspace)workspace; string tesseDataPath = ArcStrabo2Extension.Text_Result_Path + "\\" + ArcStrabo2Extension.TesseractResultsJSONFileName; IFeatureClass featureClass = arcStraboObject.CreateFeatureClassWithFields(ArcStrabo2Extension.TextLayerOCRShapefile, featureworkspace, tesseDataPath); IFeatureLayer featureLayer = arcStraboObject.CreateFeatureLayer(featureClass); Log.WriteLine("CreateFeatureClassWithFields Method Finish"); Log.WriteLine("AddPolygon Method Start"); arcStraboObject.AddPolygon(featureLayer, featureworkspace, tesseDataPath); Log.WriteLine("AddPolygon Method Finish"); Log.ArchiveLog(); MessageBox.Show("Text recognition finished!", "Done", MessageBoxButtons.OK); #endregion }
protected override void OnClick() { string straboPath = Environment.GetEnvironmentVariable(ArcStrabo2Extension.EnvironmentVariableSTRABO_HOME, EnvironmentVariableTarget.User); string tessPath = Environment.GetEnvironmentVariable(ArcStrabo2Extension.EnvironmentVariableTESS_DATA, EnvironmentVariableTarget.User); if (ArcStrabo2Extension.PathSet == false) { if (String.IsNullOrEmpty(straboPath) == true) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoStraboHome); return; } if (String.IsNullOrEmpty(tessPath) == true) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoTess_Data); return; } bool Initialize_straboPath_Correct = ArcStrabo2Extension.initialize_straboPath_directories(straboPath); if (Initialize_straboPath_Correct == false) { MessageBox.Show(ArcStrabo2Extension.ErrorMsgNoStraboHomeWritePermission); return; } ArcStrabo2Extension.PathSet = true; } // // TODO: Sample code showing how to access button host // ArcMap.Application.CurrentTool = null; ComboBoxLayerSelector layerNameCombo = ComboBoxLayerSelector.GetLayerNameComboBox(); RasterLayer rasterlayer = new RasterLayer(); rasterlayer = ((RasterLayer)layerNameCombo.GetSelectedLayer()); //raster.Raster //RasterLayer raster2 = new RasterLayer(); //raster2.CreateFromRaster(raster.Raster); //IMap map = ArcMap.Document.FocusMap; //map.AddLayer((ILayer)raster2); //MessageBox.Show(layerNameCombo.selected_layer_name + " " + raster2.RowCount + " " + raster2.ColumnCount + " " + raster2.BandCount); ColorSegmentationWorker cs = new ColorSegmentationWorker(); try { IRaster2 iraster2 = rasterlayer.Raster as IRaster2; string[] bitmap_fns = cs.Apply(System.IO.Path.GetDirectoryName(iraster2.RasterDataset.CompleteName) + "\\", ArcStrabo2Extension.Text_Result_Path + "\\", System.IO.Path.GetFileName(iraster2.RasterDataset.CompleteName)); IMap map = ArcMap.Document.FocusMap; foreach (string path in bitmap_fns) { //RasterDataset rds = new RasterDataset(); //rds.OpenFromFile(path); RasterLayer rasterlayer2 = new RasterLayer(); rasterlayer2.CreateFromFilePath(path); map.AddLayer(rasterlayer2); } } catch (Exception e) { Console.WriteLine(e.ToString()); } }