我使用 gps 设备捕获了绘图的四个点(坐标)。
点 1:- lat- 27.54798833 long- 80.16397166
点 2:- lat 27.547766,long- 80.16450166
点 3:- lat 27.548131,long- 80.164701
点 4:- ---
现在我想将这些坐标保存在 oracle 数据库中,并将其保存为多边形。
谢谢
我使用 gps 设备捕获了绘图的四个点(坐标)。
点 1:- lat- 27.54798833 long- 80.16397166
点 2:- lat 27.547766,long- 80.16450166
点 3:- lat 27.548131,long- 80.164701
点 4:- ---
现在我想将这些坐标保存在 oracle 数据库中,并将其保存为多边形。
谢谢
如果您打算使用 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
需要注意的关键事项:
MDSYS.SDO_COORD_REF_SYS
st_isvalid()
来快速测试它是否有效。在将几何图形呈现给任何其他软件之前,您应该确保它们是有效的。对 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”坐标)实际上将坐标的顺序指定为纬度/经度,但我知道除了经度/纬度之外没有其他实现。
为存储多边形详细信息 (PolygonId) 的多边形创建一个表。
现在创建另一个表 Coordinates 并为上面的 PolygonID 存储点位置,例如。
Polygoind Id Longitude Latitude
有了这个,如果你的多边形有 n 个数字或坐标,你也可以存储它。细节可以很容易地从坐标表中获取。