【问题标题】:Convert WKB to Esri GeodatabaseFeature将 WKB 转换为 Esri GeodatabaseFeature
【发布时间】:2016-02-19 15:34:24
【问题描述】:

我正在尝试制作一个从 SQLite 数据库获取数据并将其显示在 ArcGIS 地图上的 UWP 应用程序。

我已将一个形状文件从 QGIS 导出到 SQLite 数据库。我从这个数据库中检索了 WKB 格式的 GEOMETRY,但不确定如何将其转换为 GeodatabaseFeature 或其他可以显示在 ArcGIS 地图上的对象。

这是我的功能。

    private void DisplayDatabase()
    {
        var tableName = (string)_DatabaseConnection.CreateCommand("SELECT f_table_name FROM geometry_columns").ExecuteDeferredQuery()[0]["f_table_name"];
        var geometryData = _DatabaseConnection.CreateCommand($"SELECT * FROM {tableName}").ExecuteDeferredQuery();

        foreach (var shape in geometryData)
        {
            //convert the data to an object
            var geometry = shape["GEOMETRY"] as byte[];

            //Need code to convert to Feature.
        }
    }

【问题讨论】:

  • “将其转换为地理数据库功能”-您的意思是转换并将其存储在地理数据库中?或者您是否有兴趣即时执行此操作(例如,磁盘上没有 GDB)
  • 即时。我们已经在使用一个 SQLite 数据库,我们不希望另一个数据库使事情复杂化。

标签: c# sqlite arcgis uwp qgis


【解决方案1】:

我找到了一种使用 WKT 的方法,但我确信有一种方法可以从 WKB 转到 WKT。

一旦在 WKT 中,您可以使用 this 类(对混乱感到抱歉)将其转换为可在 Geometry.FromJson(string) 方法中使用的 JSON,从而为您提供可以分配给图形的几何图形,然后添加到图形层。

像这样:

var graphic = new Graphic(Geometry.FromJson(ConvertWkt2Json.WKT2JSON(wktGeometry)), new SimpleMarkerSymbol() { Style = SimpleMarkerStyle.Circle, Color = Colors.Red, Size = 17 });
layer.Graphics.Add(graphic);

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2021-09-02
    • 2023-03-11
    • 2012-02-06
    • 2010-11-12
    • 2012-06-10
    • 2017-01-15
    • 2015-02-20
    • 2021-02-14
    相关资源
    最近更新 更多