我正在構建一個以JSON格式提供地理邊界數據的Web服務。將SQLGeography多邊形重新格式化爲JSON
地理數據使用表格中的地理類型存儲在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)))
地理定義可以採取任一緯度/經度對限定多邊形的陣列或在的多個定義,陣列或多邊形(多面)的情況下的形式。
我有以下正則表達式,根據輸出將輸出轉換爲包含在多維數組中的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
}
這實際上是相當不錯的了和DB輸出到JSON在飛行轉換響應的操作調用。
但是,我不是正則表達式大師,String.Replace()
的調用對我來說似乎也是低效的。
有沒有人對此有任何建議/評論?
注意:地理定義僅用於GB,這反映在正則表達式中。 – James