是否有一種簡單的方法在SqlGeometry和DbGeometry之間進行轉換? 我正在使用流行的sql空間幫助程序庫以及其中的所有函數都期望使用SqlGeometry。但是,當我使用實體框架對ESRI ArcSDE要素類時,Shape字段作爲DbGeometry返回。 我不能使用該DbGeometry類型調用任何我想要的方法(例如LocateAlongGeom)。 也許有一種方法將其序列化爲二進制文本或文本,然後將其作爲SqlGeometry讀回來?SqlGeometry和DbGeometry之間的轉換
6
A
回答
9
//Convert from SqlGeometry to DbGeometry
SqlGeometry sqlGeo = ...
DbGeometry dbGeo = DbGeometry.FromBinary(sqlGeo.STAsBinary().Buffer);
//Convert from DBGeometry to SqlGeometry
SqlGeometry sqlGeo2 = SqlGeometry.STGeomFromWKB(new SqlBytes(dbGeo.AsBinary()), 0);
1
一個簡單的方法來管理多個空間類型是通過擴展方法,像這樣:(使用@BizarroDavid代碼樣本的略微修改後的版本)
public static class GeometryExtensions
{
public static DbGeometry ToDbGeometry(this SqlGeometry sqlGeometry)
{
return DbGeometry.FromBinary(sqlGeometry.STAsBinary().Buffer);
}
public static SqlGeometry ToSqlGeometry(this DbGeometry dbGeometry)
{
return SqlGeometry.STGeomFromWKB(new SqlBytes(dbGeometry.AsBinary()), dbGeometry.CoordinateSystemId);
}
}
一旦他們實現,你可以使用它們像這樣......
DbGeometry anyDbGeometry;
SqlGeometry anySqlGeometry;
//Convert to DbGeometry
anyDbGeometry = anySqlGeometry.ToDbGeometry();
//Convert to SqlGeometry
anySqlGeometry = anyDbGeometry.ToSqlGeometry();
相關問題
- 1. 是否有一種方法可以直接將dbgeometry或sqlgeometry轉換爲形狀文件?
- 2. 轉換XAML到SHAPEFILE或SqlGeometry格式
- 3. 在視圖之間轉換:在segues和代碼之間轉換
- 4. RGB和HSV空間之間的轉換
- 5. double和「+」和「 - 」之間的轉換和轉換字符串
- 6. 在SPSS和R之間轉換時間
- 7. SSE和NEON之間的轉換Intrinsics-Shuffling
- 8. C#轉換之間的Deedle幀和DataTable
- 9. int和varchar之間的隱式轉換
- 10. 度和毫秒之間的轉換
- 11. SQL char和C之間的轉換#
- 12. Little和Big之間的Endienness轉換
- 13. 記錄和元組之間的轉換?
- 14. Mat和Mat1b/Mat3b之間的轉換
- 15. LocalDate和XMLGregorianCalendar之間的轉換
- 16. 休眠和節儉之間的轉換
- 17. tf和eigen之間的轉換
- 18. UIImage(PNG)和RGB8之間的轉換
- 19. cv :: Mat和XnDepthPixel之間的轉換*
- 20. 10和2之間的基礎轉換
- 21. InputStream和BufferedImage之間的轉換
- 22. DbGeometry makevalid?
- 23. 在Talend之間轉換SQL Server和Postgres之間的日期
- 24. 谷歌分析和實際轉換之間的轉換差異
- 25. 類型轉換和類型轉換之間的區別?
- 26. 顯式轉換和安全轉換之間的差異#
- 27. UIViews之間的NSString轉換
- 28. TProtocols之間的轉換
- 29. NSView之間的CoreImage轉換
- 30. 網頁之間的轉換
不應該'DbGeometry'到'SqlGeometry'轉換爲...'SqlGeometry sqlGeo2 = SqlGeometry.STGeomFromWKB(新SqlBytes(dbGeo.AsBinary()),dbGeo。 CoordinateSystemId); ' 要考慮不在SRID-0中的幾何? – Xharlie 2014-10-15 09:57:46
是的,我假設你想在大多數情況下通過SRID。對於大多數GPS座標,您可以使用'4326'作爲WGS84。 http://spatialreference.org/ref/epsg/4326/ – jocull 2015-04-13 15:17:44
我相信你也可以用'dbGeo.CoordinateSystemId'代替上面的零動態檢測它。 – jocull 2015-04-13 15:40:49