我使用gps设备拍摄了四个点(坐标)。
第1点: - lat- 27.54798833 long- 80.16397166
第2点: - 纬度27.547766,长度80.16450166
第3点: - 纬度27.548131,长度80.164701
第4点: - ---
现在我想在oracle数据库中保存这些坐标,将其保存为多边形。
谢谢
答案 0 :(得分: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
)
)
)
/
这里有关于对象类型的不同标志的更多信息:http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_objrelschema.htm
需要注意的关键事项:
MDSYS.SDO_COORD_REF_SYS
st_isvalid()
以快速测试它是否有效。在将几何图形呈现给任何其他软件之前,应确保几何图形有效。答案 1 :(得分:0)
为存储多边形细节(PolygonId)的多边形创建一个表。
现在创建另一个表Coordinates,并为上面的PolygonID存储创建点locatins 如。
Polygoind Id Longitude Latitude
如果您的多边形具有n个数字或坐标,那么您也可以存储它。并且可以从坐标表中轻松获取详细信息。
答案 2 :(得分: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”坐标)实际上将坐标的排序指定为纬度/经度,但我知道没有使用除长/纬之外的任何其他任何实现。