如何按经度/纬度查询范围内的对象?(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,并且