使用DevExpress展示地圖—加載SHP


做簡單的地圖展示,不需要專業的GIS組件,使用DevExpress即可完成。以加載Shp地圖文件為例。

private void LoadShp(string path)
{
    //創建SHP數據源
    ShapefileDataAdapter dataAdapter = new ShapefileDataAdapter
    {
        FileUri = new Uri(path),
        SourceCoordinateSystem = new CartesianSourceCoordinateSystem(), //坐標系
        DefaultEncoding = Encoding.UTF8, //編碼
    };

    //創建矢量圖層
    VectorItemsLayer vectorItemsLayer = new VectorItemsLayer
    {
        Data = dataAdapter,
        Colorizer = CreateChoroplethColorizer("SCP") //分級符號化
    };
    vectorItemsLayer.Name = "任務區";
    
//標注
    vectorItemsLayer.ShapeTitlesVisibility = VisibilityMode.Visible;
    vectorItemsLayer.ShapeTitlesPattern = "{Name}:{ SCP }%";

    //設置地圖控件屬性
    this.mapControl1.CoordinateSystem = new CartesianMapCoordinateSystem();
    this.mapControl1.NavigationPanelOptions.Visible = false;

    //加載圖層
    mapControl1.Layers.Add(vectorItemsLayer);

    //加載圖例
    MapLegendBase mapLegendBase = CreateLegend(vectorItemsLayer);
    mapLegendBase.Alignment = LegendAlignment.TopLeft;
    this.mapControl1.Legends.Add(mapLegendBase);
}

 需要注意的問題:

(1)正確設置ShapefileDataAdapter和mapControl的坐標系統CoordinateSystem,否則無法顯示;

(2)當標注用到包含中文的屬性時會亂碼,需設置DataAdapter的默認編碼屬性DefaultEncoding;

(3)標注使用圖層的ShapeTitlesPattern屬性,它是一個字符串,對於引用的字段,需加上中括號,例如"{Name}"表示用屬性表中Name來標注 ;

(4)也支持圖例、符號化等基本地圖概念。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM