在Oracle数据库中保存多边形

Rav*_*avi 3 sql spatial oracle10g oracle-spatial

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

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

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

谢谢

Ben*_*Ben 5

如果打算使用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
    )
  )
)
/
Run Code Online (Sandbox Code Playgroud)

这里有关于对象类型的不同标志的更多信息: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()在几何对象上调用该方法以快速测试该方法是否有效。在将几何图形呈现给任何其他软件之前,应确保其有效。