我有一个大约有 210 万个元组的表。其中有纬度和经度列。我正在尝试将其转换为地理类型(带有 SRID 的点)。
我编写的函数(程序)在我限制条目时工作正常(比如 : SELECT id,longitude,latitude FROM list_of_location limit 50)。
CREATE OR REPLACE FUNCTION convertlatlon() RETURNS VOID AS $$
DECLARE rec RECORD;
BEGIN
FOR rec IN SELECT id,longitude,latitude FROM list_of_location
LOOP
UPDATE list_of_location SET location= concat('SRID=4326;POINT(',rec.longitude,' ',rec.latitude,')') WHERE id=rec.id;
END LOOP;
END;
$$ LANGUAGE 'plpgsql' ;
Run Code Online (Sandbox Code Playgroud)
我想循环遍历用户定义数据类型(ESRI 版本)中 SHAPE/GEOMETRY 列中的顶点ST_GEOMETRY。我已在 GIS SE 帖子中发布了详细信息:Update sde.st_geometry M value tocumulative distance (geometric length)
我认为这通常会在存储过程中完成(可能与sde.ST_GEOMETRY函数ST_NumPointsand结合使用ST_PointN)。但是,我没有CREATE PROCEDURE权限,所以无法创建存储过程。
作为创建存储过程的替代方法,是否有一种方法可以使用 SQL 语句来循环遍历顶点?
Oracle 12c (12.1.0.2.0)
我正在考虑在实时 SQL Server 空间表上创建一个触发器,当用户执行以下任一操作时,该触发器将更新列:
不幸的是,我只能在创建新功能时更新列,或在更改几何列时更新列,但不能在一个触发器中同时更新这两者。
理想世界 - 属性Updated填充已创建或修改的特定功能的当前日期。
到目前为止,这是我所拥有的仅在创建新功能时才有效的方法:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER *[triggername]* ON *[table]*
AFTER INSERT,UPDATE
AS BEGIN
DECLARE @ID VARCHAR(8)
SELECT @ID = [ID] FROM *[table]*
UPDATE *[table]*
SET Updated = GETDATE()
WHERE [ID] = @ID
END
GO
Run Code Online (Sandbox Code Playgroud)
当几何体改变时这有效
CREATE TRIGGER [triggername] ON [table]
FOR INSERT, UPDATE
AS BEGIN
UPDATE [table]
SET [table].Updated = Getdate()
FROM [table]
INNER JOIN deleted d ON [table].id = d.id …Run Code Online (Sandbox Code Playgroud) 我有两点,我必须计算它们之间的差异。
我在 SQL Server 中使用以下查询。
SELECT geography::Point(27.185425, 88.124582, 4326)
.STDistance(geography::Point(27.1854258, 88.124500, 4326));
Run Code Online (Sandbox Code Playgroud)
它运行良好,结果是:
8.12599260290125
Run Code Online (Sandbox Code Playgroud)
现在,当我在 PostgreSQL 中运行以下查询时,同样的情况。
SELECT ST_Distance(ST_GeomFromText('POINT(27.185425 88.124582)',4326),
ST_GeomFromText('POINT(27.1854258 88.124500)', 4326));
Run Code Online (Sandbox Code Playgroud)
现在结果是:
8.20039023523232
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么计算两点之间的距离时结果存在差异?
我正在尝试对一些外部空间表执行查询,这比在普通空间表上运行的时间长几个数量级,因为没有使用索引。
索引似乎正在处理非空间查询。
这是应该工作的东西还是不受支持?
postgresql performance index spatial postgis query-performance
spatial ×6
postgresql ×4
postgis ×2
sql-server ×2
datatypes ×1
index ×1
oracle ×1
performance ×1
update ×1