User Tools

Site Tools


source_code_serviceseditionsample_s57file_cs.zip

Source Code ServicesEditionSample S57File CS.zip

Sample.cs

 
 using DisplayS57File;  
 using System;  
 using System.Collections.ObjectModel;  
 using System.Data;  
 using System.Drawing;  
 using System.Windows.Forms;  
 using ThinkGeo.MapSuite.Core;  
 
 public partial class Sample : Form  
 {  
     private MapEngine mapEngine;  
     HydrographyFeatureLayer featureLayer;  
     Bitmap bitmap;  
 
     public Sample()  
     {  
         InitializeComponent();  
     }  
 
     private void DisplayASimpleMap_Load(object sender, EventArgs e)  
     {  
         bitmap = new Bitmap(map.Width, map.Height);  
         mapEngine = new MapEngine();  
 
         featureLayer = new HydrographyFeatureLayer(@"../data/US1HA02M/US1HA02M.000");  
         mapEngine.StaticLayers.Add(featureLayer);  
 
         mapEngine.CurrentExtent = ExtentHelper.GetDrawingExtent(new RectangleShape(-158.523134580469, 21.9638280846873, -155.875429502344, 20.2607274987498), map.Width, map.Height);  
         mapEngine.BackgroundFillBrush = new GeoSolidBrush(GeoColor.FromHtml("#d8f4e1"));  
         DrawImage();  
     }  
 
     private void rbtnStyleType_CheckedChanged(object sender, EventArgs e)  
     {  
         if (rbtnEmbedded.Checked)  
         {  
             featureLayer.StylingType = HydrographyStylingType.EmbeddedStyling;  
             featureLayer.StylingType = HydrographyStylingType.EmbeddedStyling;  
             featureLayer.SymbolTextDisplayMode = HydrographySymbolTextDisplayMode.English;  
             featureLayer.IsMetaObjectsVisible = true;  
             featureLayer.IsShallowWaterPatternVisible = true;  
         }  
         else  
         {  
             featureLayer.StylingType = HydrographyStylingType.StandardStyling;  
             featureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(S57StyleFactory.GetMaritimeStyle());  
             featureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;  
         }  
 
         DrawImage();  
     }  
 
     private void Query_Btn_Click(object sender, EventArgs e)  
     {  
         featureLayer.FeatureSource.Open();  
         DataTable dataTable = featureLayer.FeatureSource.ExecuteQuery(textBox1.Text);  
 
         dataGridView1.Columns.Clear();  
         foreach (DataColumn column in dataTable.Columns)  
         {  
             DataGridViewColumn dgColumn = new DataGridViewColumn();  
             dgColumn.CellTemplate = new DataGridViewTextBoxCell();  
             dgColumn.HeaderText = column.ColumnName;  
             dataGridView1.Columns.Add(dgColumn);  
         }  
 
         foreach (DataRow row in dataTable.Rows)  
         {  
             int index = dataGridView1.Rows.Add();  
             for (int i = 0; i < dataTable.Columns.Count; i++)  
             {  
                 string objValues = row[i] as string;  
                 dataGridView1.Rows[index].Cells[i].Value = objValues;  
             }  
         }  
         featureLayer.FeatureSource.Close();  
     }  
 
     private void DrawImage()  
     {  
         bitmap = new Bitmap(map.Width, map.Height);  
         mapEngine.OpenAllLayers();  
         mapEngine.DrawStaticLayers(bitmap, GeographyUnit.DecimalDegree);  
         mapEngine.CloseAllLayers();  
 
         map.Image = bitmap;  
     }  
 
     private void map_ClientSizeChanged(object sender, EventArgs e)  
     {  
         if (bitmap != null && (map.Width > bitmap.Width || map.Height > bitmap.Height))  
         {  
             bitmap = new Bitmap(map.Width, map.Height);  
             double scale = new ZoomLevelSet().GetZoomLevel(mapEngine.CurrentExtent, map.Width, GeographyUnit.DecimalDegree).Scale;  
             mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel((RectangleShape)mapEngine.CurrentExtent.CloneDeep(), GeographyUnit.DecimalDegree, map.Width, map.Height, new ZoomLevelSet());  
             mapEngine.CurrentExtent = ExtentHelper.ZoomToScale(scale, mapEngine.CurrentExtent, GeographyUnit.DecimalDegree, map.Width, map.Height);  
             DrawImage();  
         }  
     }  
 
     private void ToolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)  
     {  
         switch (e.Button.Tag.ToString())  
         {  
             case "Zoom In":  
                 mapEngine.CurrentExtent.ScaleDown(50);  
                 break;  
             case "Zoom Out":  
                 mapEngine.CurrentExtent.ScaleUp(50);  
                 break;  
             case "Full Extent":  
                 mapEngine.CurrentExtent = ExtentHelper.GetDrawingExtent(new RectangleShape(-133.291207591435, 52.4457064436166, -65.7348915320567, 18.5637124044684), map.Width, map.Height);  
                 break;  
             case "Pan Left":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Left, 20);  
                 break;  
             case "Pan Right":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Right, 20);  
                 break;  
             case "Pan Up":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Up, 20);  
                 break;  
             case "Pan Down":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Down, 20);  
                 break;  
             default:  
                 break;  
         }  
         DrawImage();  
     }  
 }  
 

MaritimeStyleFactory.cs

 using ThinkGeo.MapSuite.Core;  
 using System.Collections.Generic;  
 
 namespace DisplayS57File  
 {  
     class S57StyleFactory  
     {  
         public static ValueStyle GetMaritimeStyle()  
         {  
             ValueStyle classValueStyle = new ValueStyle();  
             classValueStyle.ColumnName = "OBJL";  
 
             ValueItem item1 = new ValueItem("74", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(100, 255, 0, 255), 1.0f));  
             classValueStyle.ValueItems.Add(item1);  
 
             ValueItem item2 = new ValueItem("9", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(100, 255, 255, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item2);  
 
             ValueItem item3 = new ValueItem("12", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(255, 0, 255, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item3);  
 
             ValueItem item4 = new ValueItem("19", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(100, 0, 255, 255), 1.0f));  
             classValueStyle.ValueItems.Add(item4);  
 
             ValueItem item5 = new ValueItem("73", AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 115, 170, 198), GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item5);  
 
             ValueItem item6 = new ValueItem("1", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item6);  
 
             ValueItem item7 = new ValueItem("105", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Red, 20.0f, GeoColor.FromArgb(100, 255, 0, 255), 1.0f));  
             classValueStyle.ValueItems.Add(item7);  
 
             ValueItem item8 = new ValueItem("13", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.DarkOrange, 4.0f, GeoColor.FromArgb(255, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item8);  
 
             ValueItem item9 = new ValueItem("72", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 4.0f, GeoColor.FromArgb(255, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item9);  
 
             ValueItem item10 = new ValueItem("84", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(255, 0, 0, 255), 1.0f));  
             classValueStyle.ValueItems.Add(item10);  
 
             ValueItem item11 = new ValueItem("75", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(255, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item11);  
 
             ValueItem item12 = new ValueItem("39", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(255, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item12);  
 
             ValueItem item13 = new ValueItem("153", PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(100, 255, 0, 255), 1.0f));  
             classValueStyle.ValueItems.Add(item13);  
 
             ValueItem item14 = new ValueItem("159", PointStyles.CreateSimpleTriangleStyle(GeoColor.SimpleColors.Transparent, 14.0f, GeoColor.FromArgb(200, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item14);  
 
             ValueItem item15 = new ValueItem("127", PointStyles.CreateSimpleSquareStyle(GeoColor.SimpleColors.Transparent, 10.0f, GeoColor.FromArgb(100, 0, 0, 0), 1.0f));  
             classValueStyle.ValueItems.Add(item15);  
 
             ValueItem item16 = new ValueItem("42", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromHtml("#5f6a60")));  
             classValueStyle.ValueItems.Add(item16);  
 
             ValueItem item17 = new ValueItem("30", LineStyles.CreateSimpleLineStyle(GeoColor.FromArgb(255, 255, 0, 0), 1.0f, true));  
             classValueStyle.ValueItems.Add(item17);  
 
             ValueItem item18 = new ValueItem("43", LineStyles.CreateSimpleLineStyle(GeoColor.FromHtml("#abc0b1"), 1.0f, true));  
             classValueStyle.ValueItems.Add(item18);  
 
             ValueItem item19 = new ValueItem("22", LineStyles.CreateSimpleLineStyle(GeoColor.FromHtml("#88acac"), 1.0f, LineDashStyle.Dash, true));  
             classValueStyle.ValueItems.Add(item19);  
 
             ValueItem item20 = new ValueItem("48", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(255, 0, 0, 0), 1, LineDashStyle.DashDotDot));  
             classValueStyle.ValueItems.Add(item20);  
 
             ValueItem item21 = new ValueItem("50", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0), 1, LineDashStyle.Dash));  
             classValueStyle.ValueItems.Add(item21);  
 
             ValueItem item22 = new ValueItem("308", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item22);  
 
             ValueItem item23 = new ValueItem("119", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item23);  
 
             ValueItem item24 = new ValueItem("121", AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(100, 0, 0, 0), GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item24);  
 
             ValueItem item25 = new ValueItem("112", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(255, 200, 0, 200), 2, LineDashStyle.Dash));  
             classValueStyle.ValueItems.Add(item25);  
 
             ValueItem item26 = new ValueItem("302", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item26);  
 
             ValueItem item27 = new ValueItem("306", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item27);  
 
             ValueItem item28 = new ValueItem("305", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item28);  
 
             ValueItem item29 = new ValueItem("71", AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 177, 170, 107), GeoColor.FromArgb(100, 0, 0, 0)));  
             classValueStyle.ValueItems.Add(item29);  
 
             ValueItem item30 = new ValueItem("86", AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 115, 170, 198), GeoColor.FromArgb(255, 0, 0, 0), 2, LineDashStyle.Dot));  
             classValueStyle.ValueItems.Add(item30);  
 
             ValueItem item31 = new ValueItem("31", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromHtml("#abc0b1"), 1, LineDashStyle.Solid));  
             classValueStyle.ValueItems.Add(item31);  
 
             ValueItem item32 = new ValueItem("27", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(255, 200, 0, 200), 2, LineDashStyle.Dash));  
             classValueStyle.ValueItems.Add(item32);  
 
             ValueItem item33 = new ValueItem("83", AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(255, 200, 0, 200), 1, LineDashStyle.DashDotDot));  
             classValueStyle.ValueItems.Add(item33);  
 
             return classValueStyle;  
         }  
     }  
 }  
 
source_code_serviceseditionsample_s57file_cs.zip.txt · Last modified: 2015/09/09 03:12 by admin