如何按经度/纬度查询范围内的对象?(ArcGis sde.st_geometry,Oracle)

如何按经度/纬度查询范围内的对象?(ArcGis sde.st_geometry,Oracle),oracle,gps,arcgis,spatial-query,Oracle,Gps,Arcgis,Spatial Query,我有这样一个数据表: CREATE TABLE devices (id INTEGER PRIMARY KEY NOT NULL, shape SDE.ST_GEOMETRY) 对于给定的GPS位置(纬度、经度),我想查询50米范围内的所有对象。如何做到这一点 我在搜索了很多文档后非常沮丧,直到现在都没有结果 一个想法是使用Eris(开发ArcGis的公司)网站上的功能: sde.st_distance (g1 sde.st_geometry, g2 sde.st_geometry) 然而,

我有这样一个数据表:

CREATE TABLE devices (id INTEGER PRIMARY KEY NOT NULL, shape SDE.ST_GEOMETRY)
对于给定的GPS位置(纬度、经度),我想查询50米范围内的所有对象。如何做到这一点

我在搜索了很多文档后非常沮丧,直到现在都没有结果

一个想法是使用Eris(开发ArcGis的公司)网站上的功能:

sde.st_distance (g1 sde.st_geometry, g2 sde.st_geometry)
然而,返回值被描述为“双精度”,如何与GPS一起使用? 还有许多其他函数(例如Oracle内置函数)与我认为的不同类型(SDO_几何体)一起工作

另一个想法是创建一个ArcGis形状对象(sde.st_geometry),一个半径为50米的圆形对象,并使用sde.st_contains函数()。但是,如何创建这样的几何体对象

示例中的所有地理对象创建SQL(INSERT…)在我的Oracle DB上都失败,错误为“调用'ST_POINT'时参数的数量或类型错误”

我认为这应该是大多数基于GPS的应用程序的基本要求。 抱歉弄得一团糟

编辑: 我发现有处理地理数据的oracle函数,但不确定这是否适用于SDE.ST_GEOMETRY对象?

假设您可以使用SDO_几何体数据类型将device.shape数据放入表中,然后使用spatial操作符即可。以下查询将选择经纬度坐标-71.3033、44.2706范围内的所有设备

select * from devices 
where sdo_within_distance (devices.shape, sdo_geometry(2001,4326, 
sdo_point_type(-71.3033,44.2706,null),null,null),
'distance=50 unit=meter') = 'TRUE'

ST_GEOMETRY函数需要一些并且可以在oracle数据库服务器上运行,这些函数在您的实例中可用吗?如果没有理由使用ST_GEOMETRY数据类型,您可能会更幸运地使用本机SDO_GEOMETRY,并且