3

我使用 gps 设备捕获了绘图的四个点(坐标)。

点 1:- lat- 27.54798833 long- 80.16397166
点 2:- lat 27.547766,long- 80.16450166
点 3:- lat 27.548131,long- 80.164701
点 4:- ---

现在我想将这些坐标保存在 oracle 数据库中,并将其保存为多边形。

谢谢

4

3 回答 3

6

如果您打算使用 Oracle Spatial 存储或处理多边形,则需要将数据存储为SDO_GEOMETRY对象。这是一个简单的例子:

CREATE TABLE my_polygons (
  id INTEGER
, polygon sdo_geometry
)
/

INSERT INTO my_polygons (
  id
, polygon
)
VALUES (
  1
, sdo_geometry (
    2003 -- 2D Polygon
  , 4326 -- WGS84, the typical GPS coordinate system
  , NULL -- sdo_point_type, should be NULL if sdo_ordinate_array specified
  , sdo_elem_info_array(
      1    -- First ordinate position within ordinate array
    , 1003 -- Exterior polygon
    , 1    -- All polygon points are specified in the ordinate array
    )
  , sdo_ordinate_array(
      80.16397166, 27.54798833,
    , 80.16450166, 27.547766,
    , 80.164701, 27.548131,
    , 80.16397166, 27.54798833
    )
  )
)
/

这里有关于对象类型的不同标志的更多信息:http: //docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_objrelschema.htm

需要注意的关键事项:

  1. 你的源坐标系是什么?您说 GPS - 是 WGS84(Oracle SRID = 4326)吗?您的 GPS 设备会告诉您。您可以在表中为此查找 Oracle SRIDMDSYS.SDO_COORD_REF_SYS
  2. 确保您的坐标完成一个完整的多边形(即循环回到起点)。
  3. 多边形外部边界的坐标应按逆时针方向排列。
  4. 您可以在几何对象上调用该方法st_isvalid()来快速测试它是否有效。在将几何图形呈现给任何其他软件之前,您应该确保它们是有效的。
于 2013-08-13T21:57:29.960 回答
0

对 Ben 的好回答稍作修正……

Oracle Spatial(与几乎所有其他几何编码系统一样)以 X、Y 顺序存储坐标,这意味着大地(纬度/经度)坐标必须存储为 long、lat - 而不是 lat、long。

所以只需将答案更改为:

, sdo_ordinate_array( 80.16397166, 27.54798833 , 80.16450166, 27.547766 , 80.164701, 27.548131 , 80.16397166, 27.54798833 )

对于纯粹主义者:EPSG 坐标系 4326(WGS84 又名“GPS”坐标)实际上将坐标的顺序指定为纬度/经度,但我知道除了经度/纬度之外没有其他实现。

于 2013-10-18T14:07:43.813 回答
0

为存储多边形详细信息 (PolygonId) 的多边形创建一个表。

现在创建另一个表 Coordinates 并为上面的 PolygonID 存储点位置,例如。

 Polygoind Id     Longitude          Latitude

有了这个,如果你的多边形有 n 个数字或坐标,你也可以存储它。细节可以很容易地从坐标表中获取。

于 2013-08-12T05:21:54.797 回答