ITopobase.FormatLoadFromFile

Синтаксис

FormatLoadFromFile(SourceFormat: TopobaseFormat, FileName: String);

FormatLoadToFile(SourceFormat: Prognoz.Platform.Interop.Topobase.TopobaseFormat, FileName: string);

Параметры

SourceFormat. Формат топоосновы;

FileName. Путь и наименование файла топоосновы.

Описание

Метод FormatLoadFromFile загружает топооснову из файла.

Пример

Для выполнения примера предполагается наличие в репозитории:

Для примера на Fore.NET используйте аналоги Fore-компонентов: MapBoxNet, UiMapNet и NumericUpDown.

Добавьте ссылки на системные сборки: Drawing, Map, MathFin, Metabase, Topobase.

Var
    Count: Integer;

// Получим информацию о динамических показателях
// в различных временных точках на слое карты
Class VisualDataAdapter: Object, IMapTimeDynamicDataAdapter
    Function Get_PartCount(Attribute: Variant; TimePoint: Integer): Integer;
    Begin
        Return Count;
    End Function Get_PartCount;
    
    Function Get_TimePointName(TimePoint: Integer): String;
    Begin
        Return "TimePoint " + TimePoint.ToString;
    End Function Get_TimePointName;
    
    Function Get_TimePointsCount: Integer;
    Begin
        Return 4;
    End Function Get_TimePointsCount;
            
    Function Get_Data(Attribute: Variant; PartvIndex: Integer; TimePoint: Integer): Variant;
    Var
        t: Integer;
        i: Integer;
    Begin
        t := 1;
        For i := 0 To TimePoint Do
            t := t + 10;
        End For;
        Return Math.Rand * 10 * t;
    End Function Get_Data;

    Function Get_CustomFormat: String;
    Begin
        Return "#0,000";
    End Function Get_CustomFormat;      
End Class VisualDataAdapter;

Class ITOPOBASE_FORMATLOADFROMFILEForm: Form
    Button1: Button;
    UiMap1: UiMap;
    MapBox1: MapBox;
    IntegerEdit1: IntegerEdit;
    mb: IMetabase;
    Map: IMap;
    Top: IMapTopobase;
    Itop: ITopobase;
    
    Sub CreateLayer(CurrentMap: IMap);
    Var
        StartC, EndC: IGxColor;
        Color: IMapVisualColorProperty;
        Scale: IMapColorScale;
        AreaVisual: IMapAreaVisual;
        Layer: IMapLayer;
    Begin
        // Получим слой карты с наименованием «Regions»
        Layer := CurrentMap.Layers.FindByName("Regions");
        // Зададим цвет фона карты
        CurrentMap.Color := New GxColor.CreateARGB(100, 100, 100, 100);
        // Обновим карту
        CurrentMap.Refresh;
        // Получим картографический показатель
        AreaVisual := Layer.Visuals.AddAreaVisual;
        // Создадим источник данных для показателя
        AreaVisual.DataAdapter := New VisualDataAdapter.Create As IMapTimeDynamicDataAdapter;
        Count := 5;
        // Получим параметры заливки показателя
        Color := AreaVisual.Color;
        // Определим источник данных для заливки
        Color.DataAdapter := AreaVisual.DataAdapter;
        // Создадим цветовую шкалу
        Scale := New DxMapColorScale.Create As IMapColorScale;
        // Зададим начальный цвет градиента
        StartC := GxColor.FromName("Red");
        // Зададим конечный цвет градиента
        EndC := GxColor.FromName("Blue");
        // Настроим цветовую шкалу
        Scale.AutoSetup(Layer, AreaVisual.DataAdapter, StartC, EndC);
        // Зададим цветовую шкалу для заливки показателя
        Color.Scale := Scale;
        // Обновим карту
        CurrentMap.Refresh;
    End Sub CreateLayer;
    
    Sub ITOPOBASE_FORMATLOADFROMFILEFormOnCreate(Sender: Object; Args: IEventArgs);
    Begin
        // Получим репозиторий
        mb := MetabaseClass.Active;
        // Получим карту
        Map := UiMap1.Map;
        // Получим топооснову карты
        Top := mb.FetchItemById("MAP").Edit As IMapTopobase;
        // Сохраним топооснову
        Itop := Top As ITopobase;
        // Зададим топооснову
        Map.Topobase := Itop As IMapTopobase;
        // Отобразим карту
        CreateLayer(Map);
    End Sub ITOPOBASE_FORMATLOADFROMFILEFormOnCreate;

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        TopoName: String;
    Begin
        TopoName := "";
        // Загрузим топооснову из файла C:\Topobase.<расширение файла>
        If IntegerEdit1.Value = TopobaseFormat.Tbs Then
            TopoName := "tbs";
        End If;
        If IntegerEdit1.Value = TopobaseFormat.Svg Then
            TopoName := "svg";
        End If;
        If IntegerEdit1.Value = TopobaseFormat.Google Then
            TopoName := "google";
        End If;
        If IntegerEdit1.Value = TopobaseFormat.Triangulate Then
            TopoName := "triangulate";
        End If;
        Itop.FormatLoadFromFile((IntegerEdit1.Value) As TopobaseFormat, "C:\Topobase." + TopoName);
        // Сохраним изменения
        (Itop As IMetabaseObject).Save;
        // Зададим новую топооснову 
        Map.Topobase := Itop As IMapTopobase;
        // Отобразим карту
        CreateLayer(Map)
    End Sub Button1OnClick;
End Class ITOPOBASE_FORMATLOADFROMFILEForm;

Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Map;
Imports Prognoz.Platform.Interop.MathFin;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Topobase;

…
// Получим информацию о динамических показателях
// в различных временных точках на слое карты
Class VisualDataAdapter: IMapTimeDynamicDataAdapter
    Public Property PartCount[Attribute: Object; TimePoint: Integer]: Integer
        Get
            Begin
                Return Count;
        End Get
    End Property;

    Public Property Data[Attribute: Object; PartvIndex: Integer; TimePoint: Integer]: Object
        Get
            Var
                Math: MathClass = New MathClass();
                t: Integer;
                i: Integer;
            Begin
                t := 1;
                For i := 0 To TimePoint Do
                    t := t + 10;
                End For;
                Return Math.Rand() * 10 * t;
        End Get
    End Property;

    Public Property TimePointsCount: Integer
        Get
            Begin
                Return 4;
        End Get
    End Property;
    
    Public Property TimePointName[TimePoint: Integer]: String
        Get
            Begin
                Return "TimePoint " + TimePoint.ToString();
        End Get
    End Property;
    
    Public Property CustomFormat: String
        Get
            Begin
                Return "#0,000";
        End Get
    End Property;
End Class;

Var
    Count: Integer;

Sub CreateLayer(CurrentMap: IMap);
Var
    StartC, EndC: GxColor;
    Color: IMapVisualColorProperty;
    Scale: DxMapColorScale;
    AreaVisual: IMapAreaVisual;
    Layer: IMapLayer;
    GxColorCls: GxColorClass_2 = New GxColorClass_2();
    GxColorCls1: GxColorClassClass = New GxColorClassClass();
Begin
    // Получим слой карты с наименованием «Regions»
    Layer := CurrentMap.Layers.FindByName["Regions"];
    // Зададим цвет фона карты
    GxColorCls.CreateARGB(100, 100, 100, 100);
    CurrentMap.Color := GxColorCls;
    // Обновим карту
    CurrentMap.Refresh();
    // Получим картографический показатель
    AreaVisual := Layer.Visuals.AddAreaVisual();
    // Создадим источник данных для показателя
    AreaVisual.DataAdapter := New VisualDataAdapter();
    Count := 5;
    // Получим параметры заливки показателя
    Color := AreaVisual.Color;
    // Определим источник данных для заливки
    Color.DataAdapter := AreaVisual.DataAdapter;
    // Создадим цветовую шкалу
    Scale := New DxMapColorScaleClass();
    // Зададим начальный цвет градиента
    StartC := GxColorCls1.FromName("Red");
    // Зададим конечный цвет градиента
    EndC := GxColorCls1.FromName("Blue");
    // Настроим цветовую шкалу
    Scale.AutoSetup(Layer, AreaVisual.DataAdapter, StartC, EndC);
    // Зададим цветовую шкалу для заливки показателя
    Color.Scale := Scale;
    // Обновим карту
    CurrentMap.Refresh();
End Sub CreateLayer;


Public Partial Class ITOPOBASE_FORMATLOADFROMFILE_FORMForm: Prognoz.Platform.Forms.Net.ForeNetForm
    Public Constructor ITOPOBASE_FORMATLOADFROMFILE_FORMForm();
    Begin
        InitializeComponent();
    End Constructor;
    
    mb: IMetabase;
    Map: IMap;
    Top: IMapTopobase;
    Itop: ITopobase;
    
    Private Sub ITOPOBASE_FORMATLOADFROMFILE_FORMForm_Load(sender: System.Object; e: System.EventArgs);
    Begin
        // Получим репозиторий
        mb := Self.Metabase;
        // Получим карту
        Map := UiMapNet1.Map;
        // Получим топооснову карты
        Top := mb.ItemById["MAP"].Edit() As IMapTopobase;
        // Сохраним топооснову
        Itop := Top As ITopobase;
        // Зададим топооснову 
        Map.Topobase := Itop As DxMapTopobase;
        // Отобразим карту
        CreateLayer(Map);
    End Sub;

    
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
    Var
        TopoName: String;
    Begin
        TopoName := "";
        
// Загрузим топооснову из файла C:\Topobase.<расширение файла>
        If (numericUpDown1.Value As Integer) = (TopobaseFormat.ttTbs As Integer) Then
            TopoName := "tbs";
        End If;
        If (numericUpDown1.Value As Integer) = (TopobaseFormat.ttSvg As Integer) Then
            TopoName := "svg";
        End If;
        If (numericUpDown1.Value As Integer) = (TopobaseFormat.ttGoogle As Integer) Then
            TopoName := "google";
        End If;
        If (numericUpDown1.Value As Integer) = (TopobaseFormat.ttTriangulate As Integer) Then
            TopoName := "triangulate";
        End If;
        Itop.FormatLoadFromFile((numericUpDown1.Value As Integer) As TopobaseFormat, "C:\Topobase." + TopoName);
        // Сохраним изменения
        (Itop As IMetabaseObject).Save();
        // Зададим новую топооснову 
        Map.Topobase := Itop As DxMapTopobase;
        // Отобразим карту
        CreateLayer(Map);
    End Sub;
End Class;

После выполнения примера при нажатии на кнопку «Button1» из файла в форму будет загружена топооснова указанного формата.

См. также:

ITopobase