当前位置: 首页 > 面试题库 >

.net 4.5中是否有类似dbgeometry makevalid之类的东西

云慈
2023-03-14
问题内容

我正在尝试像这样计算折线的面积

    string poly = "POLYGON ((637604.918432772 2230520.64934531,
637622.257266129 2230419.44632915, 637279.107128549 2230192.04910755, 636765.470527745 2230179.6468564, 636778.005055813 2229861.77192838, 636529.81646905 2229464.29327025, 635813.486592791 2229523.30345774, 636017.385069448 2229974.32341381, 636267.323659164 2230070.32127916, 637035.026966561 2230404.70764784, 637275.265066307 2230401.13408429, 637604.918432772 2230520.64934531, 637604.918432772 2230520.64934531))";
     DbGeometry gm = DbGeometry.FromText(poly, 32637);
double area= gm.Area.Value; // here I got the error Exception has been thrown by the target of an invocation.

后来我注意到dbgeometry无效的错误的原因我尝试了ms sql 2012中的代码也给了我错误,但是当我尝试那样的时候

SELECT @gm.MakeValid().STArea()

多数民众赞成在SQL工作我的问题是有没有使几何在.net有效的谢谢


问题答案:

我同意Bojan,除非您使用的是实体框架?

SqlGeometry对象具有MakeValid()函数,因此,使用您的示例,可以在DbGeography和SqlGeography之间进行转换:

DbGeography geog;
SqlGeometry geom = SqlGeometry.STGeomFromWKB(new SqlBytes(geog.AsBinary()), 32637);

但是,除非您使用的是EF,否则我建议您仅使用SqlGeometry作为

  1. 没有演员表/转换
  2. SqlGeometry比DbGeometry具有更多的可用功能。

希望能有所帮助。



 类似资料:
  • 问题内容: 在C#中,您可以将一个类标记为,以便只能从同一包中对其进行访问。Java有什么类似的东西吗? 问题答案: 您可以通过从类的声明中省略安全修饰符(公共,私有)来创建程序包专用类。

  • 问题内容: 我从来没有见过这样的声明,它是否存在于Java世界中? 问题答案: Java的版本是-它创建指定类型的新对象。 在Java中,内存是为您管理的,因此您不能显式或对象。

  • 问题内容: 是否有与Java或JVM语言的Python virtualenv类似的东西? 问题答案: 据我了解,virtualenv使您能够拥有单独的库安装路径,从而有效地分隔“虚拟” Python安装。 Java没有“系统范围内已安装”库(*)的概念:它总是在类路径中搜索要加载的库。由于可以为每个应用程序定义类路径(并且需要将其定义!),因此每个应用程序都可以选择要加载的库和版本。 如果您更深入

  • 问题内容: 开始使用C#学习LINQ。 尤其是LINQ to Objects和LINQ to XML。 我真的很喜欢LINQ的强大功能。 我了解到有一种叫做JLINQ的JavaScript实现。 此外(如Catbert所言),Scala将具有LINQ 您知道LINQ或类似的东西是否将成为Java 7的一部分吗? 更新:2008年的有趣帖子-LINQ forJava工具 问题答案: 看一下Scala

  • 问题内容: Java中是否有类似.NET的东西? 问题答案: 下议院郎有它。或者你可以扔一个。

  • 问题内容: 是否有类似C#/。NET的东西 在Java中? 问题答案: 编辑:作为Java 8,这可能与 在Java8之前: Java中没有这样的东西, 但是您可以有如下内容: 例如,您可以通过以下方式使用Range: 另外,如果您不喜欢直接使用,则可以使用工厂类: 这是我们的工厂测试: 我希望这些会有用:)