sql - 将地理转换为几何 SQL Server 2008R2

标签 sql geometry spatial geography

Hello, i have the following code in SQL Server, why if i want to calculate the sTArea of @geog fails and with @geom succeed?, how can i convert this polygon from geometry to geography datatype in order to get the STArea?, thank you.


DECLARE @geom geometry;
SET @geom = geometry::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
select @geom.STArea();

DECLARE @geog geography;
SET @geog = geography::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
select @geog.STArea();

最佳答案

我查了一下,这个答案 How can I convert Geometry data into a Geography data in MS SQL Server 2008? 或多或少只是指向 http://blogs.msdn.com/b/edkatibah/archive/2008/08/19/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-1b.aspx 引导我找到合理的解释和工作代码。

关键是:您必须首先确保您的几何图形可以转换为有效的地理图形。

代码(当然可以组合一些操作,但为了清楚起见,这里将它们分开。)

DECLARE @geog GEOGRAPHY;
DECLARE @geom GEOMETRY;

SET @geom = GEOMETRY::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
SET @geom = @geom.MakeValid() --Force to valid geometry
SET @geom = @geom.STUnion(@geom.STStartPoint()); --Forces the correct the geometry ring orientation
SET @geog = GEOGRAPHY::STGeomFromText(@geom.STAsText(),4326) 

SELECT @geog.STArea();

对于那些不会一直通读 Spatial Ed 博客文章的人来说,一个重要提示是,“请记住,这种方法很幼稚,因为它不能适应多种潜在的边缘条件。尽管如此,这种方法应该在许多情况下工作。”

关于sql - 将地理转换为几何 SQL Server 2008R2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200746/

相关文章:

mysql - 如何从每 2 分钟存储一次的状态日志中确定事件的开始/结束时间

c# - 无法序列化 DataTable。未设置数据表名称

围绕一组二维点查找外接圆的算法

R - 如何围绕一个点绘制半径并使用该结果过滤其他点?

sql - REGEX 从列表中选择第 n 个值,允许空值

java - 创建递归算法

linux - 二维几何绘图工具

mysqlimport 或 LOAD DATA INFILE 使用多点数据类型

mysql - 在 MySQL 中使用空间索引时性能不佳

javascript - Access 数据库数据类型错误