我是新来的,我尝试寻求帮助。我有一个很大的数据库,有 80000 条 GPS 记录。
但是经纬度中有带点的 10000 (50.1234) 和不带点的 70000,例如 501234。
我还有一张带有空间搜索的地图,我还可以通过apex更新记录,当我更改gps数据时还有一个更新过程,因此当我更改纬度或经度时位置空间数据会更新。
所以现在地图上的空间数据(SDO_GEOMETRY)仅查看带点的行中的数据。
如何更改此设置以使所有数据都显示在地图上?当然我可以更新行手册,70000行我花了很多时间呵呵。
这是位置数据的更新过程:
更新sitetb_gps 设置位置 = sdo_geometry(2001,4326,sdo_point_type(经度,纬度,null),null,null) 其中纬度不为空并且 经度不为空并且 rowid = :P1061_ROWID; 提交;
如何更改此设置以使所有数据都显示在地图上?当然我可以更新行手册,70000行我花了很多时间呵呵。
类似:
UPDATE sitetb_gps
SET latitude = CASE
WHEN latitude <= -90 or latitude > 90
THEN latitude / 1000
ELSE latitude
END,
longitude = CASE
WHEN longitude <= -180 or longitude > 180
THEN longitude / 1000
ELSE longitude
END,
location = SDO_GEOMETRY(
2001,
4326,
SDO_POINT_TYPE(
CASE
WHEN longitude <= -180 or longitude > 180
THEN longitude / 1000
ELSE longitude
END,
CASE
WHEN latitude <= -90 or latitude > 90
THEN latitude / 1000
ELSE latitude
END,
NULL
),
NULL,
NULL
)
WHERE ((latitude <= -90 OR latitude > 90) AND longitude IS NOT NULL)
OR ((longtitude <= -180 OR longitude > 180) AND latitude IS NOT NULL);
假设您的值如果超出正常范围,则始终超出 1000 的倍数。