有一個service,給定某些標準,例如國家和城鎮,您將獲得一個定義包含搜索區域的多邊形或多面體的着名文本。Multipoligon中的點的反向方向
您可能有一個示例here。
現在我試圖將這些數據插入到使用C#和EF6.1的SQL Server數據庫中。
的代碼會是這樣的:
1日採取從服務多邊形字符串,並以變量添加:
var polygon = GetPolygonFromService(country, state, town);
,然後使用在數據庫中插入:
using(DataContext data = new DataCVontext())
{
var location = new Location
{
Country = country,
State = state,
Town = town,
GeoGraphy = DbGeography.FromText(polygon)
};
data.Locations.Add(location);
data.SaveChanges();
}
現在,當我這樣做,我得到一個錯誤:
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 4 ("@3"): The supplied value is not a valid instance of data type geography. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision
經過一些研究和一些測試後,我得出結論,發生這種情況是因爲多邊形定義中每個點的順序都是這樣的,即多邊形定義了外部區域而不是內部區域,所以不是試圖獲取紐約地區,除了紐約之外,它得到了地球上的其他地區。
有沒有辦法將其轉換爲正確的方向?
[這個MSDN博客文章(解決方案http://blogs.msdn.com/b/edkatibah/archive/2008/08/19/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-1b。 aspx)可能會感興趣。你可以建立一個基於它的存儲過程,並調用它來獲取你的反轉值作爲'GetPolygonFromService'的一部分。 – 2014-11-04 14:46:23
我真的想解析文本並將其逆轉... – 2014-11-04 15:25:03