SqlGeometry 、DbGeometry 兩者的差異在哪裡?
命名空間: Microsoft.SqlServer.Types 之下的類別 SqlGeometry
而 DbGeometry 則有兩個命名空間
命名空間1:System.Data.Spatial 之下的類別 DbGeometry
命名空間2:System.Data.Entity.Spatial 之下的類別 DbGeometry
不管事哪個命名空間 都有要用的 FromBinary(Byte[]) 、AsBinary 方法!
(擇一使用,看哪個比較適合)
//Convert from SqlGeometry to DbGeometry
SqlGeometry sqlGeo = ...
DbGeometry dbGeo = DbGeometry.FromBinary(sqlGeo.STAsBinary().Buffer);
上面的作法是把 SqlGeometry 用 STAsBinary() 方法,轉成開放式地理空間協會 (Open Geospatial Consortium,OGC) 已知的二進位 (well-known binary,WKB) 結果。
再利用 命名空間: System 之下的類別 Buffer 轉成陣列(是這樣說嗎?)
透過 DbGeometry 類別 FromBinary 方法再把它轉成 DbGeometry 物件
//Convert from DBGeometry to SqlGeometry
SqlGeometry sqlGeo2 = SqlGeometry.STGeomFromWKB(new SqlBytes(dbGeo.AsBinary()), 0);上面的作法是把 DbGeometry 用 AsBinary 方法,轉成 Binary 結果。
再利用 命名空間: System.Data.SqlTypes 之下的類別 SqlBytes 轉成 WKB
透過 SqlGeometry 類別 STGeomFromWKB 方法再把它轉成 SqlGeometry 物件
沒有留言 :
張貼留言