gps 纬度和长度(带/不带点)

问题描述 投票:0回答:1

我是新来的,我尝试寻求帮助。我有一个很大的数据库,有 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行我花了很多时间呵呵。

oracle oracle-apex oracle-spatial
1个回答
0
投票

类似:

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 的倍数。

© www.soinside.com 2019 - 2024. All rights reserved.