几何列:STGeomFromText和SRID(什么是SRID?)

Chr*_*sma 25 sql-server geometry sql-server-2008

我正在使用SQL Server 2008中的新地理列和STGeomFromText函数.这是我的代码(与AdventureWorks2008一起使用)

DECLARE @region geography;
set @region = geography::STGeomFromText('POLYGON((
        -80.0 50.0, -90.0 50.0,
        -90.0 25.0, -80.0 25.0,
        -80.0 50.0))', 4326);

SELECT @region;
Run Code Online (Sandbox Code Playgroud)

我的问题是关于代码中的4326.它应该是一个空间参考ID.当我去MSDN时,它没有太多.如果我将值更改为56,我会收到一个错误,告诉我该值必须在sys.spatial_reference_systems表中.

您可以通过执行以下命令查看该表:

select * from sys.spatial_reference_systems 
Run Code Online (Sandbox Code Playgroud)

该表中有一个well_known_text列,但它并没有告诉我多少.4326的值是:

GEOGCS["WGS 84", DATUM["World Geodetic System 1984", ELLIPSOID["WGS 84", 6378137, 298.257223563]], PRIMEM["Greenwich", 0], UNIT["Degree", 0.0174532925199433]]
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这个谜吗?什么是SRID?

Chr*_*sma 19

所以我昨天最后和一位前军事人员谈过,他是一名雷达/测绘专家.基本上,他确切知道这个数字(4326)是什么,它来自哪里,以及它为什么存在.

它是计算地理的行业标准.问题是地球不是一个完美的球体(它在中间凸出),SRID 4326就是这个原因.

正如我所说,表sys.spatial_reference_systems列出了所有代码及其内容.但简短的版本是你真的只会使用4326,除非你有一个非常具体的理由使用不同的东西.

  • 我不同意你的说法“除非你有非常具体的原因,否则你实际上只会使用 4326”。每当您处理小区域(想想州或县而不是世界)中的数据时,您都将使用本地投影坐标系。这些系统旨在更好地在 2D 平面(而不是 3D 地球仪)上表示地球表面。通常,您最终会以 WGS84 以外的投影方式获取数据,并且需要进行转换。如果您只处理 GPS 点,那么您假设 99% 的情况下数据都在 4326 中是正确的。 (3认同)

Ale*_*ort 17

有很多系统来映射地球.例如,您想要映射美国的某个州.您可以将最东南点设置为0,0并根据此点映射所有其他空间坐标.另一方面,您可能希望映射遍布地图的一些空间数据.无论如何,你必须选择一些点作为0,0.此外,您必须选择某种测量单位:英里/公里/度/其他一些更适合您的神奇单位.多年来很多这样的系统在哪里发展起来.每个都有自己的零点,它自己的坐标,它自己关于地球是否平坦的规则.SRID或SRS是此类系统的ID.使用此ID,您可以将在一个系统中表示的点映射到另一个系统,尽管有时它涉及一些非常复杂的数学.

大约4326 SRID.它还称为"WGS 84"(http://en.wikipedia.org/wiki/World_Geodetic_System)系统.它是表示球形(非平坦)地球上的点的最常见系统.它使用度,分,秒符号,其x和y坐标通常称为纬度和经度.

最常用的非球面地球投影称为UTM.你可以在这里阅读:http://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system

无论如何,只要您不进行从一个系统到另一个系统的任何空间转换,您就不会真正关心数据使用的系统.


Mla*_*dic 16

SRID =空间参考标识符

坐标必须使用相同的SRID才能进行比较.否则你最终会比较千米和里程.或类似的东西.