Click or drag to resize

ShapefileInfo Class

A handle that represents a shape file info.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.DataShapefileInfo

Namespace:  Esri.ArcGISRuntime.Data
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.11.0
Syntax
public sealed class ShapefileInfo

The ShapefileInfo type exposes the following members.

Properties
  NameDescription
Public propertyCopyrightText
Gets the copyright text of the shapefile.
Public propertyCredits
Gets the credits of the shapefile.
Public propertyDescription
Gets the description of the shapefile.
Public propertySummary
Gets the summary of the shapefile.
Public propertyTags
Gets the tags of the shapefile.
Public propertyCode exampleThumbnail
Gets the thumbnail image of the shapefile
Top
Remarks
If a shapefile has an associated *.xml file, shapefile info will be created and populated with metadata from the file. If an *.xml file does not exist, this object will be null.
Examples

UWP

Example Name: ReadShapefileMetadata

Read a shapefile and display its metadata.

Code example screen shot.

C#
// Copyright 2017 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using System;
using Windows.UI.Popups;
using ArcGISRuntime.Samples.Managers;
using Esri.ArcGISRuntime.Data;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.UI;

namespace ArcGISRuntime.UWP.Samples.ReadShapefileMetadata
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Read shapefile metadata",
        category: "Data",
        description: "Read a shapefile and display its metadata.",
        instructions: "The shapefile's metadata will be displayed when you open the sample.",
        tags: new[] { "credits", "description", "metadata", "package", "shape file", "shapefile", "summary", "symbology", "tags", "visualization" })]
    [ArcGISRuntime.Samples.Shared.Attributes.OfflineData("d98b3e5293834c5f852f13c569930caa")]
    public partial class ReadShapefileMetadata
    {
        public ReadShapefileMetadata()
        {
            InitializeComponent();

            // Open a shapefile stored locally and add it to the map as a feature layer
            Initialize();
        }

        private async void Initialize()
        {
            // Create a new map to display in the map view with a streets basemap
            Map streetMap = new Map(BasemapStyle.ArcGISStreets);

            // Get the path to the downloaded shapefile
            string filepath = GetShapefilePath();

            try
            {
                // Open the shapefile
                ShapefileFeatureTable myShapefile = await ShapefileFeatureTable.OpenAsync(filepath);

                // Read metadata about the shapefile and display it in the UI
                ShapefileInfo fileInfo = myShapefile.Info;
                InfoPanel.DataContext = fileInfo;

                // Display the shapefile thumbnail in an image control
                ShapefileThumbnailImage.Source = await RuntimeImageExtensions.ToImageSourceAsync(fileInfo.Thumbnail);

                // Create a feature layer to display the shapefile
                FeatureLayer newFeatureLayer = new FeatureLayer(myShapefile);
                await newFeatureLayer.LoadAsync();

                // Zoom the map to the extent of the shapefile
                MyMapView.SpatialReferenceChanged += async (s, e) =>
                {
                    await MyMapView.SetViewpointGeometryAsync(newFeatureLayer.FullExtent);
                };

                // Add the feature layer to the map
                streetMap.OperationalLayers.Add(newFeatureLayer);

                // Show the map in the MapView
                MyMapView.Map = streetMap;
            }
            catch (Exception e)
            {
                await new MessageDialog(e.ToString(), "Error").ShowAsync();
            }
        }

        private static string GetShapefilePath()
        {
            return DataManager.GetDataFolder("d98b3e5293834c5f852f13c569930caa", "TrailBikeNetwork.shp");
        }
    }
}
XAML
<UserControl
    x:Class="ArcGISRuntime.UWP.Samples.ReadShapefileMetadata.ReadShapefileMetadata"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:esriUI="using:Esri.ArcGISRuntime.UI.Controls">
    <Grid>
        <esriUI:MapView x:Name="MyMapView" />
        <Border Style="{StaticResource BorderStyle}">
            <Grid x:Name="InfoPanel">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding Credits}"
                           Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
                           FontWeight="SemiBold" TextAlignment="Center" />
                <TextBlock Text="{Binding Summary}"
                           Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
                           TextWrapping="Wrap" />
                <Image x:Name="ShapefileThumbnailImage"
                       Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"
                       Margin="10" />
                <TextBlock Text="Tags:"
                           Grid.Row="3" Grid.Column="0"
                           FontWeight="SemiBold"
                           VerticalAlignment="Center" />
                <ListBox ItemsSource="{Binding Tags}"
                         Grid.Row="3" Grid.Column="1"
                         Height="80"
                         Margin="10,0"
                         HorizontalAlignment="Stretch" />
            </Grid>
        </Border>
    </Grid>
</UserControl>
Examples

Xamarin Forms UWP

Example Name: ReadShapefileMetadata

Read a shapefile and display its metadata.

Code example screen shot.

C#
// Copyright 2017 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using System;
using ArcGISRuntime.Samples.Managers;
using Esri.ArcGISRuntime.Data;
using Esri.ArcGISRuntime.Mapping;
using System.IO;
using Xamarin.Forms;

namespace ArcGISRuntime.Samples.ReadShapefileMetadata
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Read shapefile metadata",
        category: "Data",
        description: "Read a shapefile and display its metadata.",
        instructions: "The shapefile's metadata will be displayed when you open the sample.",
        tags: new[] { "credits", "description", "metadata", "package", "shape file", "shapefile", "summary", "symbology", "tags", "visualization" })]
    [ArcGISRuntime.Samples.Shared.Attributes.OfflineData("d98b3e5293834c5f852f13c569930caa")]
    public partial class ReadShapefileMetadata : ContentPage
    {
        public ReadShapefileMetadata()
        {
            InitializeComponent();

            // Open a shapefile stored locally and add it to the map as a feature layer
            Initialize();
        }

        private async void Initialize()
        {
            // Create a new map to display in the map view with a streets basemap
            Map streetMap = new Map(BasemapStyle.ArcGISStreets);

            // Get the path to the downloaded shapefile
            string filepath = GetShapefilePath();

            try
            {
                // Open the shapefile
                ShapefileFeatureTable myShapefile = await ShapefileFeatureTable.OpenAsync(filepath);

                // Read metadata about the shapefile and display it in the UI
                ShapefileInfo fileInfo = myShapefile.Info;
                InfoPanel.BindingContext = fileInfo;

                // Read the thumbnail image data into a byte array
                Stream imageStream = await fileInfo.Thumbnail.GetEncodedBufferAsync();
                byte[] imageData = new byte[imageStream.Length];
                imageStream.Read(imageData, 0, imageData.Length);

                // Create a new image source from the thumbnail data
                ImageSource streamImageSource = ImageSource.FromStream(() => new MemoryStream(imageData));

                // Create a new image to display the thumbnail
                Image image = new Image()
                {
                    Source = streamImageSource,
                    Margin = new Thickness(10)
                };

                // Show the thumbnail image in a UI control
                ShapefileThumbnailImage.Source = image.Source;

                // Create a feature layer to display the shapefile
                FeatureLayer newFeatureLayer = new FeatureLayer(myShapefile);
                await newFeatureLayer.LoadAsync();

                // Zoom the map to the extent of the shapefile
                MyMapView.SpatialReferenceChanged += async (s, e) =>
                {
                    await MyMapView.SetViewpointGeometryAsync(newFeatureLayer.FullExtent);
                };

                // Add the feature layer to the map
                streetMap.OperationalLayers.Add(newFeatureLayer);

                // Show the map in the MapView
                MyMapView.Map = streetMap;
            }
            catch (Exception e)
            {
                await Application.Current.MainPage.DisplayAlert("Error", e.ToString(), "OK");
            }
        }

        private void ShowMetadataClicked(object sender, System.EventArgs e)
        {
            // Toggle the visibility of the metadata panel
            MetadataFrame.IsVisible = !MetadataFrame.IsVisible;
        }

        private static string GetShapefilePath()
        {
            return DataManager.GetDataFolder("d98b3e5293834c5f852f13c569930caa", "TrailBikeNetwork.shp");
        }
    }
}
XAML
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"             
             xmlns:esriUI="clr-namespace:Esri.ArcGISRuntime.Xamarin.Forms;assembly=Esri.ArcGISRuntime.Xamarin.Forms"
             xmlns:mapping="clr-namespace:Esri.ArcGISRuntime.Mapping;assembly=Esri.ArcGISRuntime" 
             x:Class="ArcGISRuntime.Samples.ReadShapefileMetadata.ReadShapefileMetadata">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>
        <esriUI:MapView x:Name="MyMapView"/>
        <Frame x:Name="MetadataFrame" 
               IsVisible="False"
               HorizontalOptions="Center"  VerticalOptions="Start"
               Margin="30"
               BorderColor="DarkGray"
               BackgroundColor="LightGray"
               WidthRequest="300">
            <ScrollView>
                <StackLayout x:Name="InfoPanel"
                        Orientation="Vertical"
                        Margin="5">
                    <Label Margin="5" 
                       FontAttributes="Bold" FontSize="Small" TextColor="DarkBlue"
                       Text="{Binding Path=Credits}"/>
                    <Label LineBreakMode="WordWrap"
                       FontSize="Micro" TextColor="Black"
                       Text="{Binding Summary}"/>
                    <Image x:Name="ShapefileThumbnailImage"
                        Margin="10"/>
                    <StackLayout Orientation="Horizontal">
                        <Label FontAttributes="Bold" FontSize="Micro" TextColor="Black"
                               Margin="0,3"
                               Text="Tags:"/>
                        <ListView HeightRequest="120" WidthRequest="160" RowHeight="25"
                                  ItemsSource="{Binding Tags}"/>
                    </StackLayout>
                </StackLayout>
            </ScrollView>
        </Frame>
        <Button Grid.Row="1" 
                Text="Show Metadata"
                Clicked="ShowMetadataClicked"
                HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>
    </Grid>
</ContentPage>
See Also
Additional Examples
Hyperlink to ExampleDescription
ReadShapefileMetadataRead a shapefile and display its metadata.