private void BrowseCustomDataClick(object sender, RoutedEventArgs e) { CustomDataCategoryViewModel customDataCategoryViewModel = ((FrameworkElement)sender).DataContext as CustomDataCategoryViewModel; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Shape File(*.shp)|*.shp"; if (openFileDialog.ShowDialog().GetValueOrDefault()) { ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer(openFileDialog.FileName); shapeFileFeatureLayer.Open(); if (shapeFileFeatureLayer.GetShapeFileType() == ShapeFileType.Polygon) { customDataCategoryViewModel.CustomDataFilePathName = openFileDialog.FileName; customDataCategoryViewModel.Columns.Clear(); foreach (DbfColumn dbfColumn in shapeFileFeatureLayer.FeatureSource.GetColumns().OfType<DbfColumn>()) { if (dbfColumn.ColumnType == DbfColumnType.Float || dbfColumn.ColumnType == DbfColumnType.Numeric || dbfColumn.ColumnType == DbfColumnType.DoubleInBinary || dbfColumn.ColumnType == DbfColumnType.IntegerInBinary) { customDataCategoryViewModel.Columns.Add(new ColumnViewModel(dbfColumn.ColumnName, dbfColumn.ColumnName) { LegendTitle = dbfColumn.ColumnName, Parent = customDataCategoryViewModel }); } } customDataCategoryViewModel.CanUsePieView = customDataCategoryViewModel.Columns.Count >= 2; mapModel.CustomDataFeatureLayer = shapeFileFeatureLayer; } else { MessageBox.Show("The shapefile must be polygon type, please try another one.", "Warning"); } } }
private bool IsMultiPointLayer(FeatureLayer queryingFeatureLayer) { bool result = false; ShapeFileFeatureLayer shpLayer = queryingFeatureLayer as ShapeFileFeatureLayer; if (shpLayer != null) { result = shpLayer.GetShapeFileType() == ShapeFileType.Multipoint; } return(result); }
private void CustomDataSelector_FileSelected(string pathFileName) { ShapeFileFeatureLayer featureLayer = new ShapeFileFeatureLayer(pathFileName); featureLayer.Open(); if (featureLayer.GetShapeFileType() == ShapeFileType.Polygon) { AddStyleSelectors(featureLayer); OnCustomDataSelected(new DataSelectedCustomDataSelectorUserControlEventArgs(featureLayer)); } else { MessageBox.Show("The shape file must be polygon type, please try another one.", "Warning"); } }
protected override SimpleShapeType GetFeatureSimpleShapeTypeCore(FeatureLayer featureLayer) { SimpleShapeType result = SimpleShapeType.Unknown; ShapeFileFeatureLayer shapeFileFeatureLayer = featureLayer as ShapeFileFeatureLayer; bool isDataSourceAvailable = DataSourceResolveTool.IsDataSourceAvailable(featureLayer); if (shapeFileFeatureLayer != null && isDataSourceAvailable) { ShapeFileType shapeFileType = ShapeFileType.Null; shapeFileFeatureLayer.SafeProcess(() => shapeFileType = shapeFileFeatureLayer.GetShapeFileType()); switch (shapeFileType) { case ShapeFileType.Point: case ShapeFileType.PointZ: case ShapeFileType.Multipoint: case ShapeFileType.PointM: case ShapeFileType.MultipointM: result = SimpleShapeType.Point; break; case ShapeFileType.Polyline: case ShapeFileType.PolylineZ: case ShapeFileType.PolylineM: case ShapeFileType.Multipatch: result = SimpleShapeType.Line; break; case ShapeFileType.Polygon: case ShapeFileType.PolygonM: case ShapeFileType.PolygonZ: result = SimpleShapeType.Area; break; } } return(result); }
private void BrowseCustomDataClick(object sender, RoutedEventArgs e) { CustomDataCategoryViewModel customDataCategoryViewModel = ((FrameworkElement)sender).DataContext as CustomDataCategoryViewModel; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Shape File(*.shp)|*.shp"; if (openFileDialog.ShowDialog().GetValueOrDefault()) { ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer(openFileDialog.FileName); shapeFileFeatureLayer.Open(); if (shapeFileFeatureLayer.GetShapeFileType() == ShapeFileType.Polygon) { customDataCategoryViewModel.CustomDataFilePathName = openFileDialog.FileName; customDataCategoryViewModel.Columns.Clear(); foreach (DbfColumn dbfColumn in shapeFileFeatureLayer.FeatureSource.GetColumns().OfType <DbfColumn>()) { if (dbfColumn.ColumnType == DbfColumnType.Float || dbfColumn.ColumnType == DbfColumnType.Numeric || dbfColumn.ColumnType == DbfColumnType.DoubleInBinary || dbfColumn.ColumnType == DbfColumnType.IntegerInBinary) { customDataCategoryViewModel.Columns.Add(new ColumnViewModel(dbfColumn.ColumnName, dbfColumn.ColumnName) { LegendTitle = dbfColumn.ColumnName, Parent = customDataCategoryViewModel }); } } customDataCategoryViewModel.CanUsePieView = customDataCategoryViewModel.Columns.Count >= 2; mapModel.CustomDataFeatureLayer = shapeFileFeatureLayer; } else { MessageBox.Show("The shapefile must be polygon type, please try another one.", "Warning"); } } }
private static void CreateIndexFile(string idxPathFileName, string sourceShapeFilePath) { ShapeFileFeatureLayer sourceLayer = new ShapeFileFeatureLayer(sourceShapeFilePath); sourceLayer.RequireIndex = false; ShapeFileType shapeFileType = ShapeFileType.Null; sourceLayer.SafeProcess(() => { shapeFileType = sourceLayer.GetShapeFileType(); }); //sourceLayer.Open(); //ShapeFileType shapeFileType = sourceLayer.GetShapeFileType(); //sourceLayer.Close(); if (shapeFileType == ShapeFileType.Point || shapeFileType == ShapeFileType.PointZ || shapeFileType == ShapeFileType.PointM) { RtreeSpatialIndex.CreatePointSpatialIndex(idxPathFileName, RtreeSpatialIndexPageSize.EightKilobytes, RtreeSpatialIndexDataFormat.Float); } else { RtreeSpatialIndex.CreateRectangleSpatialIndex(idxPathFileName, RtreeSpatialIndexPageSize.EightKilobytes, RtreeSpatialIndexDataFormat.Float); } }
void AddLayers() { var colors = new List <Color> { Color.Red, Color.Blue, Color.Yellow, Color.Green, Color.Brown, Color.Orange, Color.Purple }; string[] fnames = GetShapefiles(); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.SetTitle("Select Shape File?"); builder.SetItems(fnames, (sender, args) => { if (fnames[args.Which] != null) { // Toast.MakeText( this , "Choose existing Service picked" + fnames [args.Which], ToastLength.Short).Show(); string layername = fnames[args.Which]; ShapeFileFeatureLayer nLayer = new ShapeFileFeatureLayer(System.IO.Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).ToString(), layername), ShapeFileReadWriteMode.ReadOnly); nLayer.RequireIndex = false; nLayer.Open(); if (nLayer.GetShapeFileType() == ShapeFileType.Point) { nLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.StandardColors.Red, GeoColor.StandardColors.Orange, 2); nLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; } else if (nLayer.GetShapeFileType() == ShapeFileType.Polyline) { nLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.StandardColors.LightPink, 2, GeoColor.StandardColors.Black, 0, false); nLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; } else if (nLayer.GetShapeFileType() == ShapeFileType.Polygon) { nLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle( GeoColor.FromArgb(100, GeoColor.StandardColors.LightYellow), GeoColor.StandardColors.Blue); } var v = nLayer.QueryTools.GetColumns(); string[] fields = new string[v.Count]; //for (int i = 0; i<v.Count ; ++i) int i = 0; foreach (FeatureSourceColumn c in v) { fields[i] = c.ColumnName; i++; } AlertDialog.Builder bld = new AlertDialog.Builder(this); bld.SetTitle("Select labelling field?"); bld.SetItems(fields, (senders, argss) => { if (fields[argss.Which] != null) { string d = fields[argss.Which].ToString(); if (nLayer.GetShapeFileType() == ShapeFileType.Polyline) { nLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.LocalRoad1(fields[argss.Which]); } else { nLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = new TextStyle(fields[argss.Which], new GeoFont("Arail", 9, DrawingFontStyles.Bold), new GeoSolidBrush(GeoColor.SimpleColors.Black)); } nLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; nLayer.Close(); nLayer.FeatureSource.Projection = proj4; LayerOverlay lOverlay = new LayerOverlay(); lOverlay.Layers.Add(layername, nLayer); androidMap.Overlays.Add(layername, lOverlay); androidMap.Refresh(); } }); bld.Create().Show(); } else if (fnames[args.Which] == null) { Toast.MakeText(this, "Cancel picked", ToastLength.Short).Show(); //How to close dialog Here } }); builder.Create().Show(); }
private void Refresh() { Dictionary <string, object> information = new Dictionary <string, object>(); targetFeatureLayer.SafeProcess(() => { string fileName = targetFeatureLayer.ShapePathFilename.Replace('/', '\\'); information.Add("File Name", fileName); information.Add("File Size", string.Format("{0} bytes", new FileInfo(targetFeatureLayer.ShapePathFilename).Length)); string indexPathFileName = targetFeatureLayer.IndexPathFilename.Replace('/', '\\'); information.Add("Index File", indexPathFileName); information.Add("ShapeFile Type", targetFeatureLayer.GetShapeFileType().ToString()); information.Add("Layer Name", targetFeatureLayer.Name); information.Add("Columns Count", targetFeatureLayer.QueryTools.GetColumns().Count.ToString()); information.Add("Rows Count", targetFeatureLayer.GetRecordCount().ToString()); if (targetFeatureLayer.HasBoundingBox) { RectangleShape boundingBox = targetFeatureLayer.GetBoundingBox(); information.Add("Upper Left X:", boundingBox.UpperLeftPoint.X.ToString("N4")); information.Add("Upper Left Y:", boundingBox.UpperLeftPoint.Y.ToString("N4")); information.Add("Lower Right X:", boundingBox.LowerRightPoint.X.ToString("N4")); information.Add("Lower Right Y:", boundingBox.LowerRightPoint.Y.ToString("N4")); } else { information.Add("Upper Left X:", double.NaN.ToString()); information.Add("Upper Left Y:", double.NaN.ToString()); information.Add("Lower Right X:", double.NaN.ToString()); information.Add("Lower Right Y:", double.NaN.ToString()); } if (!targetFeatureLayer.Name.Equals("TempLayer")) { information.Add("Encoding", GetAllEncodings()); selectedEncoding = targetFeatureLayer.Encoding; targetFeatureLayer.SafeProcess(() => { columns.Add(PleaseSelectText, PleaseSelectText); foreach (var item in targetFeatureLayer.FeatureSource.GetColumns()) { columns.Add(item.ColumnName, targetFeatureLayer.FeatureSource.GetColumnAlias(item.ColumnName)); } information.Add("Feature ID Column", columns); if (string.IsNullOrEmpty(FeatureIDColumn) && columns.Count > 0) { FeatureIDColumnAlias = columns.FirstOrDefault(); } if (!string.IsNullOrEmpty(FeatureIDColumn) && columns.Count > 0) { FeatureIDColumnAlias = columns.FirstOrDefault(c => c.Key == FeatureIDColumn); } }); } }); LayerInformation = information; }