如何在oracle中从sdo_geometry获取lat和long
发布时间:2020-12-12 13:10:56 所属栏目:百科 来源:网络整理
导读:我怎样才能从oracle中获得拉特和长点? 喜欢这个: MDSYS.SDO_GEOMETRY(2001,4326,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(51.702814,32.624736)) 您显示的符号不是表示单个2D或3D点的最佳符号.编码这些点的常用且最有效的方法是:
我怎样才能从oracle中获得拉特和长点?
喜欢这个: MDSYS.SDO_GEOMETRY(2001,4326,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(51.702814,32.624736))您显示的符号不是表示单个2D或3D点的最佳符号.编码这些点的常用且最有效的方法是: SDO_GEOMETRY(2001,SDO_POINT_TYPE(51.702814,32.624736,NULL),NULL) 我见过的所有GIS工具都使用这种表示法.你展示的那个也是有效的 – 它只是使用更多的存储空间.但这两个符号在功能上完全相同. 使用紧凑符号,获得单个坐标是微不足道的.例如,考虑到US_CITIES在上面的紧凑符号中包含点: select c.city,c.location.sdo_point.x longitude,c.location.sdo_point.y latitude from us_cities c where state_abrv='CO'; CITY LONGITUDE LATITUDE ------------------------------------------ ---------- ---------- Aurora -104.72977 39.712267 Lakewood -105.11356 39.6952 Denver -104.87266 39.768035 Colorado Springs -104.7599 38.8632 4 rows selected. 从您使用的更复杂的基于数组的表示法中获得相同的结果会更复杂.您可以使用SDO_UTIL.GETVERTICES方法.例如,假设US_CITIES_A包含相同的点,但在基于数组的表示法中: select city,t.x longitude,t.y latitude from us_cities_a,table (sdo_util.getvertices(location)) t where state_abrv = 'CO'; CITY LONGITUDE LATITUDE ------------------------------------------ ---------- ---------- Aurora -104.72977 39.712267 Lakewood -105.11356 39.6952 Denver -104.87266 39.768035 Colorado Springs -104.7599 38.8632 4 rows selected. 我实际上发现更简单的另一种方法是只定义几个简单的函数来从数组中提取值: create or replace function get_x (g sdo_geometry) return number is begin return g.sdo_ordinates(1); end; / 和 create or replace function get_y (g sdo_geometry) return number is begin return g.sdo_ordinates(2); end; / 然后使用这些函数可以实现更简单的语法: select city,get_x(location) longitude,get_y(location) latitude from us_cities_a where state_abrv = 'CO'; CITY LONGITUDE LATITUDE ------------------------------------------ ---------- ---------- Aurora -104.72977 39.712267 Lakewood -105.11356 39.6952 Denver -104.87266 39.768035 Colorado Springs -104.7599 38.8632 4 rows selected. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFo
- swift – 如何将unmanaged转换为NSData?
- 正则表达式匹配字符串中是否的整数价格和小数价格
- c# – 将委托作为类型参数传递并使用它会引发错误CS0314
- 硒鼓ruby脚本完成后,如何打开浏览器
- 容器Group的属性clipAndEnableScrolling和useVirtualLayout
- c# – WPF Caliburn.Micro和TabControl与UserControls问题
- MVC2与MVC3的Ajax无刷新提交
- org.xmlpull.v1.XmlPullParserException: PI must not star
- Swift Instance成员不能用于类型