New to Telerik UI for WinFormsStart a free 30-day trial

ESRI Shapefile Reader

Updated over 6 months ago

The ESRI Shapefiles or simply the shapefiles are popular format for storing geographical data. The files spatially describe geometries like lines, polylines and polygons. These geometries may represent different geographical objects such as countries, roads, rivers, lakes etc. Via a software that supports the format, the geometries can be translated properly on a map.

Figure 1: ESRI Shapefile Reader

WinForms RadMap ESRI Shapefile Reader

To read your data you have to use a ShapeFileReader which reads ShapeFileReaderParameters where the ShapeStream and DbfStream are stored.

You can find the shape file for this example in our demo application.

Using ShapeFileReader

C#
        
private Font seatsFont = new Font("Arial", 7f, FontStyle.Bold);
    
public void SetupESRIShapeReader()
{
    MapLayer pinsLayer = new MapLayer("Hall Layout");
    this.radMap1.Layers.Add(pinsLayer);
    EmptyMapProvider emptyProvider = new EmptyMapProvider();
    emptyProvider.MinZoomLevel = 15;
    emptyProvider.MaxZoomLevel = 16;
    emptyProvider.InitializationComplete += emptyProvider_ESRIInitializationComplete;
    
    radMap1.Providers.Add(emptyProvider);
    using (MemoryStream seatsStream = new MemoryStream(Properties.Resources.theatre_seats_pol))
    {
        using (MemoryStream seatsDataStream = new MemoryStream(Properties.Resources.theatre_seats_pol_data))
        {
            using (MemoryStream aisleStream = new MemoryStream(Properties.Resources.theatre_aisle_labels))
            {
                ShapeFileReaderParameters parameters = new ShapeFileReaderParameters();
                parameters.ShapeStream = seatsStream;
                parameters.DbfStream = seatsDataStream;
                ShapeFileReader reader = new ShapeFileReader();
                List<MapVisualElement> elements = reader.Read(parameters);
                    
                foreach (MapGeometry element in elements)
                {
                    element.Font = this.seatsFont;
                    element.ForeColor = Color.White;
                    element.Text = "$[CAPTION]";
                    element.BackColor = Color.FromArgb(
                        Convert.ToInt32(element.ExtendedData.GetValue("RGB0")),
                        Convert.ToInt32(element.ExtendedData.GetValue("RGB1")),
                        Convert.ToInt32(element.ExtendedData.GetValue("RGB2")));
                    element.BorderWidth = 0;
                }
                
                this.radMap1.Layers["Hall Layout"].AddRange(elements);
                
                parameters = new ShapeFileReaderParameters();
                parameters.ShapeStream = aisleStream;
                elements = reader.Read(parameters);
                this.radMap1.Layers["Hall Layout"].AddRange(elements);
            }
        }
    }
}
    
private void emptyProvider_ESRIInitializationComplete(object sender, EventArgs e)
{
    List<Telerik.WinControls.UI.Map.PointG> locations = new List<Telerik.WinControls.UI.Map.PointG>();
        
    foreach (MapVisualElement el in this.radMap1.Layers["Hall Layout"].Overlays)
    {
        locations.Add(el.Location);
    }
        
    this.radMap1.BringIntoView(Telerik.WinControls.UI.Map.RectangleG.GetBoundingRectangle(locations));
}

See Also

In this article
See Also
Not finding the help you need?
Contact Support