当前位置: 首页 > 知识库问答 >
问题:

几何列的SRID 0是什么?

白萧迟
2023-03-14

因此,我将几何列添加到空间表中,并使用一些msdn参考资料,最终将SRID指定为0,如下所示:

  update dbo.[geopoint] set GeomPoint = geometry::Point([Longitude], [Latitude], 0) 

但是,我认为这是一个错误,但是在必须更新列之前,0实际上是默认值= 4326吗?只要我在查询中将SRID指定为0,查询就可以工作,但是与我拥有的地理字段相比,我得到了奇怪的结果...SRID 0在sys.spatial_reference_systems中不存在,我无法挖掘出有关它的任何信息。任何帮助将不胜感激。

共有2个答案

诸经略
2023-03-14

SRID是一种考虑到您测量的距离不是在平坦的无限平面上,而是在椭圆形球体上的方法。它们对地理数据类型有意义,但对几何形状没有意义。因此,如果您正在进行地理计算(如您对“与我拥有的地理字段进行比较”的声明),请创建地理点而不是几何点。为了对任何地理空间数据进行计算(例如“找出从这一点到另一点的距离”),所有涉及的对象的SRID需要相同。

TL;DR:这个点在笛卡尔平面上吗?使用几何图形。点是地球仪上的吗?使用地理。

邬英武
2023-03-14

从技术上讲,SRID为0并不存在,它只是意味着没有SRID - 即,如果您忘记设置它,则为默认值。因此,从技术上讲,您仍然可以执行距离、交点和所有其他查询,只要两组几何图形的 SRID 都为 0。如果您有一个 SRID 为 0 的几何域,而另一个几何域的实际存在 SRID,则很可能会得到非常奇怪的结果。我记得有一次,在这种情况下,当没有从空间查询中获得任何结果时,SQL Server没有抱怨,只有0个结果(因为有价值的Postgis实际上会失败,并警告不匹配的SRID)。

在我看来,您应该始终显式设置几何图形(或地理图形,自然总是4326)的SRID,因为这不仅可以防止奇怪的查询结果,而且意味着您可以从一个坐标系转换到另一个坐标系统。能够动态地从纬度/经度(4326)转换为球面墨卡托(3857),如谷歌地图/必应中使用的,以米为单位,或一些局部坐标系,如27700,英国国家网格,也以米为单元,可能非常有用。据我所知,SQL Server不支持从一个SRID到另一个SRD的转换,但由于空间类型本质上是CLR类型,因此如果需要,可以使用.NET库,请参见将几何体从一个SR ID转换/投影到另一SRID。

如果您决定更改几何图形,可以执行以下操作:

UPDATE your_table SET newGeom = geometry::STGeomFromWKB(oldGeom.STAsBinary(), SRID);

这将创建一个新列或就地完成它:

UPDATE geom SET geom.STSrid=4326;

其中 4326 只是一个示例 SRID。

http://spatialreference.org/有一个很好的SRID参考,尽管这与您在sys.spatial_reference_systems中找到的信息基本相同。

 类似资料:
  • 问题内容: 因此,我向空间表中添加了几何列,并使用了某些msdn引用,最终将SRID指定为0,如下所示: 但是,我认为这是一个错误,但是在必须更新列之前,0实际是默认值= 4326吗?只要我在查询上将SRID指定为0,该查询就可以使用,但是与我所拥有的地理位置字段相比,我得到的结果很奇怪… sys.spatial_reference_systems中不存在SRID 0,并且我无法搜集有关的任何信息

  • 问题内容: 我的投诉 目前,我在Tkinter GUI之前比“以前”更深入地研究,并且我发现几何图形管理器不足有几个原因: 这些图基于其中最大的窗口小部件-这种相对性会导致不准确。 在Windows 7中,在Python 2.7.3上,该程序似乎没有理会我的行号,而是倾向于使用小部件的顺序。 我的密码 我目前正在使用一个 非常 基本的文本编辑器,并且希望在框架顶部具有多个按钮。我一直无法执行此操作

  • 队列,和 栈一样,也是一种对数据的"存"和"取"有严格要求的 线性存储结构。 与栈结构不同的是, 队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示: 图 1 队列存储结构 通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。 不仅如此, 队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素

  • POSTGIS=“2.5.4” [扩展] PGSQL=“120” GEOS=“3.8.1-CAPI-1.13.3” PROJ=“Rel. 6.3.2, May 1st, 2020” GDAL=“GDAL 3.0.4, 2020/01/28 发布” LIBXML=“2.9.7” LIBJSON=“0.13.1” LIBPROTOBUF=“1.3.0” RASTER Java Postgis Depe

  • 队列是项的有序结合,其中添加新项的一端称为队尾,移除项的一端称为队首。当一个元素从队尾进入队列时,一直向队首移动,直到它成为下一个需要移除的元素为止。 最近添加的元素必须在队尾等待。集合中存活时间最长的元素在队首,这种排序成为 FIFO,先进先出,也被成为先到先得。 队列的最简单的例子是我们平时不时会参与的列。排队等待电影,在杂货店的收营台等待,在自助餐厅排队等待(这样我们可以弹出托盘栈)。行为良

  • 什么是Laravel系列?PHP数组和Laravel集合之间有什么区别? 集合似乎与数组非常相似。例如,通过方法检索的结果是数据的集合。但是当我们想将其用作数组时,我们必须使用toArray()方法。为什么啊?