SQL Server Geometry.STBuffer()距离测量单位

SQL Server Geometry.STBuffer()距离测量单位,sql,sql-server,distance,units-of-measurement,geography,Sql,Sql Server,Distance,Units Of Measurement,Geography,这将检查geography::STBuffer。根据David Storfer的评论,几何体字段的处理方式不同,并且具有完全不同的属性集。然而,该文档并没有详细探讨单元的问题。我们的信息包含存储为几何字段的形状数据,因此我需要知道geometry::STBuffer使用的单位是什么 这说明sys.spatial_reference_系统中的坐标系适用于地理类型,因此尽管对此进行了详细研究,但似乎该信息与此问题无关。在进一步调查之后,我使用STDistance并手动检查地图,以确认至少对于我们的信

这将检查geography::STBuffer。根据David Storfer的评论,几何体字段的处理方式不同,并且具有完全不同的属性集。然而,该文档并没有详细探讨单元的问题。我们的信息包含存储为几何字段的形状数据,因此我需要知道geometry::STBuffer使用的单位是什么

这说明sys.spatial_reference_系统中的坐标系适用于地理类型,因此尽管对此进行了详细研究,但似乎该信息与此问题无关。在进一步调查之后,我使用STDistance并手动检查地图,以确认至少对于我们的信息来说,geometry::STBuffer和geometry::STDistance所使用的值与用作测量距离的米相对应。这表明STDistance的返回值以度为单位,但这不是我观察到的行为。根据该页和后续页上提供的信息,再次声明sys.spatical_reference_系统中列出的SRID仅指地理类型,对于几何类型,通过距离、长度和面积等方法返回的线性单位始终在点的单位坐标中,我的结论是,这个问题的答案实际上取决于创建数据集所使用的单位

当然,我现在想知道如何确定我信息的单位。这通常会检查单位,并且接受的答案是这样的:如果您的数据列是使用SRID为0创建的,那么系统将被定义为无单位,您将需要一些关于数据模型的元数据来计算单位。如果它们是用真实的SRID定义的,那么您可以查询sys.spatial\u reference\u系统。所以我似乎不得不回到我开始的地方,看看sys.spatial\u reference\u系统。另一种观点似乎支持在讨论几何场时,空间参考系统是相关的

这说明了如何确定数据实际使用的SRID-从dbo.MYTABLE中选择distinct SP_GEOMETRY.STSrid。然后可以将其与sys.spatial_reference_系统中的信息进行匹配尽管要确定sys.spatial_reference_系统中的哪个记录是匹配的需要做更多的工作,例如,当使用我们的数据时,从dbo.MYTABLE中选择distinct SP_GEOMETRY.STSrid返回28355,但该值不会出现在sys.spatical_reference_系统中-根据该值,该值实际上是投影的标识符。通过查看spatialreference.org返回的内容,权限详细信息权限[EPSG,4283]看起来像是提供了相应的SRID,以匹配sys.spatial\u reference\u系统中的记录。在我们的例子中,度量单位列为米


p.p.S.在决定我是否在上面的一些参考文献中发表评论之前,我很想听听自己的想法。

我一直认为几何类型更抽象——它只是一个二维坐标系。如果我们在位置1,4和5,2有两个点,你可以问它们之间的距离是多少,然后得到一个数字。但是询问结果是什么单位是没有意义的,因为这完全取决于当你说一个点在1,4时你在想什么单位,而不是满足于它在1000,4000我确实阅读了Microsoft关于空间数据类型的信息,因此我理解您对结果的看法,但文档说明,距离和面积的测量与坐标的测量单位相同,因此有一个测量单位。当用户在提醒我之前问我某个东西需要多近时,我无法回答500个单位,所以你看到了我的困境-我必须知道使用的是什么单位。度量单位有时用于从我能回忆起的转换为相同的单位高级代数。对于几何体字段,单位无关紧要,因为假定所有值都是相同的单位,因此不需要转换。我的问题的答案似乎是,我只需要查看原始数据集的单位,并确定这很可能取决于正在使用的空间数据集的类型。