首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SqlGeometry和DbGeometry之间转换

在SqlGeometry和DbGeometry之间转换
EN

Stack Overflow用户
提问于 2013-03-19 04:09:05
回答 3查看 4.3K关注 0票数 9

有没有一种在SqlGeometry和DbGeometry之间进行转换的简单方法?我使用的是一个流行的sql空间助手库,其中的所有函数都不包括SqlGeometry。但是,当我对ESRI ArcSDE要素类使用实体框架时,Shape字段将作为DbGeometry返回。我不能用那个DbGeometry类型调用任何我想调用的方法(比如LocateAlongGeom)。也许有一种方法可以将其序列化为二进制或文本,然后将其作为SqlGeometry读回?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-15 01:28:36

代码语言:javascript
复制
//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);
票数 12
EN

Stack Overflow用户

发布于 2015-04-14 01:36:32

管理多种空间类型的一种简单方法是通过扩展方法,例如:(使用来自@BizarroDavid的略微修改过的代码示例版本)

代码语言:javascript
复制
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);
    }
}

一旦你实现了它们,你就可以像这样使用它们...

代码语言:javascript
复制
DbGeometry anyDbGeometry;
SqlGeometry anySqlGeometry;

//Convert to DbGeometry
anyDbGeometry = anySqlGeometry.ToDbGeometry();

//Convert to SqlGeometry
anySqlGeometry = anyDbGeometry.ToSqlGeometry();
票数 3
EN

Stack Overflow用户

发布于 2022-01-09 13:35:06

实体框架不支持曲线(圆) ->更改为直线:

代码语言:javascript
复制
return DbGeometry.FromBinary(sqlGeometry.**STCurveToLine()**.STAsBinary().Buffer);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15485945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档