我們有大量的地理信息存儲在MapInfo表中,我們現在想要存儲在SQL Server中。我們編寫了C#實用程序來從MapInfo文件中讀取地理信息並將它們導入SQL服務器。大多數情況下,這是行之有效的。但是,在使用我們在內部開發的工具進行了許多清理工作之後,我們仍然留下了大量被SqlGeography.STIsValid()
認爲無效的地理區域。C#SQLGeography:診斷無效幾何
對於大多數或所有這些情況,.NET方法SqlGeography.MakeValid()
能夠創建有效的地理實例。然而,這方面的文檔相當糟糕,我們不滿足於僅僅接受MakeValid
所做的修改,而不理解地理被認爲無效的原因以及MakeValid
如何修正它們。
通過致電IsValidDetailed
,我們得到一個神祕的錯誤消息,沒有很好的記錄。對於很多的情況下,由IsValidDetailed
返回的字符串看起來是這樣的:
24404:無效的,因爲多邊形環(1)與自己相交,或其他一些環。問題發生在幾何集合中的條目(19)中
我們嘗試導入的所有地理對象都是多面體。通過解析這個錯誤信息,我們試圖找出這些多邊形內的問題多邊形和環。但是,我們發現索引似乎並不匹配實際有問題的多邊形/環。在很多情況下,索引超出了輸入幾何的數組邊界。
是否有更好的方法來查明幾何/地理對象被視爲無效的具體原因並查明哪些多邊形,圓環或點有問題?
感謝您的答覆。雖然點的方向可能是錯誤的原因,但在我們的情況下並非如此。我們有代碼可以自動檢測方向並在不正確的情況下修復方向。由於某些其他原因,無效的其餘幾何圖形無效。 – jmcstwm