小编Ale*_*lex的帖子

将SQLGeography多边形重新格式化为JSON

我正在构建一个以JSON格式提供地理边界数据的Web服务.

地理数据使用表中的地理类型存储在SQL Server 2008 R2数据库中.我使用[ColumnName].ToString()方法将多边形数据作为文本返回.

示例输出:

POLYGON ((-6.1646509904325884 56.435153006374627, ... -6.1606079906751 56.4338050060666))

MULTIPOLYGON (((-6.1646509904325884 56.435153006374627 0 0, ... -6.1606079906751 56.4338050060666 0 0)))
Run Code Online (Sandbox Code Playgroud)

地理定义可以采用定义多边形的纬度/长度对数组的形式,或者在多个定义的情况下,采用数组或多边形(多边形).

我有以下正则表达式,根据输出将输出转换为多维数组中包含的JSON对象.

Regex latlngMatch = new Regex(@"(-?[0-9]{1}\.\d*)\s(\d{2}.\d*)(?:\s0\s0,?)?", RegexOptions.Compiled);

    private string ConvertPolysToJson(string polysIn)
    {
        return this.latlngMatch.Replace(polysIn.Remove(0, polysIn.IndexOf("(")) // remove POLYGON or MULTIPOLYGON
                                               .Replace("(", "[")  // convert to JSON array syntax
                                               .Replace(")", "]"), // same as above
                                               "{lng:$1,lat:$2},"); // reformat lat/lng pairs to JSON objects
    }
Run Code Online (Sandbox Code Playgroud)

这实际上工作得很好,并且在响应操作调用时动态地将DB输出转换为JSON.

然而,我不是正则表达式大师,而且String.Replace()对我来说效率似乎也低效.

有没有人对此表现有任何建议/意见?

c# json geojson sqlgeography wkt

8
推荐指数
3
解决办法
7087
查看次数

标签 统计

c# ×1

geojson ×1

json ×1

sqlgeography ×1

wkt ×1