所有由admin发布的文章

健康快乐

Warning: phpinfo() [function.phpinfo]: It is not s

PHP Warning: date() [function.date]: It is not safe to rely on the system’s timezone2011-08-18 22:05

 

在用PHP5.3以上的PHP版本时,只要是涉及时间的会报一个

Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing’ for ‘CST/8.0/no DST’ instead in /usr/local/apache/htdocs/index.php on line 2

实际上,从 PHP 5.1.0 ,当对使用date()等函数时,如果timezone设置不正确,在每一次调用时间函数时,都会产生E_NOTICE 或者 E_WARNING 信息。而又在php5.1.0中,date.timezone这个选项,默认情况下是关闭的,无论用什么php命令都是格林威治标准时间,但是PHP5.3中好像如果没有设置也会强行抛出了这个错误的,解决此问题,只要本地化一下,就行了。

以下是三种方法(任选一种都行):

一、在页头使用date_default_timezone_set()设置 date_default_timezone_set(‘PRC’); //东八时区 echo date(‘Y-m-d H:i:s’);

 

二、在页头使用 ini_set(‘date.timezone’,’Asia/Shanghai’);三、修改php.ini。打开php5.ini查找date.timezone 去掉前面的分号修改成为:date.timezone ="PRC" PRC注意加上双引号,要不还会出错!

重启http服务(如apache2或iis等)即可。  

XXX可以任意正确的值。对于我们国内来说:可以为以下值:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北),还有新加坡:Asia/Singapore,当然PRC也行。

Oracle Spatial 简介 学习 入门

Oracle Spatial 学习 入门

学了一段时间的Oracle spatial,把书摘下来吧,接下来继续…………

目录

第i部分 概述.

第1章 空间信息管理 3

1.1 不同行业中使用空间信息 5

1.2 空间数据来源 6

1.3 管理和分析空间数据 7

1.3.1 在数据库中存储空间数据 10

1.3.2 空间分析 13

1.4 oracle spatial的优点 14

1.5 本章小结 17

1.6 参考文献 17

第2章 oracle spatial概述 19

2.1 技术和体系结构概述 19

2.2 oracle spatial入门 21

2.2.1 数据模型:存储空间数据 22

2.2.2 位置使能 22

2.2.3 查询和分析 25

2.2.4 可视化空间数据 28

2.2.5 高级空间引擎 29

2.3 oracle spatial技术产品 30

2.3.1 locator 31

.2.3.2 spatial选项 33

2.4 在oracle spatial安装中期望什么 34

2.4.1 在数据库中安装oracle spatial 34

2.4.2 升级 35

2.4.3 理解spatial安装 36

2.4.4 检查spatial安装的版本 36

2.5 本章小结 37

第3章 location-enabling你的应用程序 39

3.1 向表中添加位置信息 40

3.1.1 应用专用数据 40

3.1.2 地理数据 44

3.2 空间表的元数据 47

3.3 为应用程序填充空间元数据 52

3.4 本章小结 53

第ii部分 基础空间

第4章 sdo_geometry数据类型 57

4.1 oracle中空间几何体的类型 58

4.1.1 点 58

4.1.2 线串 58

4.1.3 多边形和面 59

4.1.4 立方体 59

4.1.5 集合 60

4.1.6 sdo_geometry的逻辑实现 60

4.1.7 sql/mm 和ogc上的空间数据 61

4.2 sdo_geometry类型、属性和值 62

4.2.1 sdo_gtype属性 63

4.2.2 sdo_srid属性 65

4.2.3 sdo_point属性 74

4.2.4 sdo_elem_info和sdo_ordinates属性 76

4.3 简单二维几何体的例子 79

4.3.1 点 79

4.3.2 通过直线连接的线串 81

4.3.3 通过弧连接的线串 82

4.3.4 多边形:边界通过直线连接的环 84

4.3.5 多边形:边界通过弧连接的环 85

4.3.6 矩形 85

4.3.7 圆 87

4.4 复杂二维几何体的例子 88

4.4.1 构建复杂几何体 88

4.4.2 复合元素的sdo_elem_info 89

4.4.3 带void多边形元素的sdo_elem_info 90

4.4.4 复合线串的例子 91

4.4.5 复合多边形的例子 92

4.4.6 带void的多边形 93

4.4.7 集合 94

4.5 三维几何体的例子 99

4.5.1 三维的点、线串和多边形 100

4.5.2 复合面 106

4.5.3 简单立方体 109

4.5.4 复合立方体 115

4.5.5 集合 116

4.6 本章小结 118

第5章 空间数据的加载、传输和验证 121

5.1 向sdo_geometry列中插入数据 122

5.2 加载和转换空间数据 123

5.2.1 用sql*loader从文本文件加载 123

5.2.2 在oracle数据库之间传输空间数据 126

5.2.3 从外部格式导入 129

5.2.4 在sdo_geometry和wkt/wkb之间转换 130

5.2.5 在gml和sdo_geometry之间转换数据 131

5.3 拉伸二维几何体为三维几何体 136

5.4 验证空间数据 139

5.4.1 验证函数 139

5.4.2 验证标准 141

5.4.3 复合立方体 147

5.4.4 集合 148

5.5 调试空间数据 149

5.5.1 remove_duplicate_vertices 149

5.5.2 extract 150

5.5.3 append 153

5.5.4 getnumelem、getnumvertices和getvertices 155

5.5.5 extract3d 155

5.5.6 其他函数 157

5.6 本章小结 157

第6章 地理编码 159

6.1 什么是地理编码 160

6.2 oracle地理编码的体系结构 161

6.2.1 解析输入地址 162

6.2.2 地址搜索 162

6.2.3 计算空间坐标 163

6.3 为地理编码设置参考数据 164

6.3.1 参数表 164

6.3.2 数据表 165

6.4 地理编码函数的使用 166

6.4.1 geo_as_geometry 167

6.4.2 geocode 169

6.4.3 geocode_all 185

6.5 用结构化的地址进行地理编码 192

6.5.1 geocode_addr 192

6.5.2 geocode_addr_all 194

6.6 反地理编码 194

6.7 商业数据的地理编码 197

6.7.1 添加空间数据列 197

6.7.2 对地址进行地理编码:简单的方法 197

6.7.3 地址验证和纠正 198

6.7.4 自动地理编码 204

6.8 地理编码服务器 208

6.8.1 体系结构 208

6.8.2 安装和配置 209

6.8.3 地理编码的使用:xml查询和响应 212

6.9 本章小结 218

第7章 在应用程序中操作sdo_geometry 219

7.1 用pl/sql操作几何体 221

7.1.1 varray操作入门 223

7.1.2 sdo_geometry对象的读写 228

7.1.3 创建新的几何体 228

7.1.4 从几何体中提取信息 230

7.1.5 修改已有的几何体 232

7.2 在java中操作几何体 236

7.2.1 使用jgeometry类 237

7.2.2 使用3d几何体:j3d_geometry类 242

7.2.3 从3d几何体中提取元素:elementextractor类 243

7.2.4 使用标准的格式:wkt、wkb和gml 246

7.2.5 使用esri shapefile 249

7.3 本章小结 254

第iii部分 空间与网络分析

第8章 空间索引和操作符 257

8.1 空间索引 258

8.1.1 建立索引之前为空间层插入元数据 260

8.1.2 创建空间索引 261

8.1.3 空间索引概念 261

8.2 空间索引参数 264

8.2.1 user_sdo_index_metada视图 266

8.2.2 空间索引大小需求 267

8.3 空间操作符 268

8.3.1 空间操作符的语法 268

8.3.2 空间操作符的语义 269

8.3.3 空间操作符的计算 269

8.4 深入理解空间操作符 270

8.4.1 sdo_within_distance操作符 271

8.4.2 sdo_nn操作符 276

8.4.3 用于空间相互作用(关系)的操作符 283

8.4.4 空间操作符的hint 297

8.5 空间索引的高级特性 303

8.5.1 基于函数的空间索引 303

8.5.2 本地分区空间索引 306

8.5.3 并行索引 310

8.5.4 在线索引重建 310

8.5.5 空间连接 312

8.5.6 三维分析 315

8.6 本章小结 320

第9章 几何处理函数 321

9.1 缓冲函数 323

9.2 关系分析函数 325

9.2.1 sdo_distance 326

9.2.2 sdo_closest_points 329

9.2.3 relate 331

9.3 几何组合函数 337

9.3.1 sdo_intersection 338

9.3.2 sdo_union 339

9.3.3 sdo_difference 340

9.3.4 sdo_xor 342

9.4 几何分析函数 343

9.4.1 面积、长度和体积函数 343

9.4.2 mbr 函数 348

9.4.3 各种几何分析函数 350

9.5 聚合函数 354

9.5.1 聚合mbr函数 354

9.5.2 其他聚合函数 355

9.6 本章小结 360

第10章 网络建模 361

10.1 网络建模通用概念 362

10.1.1 网络实例 364

10.1.2 oracle网络数据模型.. 365

10.2 数据结构:网络表 366

10.2.1 结点表 367

10.2.2 边表 368

10.2.3 路径表 368

10.2.4 路径连接表 369

10.2.5 网络元数据 369

10.3 网络定义 371

10.3.1 “自动”网络定义 371

10.3.2 “手动”网络定义 373

10.3.3 在同一表中定义多个网络 375

10.3.4 删除网络 379

10.3.5 在网络表上创建空间索引 380

10.3.6 获取网络信息 380

10.3.7 验证网络连通性 382

10.3.8 网络实例 383

10.4 使用java api分析和管理网络 386

10.4.1 分析网络:networkmanager类 387

10.4.2 限制搜索空间:systemconstraint类 399

10.4.3 高级分析:网络约束 401

10.4.4 网络结构:network、node、link和path类 407

10.4.5 创建网络:networkfactory类 409

10.5 调试网络结构 412

10.6 使用pl/sql api分析网络 413

10.6.1 使用内存对象 415

10.6.2 分析网络 417

10.6.3 创建和更新网络 420

10.6.4 使用网络约束 423

10.7 网络编辑器 430

10.7.1 启动编辑器 430

10.7.2 使用加载网络 431

10.8 本章小结 434

第11章 路由引擎 435

11.1 体系架构 436

11.2 安装和配置 438

11.3 数据结构 440

11.4 实例数据:旧金山的街道 442

11.5 分区 444

11.6 使用路由器:xml查询和响应 446

11.6.1 路由请求 448

11.6.2 路由选项 449

11.6.3 预先对起始位置和终止位置进行地理编码 450

11.6.4 地理起始位置和终止位置 450

11.6.5 批路由 451

11.7 本章小结 453

第iv部分 可视化

第12章 使用mapviewer定义地图 457

12.1 在location-enabled应用中使用地图的原因 458

12.2 mapviewer和oracle地图概述 460

12.2.1 oracle mapviewer 460

12.2.2 oracle maps 462

12.3 前期准备 463

12.3.1 加载样本数据 465

12.3.2 location-enable应用数据 465

12.3.3 加载地理数据 465

12.3.4 为mapviewer加载地图、主题、样式和地图缓存定义 465

12.3.5 定义数据源 466

12.3.6 安装示例应用程序 467

12.4 配置mapviewer 468

12.4.1 使用管理控制台 469

12.4.2 配置参数 472

12.5 定义地图 476

12.5.1 map builder的使用 477

12.5.2 样式的使用 480

12.5.3 主题的使用 491

12.5.4 地图的使用 500

12.6 定义地图缓存 506

12.6.1 user_sdo_cached_maps视图 506

12.6.2 使用mapviewer控制台来管理缓存 507

12.6.3 创建新的地图缓存 508

12.6.4 使用sql创建地图缓存 510

12.6.5 缓存数据格式 513

12.6.6 导出缓存定义 513

12.6.7 清除和刷新缓存内容 514

12.6.8 使用外部数据源 514

12.7 本章小结 518

第13章 在应用程序中使用地图 519

13.1 mapviewer的apis概述 519

13.1.1 xml、java、jsps和pl/sql 520

13.1.2 javascript和ajax:oracle地图 521

13.1.3 选择api 522

13.2 剖析地图请求 523

13.2.1 什么(what):应当展示在地图上的信息 523

13.2.2 哪里(where):地图覆盖的地理区域 524

13.2.3 怎样做(how):生成地图的格式和大小 525

13.3 与地图进行交互 525

13.3.1 控制的详细程度:放大和缩小 525

13.3.2 控制地图上显示的区域:平移和重新计算中心 526

13.3.3 特性的选择:识别 526

13.3.4 选择要在地图上显示的信息:层控制 527

13.4 oracle地图:javascript api 527

13.4.1 显示地图 528

13.4.2 与地图交互:缩放和平移 530

13.4.3 添加地图修饰 532

13.4.4 添加通用修饰 532

13.4.5 创建概况地图 533

13.4.6 矩形(选取框)缩放 534

13.4.7 添加动态信息:基于主题的foi 536

13.4.8 添加个体foi 540

13.4.9 控制样式 541

13.4.10 捕获用户输入:工具和选择器 542

13.4.11 事件响应 545

13.5 使用java api 547

13.5.1 地图请求 547

13.5.2 缩放和平移 550

13.5.3 主题控制 553

13.5.4 样式控制 557

13.5.5 识别和查询 557

13.5.6 动态特性 560

13.5.7 图例 560

13.5.8 地图修饰 562

13.5.9 使用地图缓存 563

13.5.10 发现数据源、地图、主题 564

13.5.11 使用jsp标签 564

13.6 使用xml api 569

13.6.1 简单的地图请求 570

13.6.2 为底图添加主题 572

13.6.3 使用多个数据源 573

13.6.4 从主题构建地图 574

13.6.5 动态主题 575

13.6.6 动态特性 578

13.6.7 图例 581

13.6.8 xml地图响应 582

13.7 使用pl/sql api 583

13.7.1 安装api 584

13.7.2 一个简单的示例 584

13.8 使用管理性api 585

13.8.1 浏览地图定义 586

13.8.2 管理mapviewer服务器 588

13.8.3 重启mapviewer 591

13.9 网络地图服务(ogc wms)接口 591

13.9.1 getcapabilities请求 591

13.9.2 getmap请求 593

13.9.3 getfeatureinfo请求 595

13.9.4 空间参照系统(srs)映射 597

13.10 本章小结 597

第v部分 应用中的空间特性

第14章 应用程序示例 601

14.1 数据准备和安装 602

14.1.1 加载地理数据 602

14.1.2 location-enabling应用程序数据 602

14.1.3 加载地图、主题、样式并为mapviewer定义地图缓存器 603

14.2 应用程序安装 603

14.3 javascript应用程序 604

14.3.1 应用程序纵览 604

14.3.2 底层实现 608

14.4 java(jsp)应用程序 624

14.4.1 应用程序纵览 624

14.4.2 底层实现 631

14.5 本章小结 644

第15章 案例研究 645

15.1 案例研究概述 645

15.2 用于管理伦敦公共汽车网络的空间信息 646

15.2.1 busnet 647

15.2.2 busnet中的空间数据和oracle spatial 648

15.2.3 busnet中空间数据的用户界面 650

15.2.4 busnet总结 652

15.3 p-info:一个供警察部门使用的移动应用程序 653

15.3.1 p-info的功能 654

15.3.2 p-info 体系结构 655

15.3.3 在p-info中使用oracle spatial 657

15.3.4 p-info的可度量的附加值 659

15.4 risk repository for hazardous substances系统 660

15.4.1 rrgs技术 662

15.4.2 在rrgs中使用oracle spatial 663

15.4.3 从危险品到风险管理 665

15.5 美国地质勘探局全国土地覆盖的可视化和分析工具 666

15.5.1 美国地质勘探局的可视化和分析工具的体系结构 669

15.5.2 美国地质勘探局可视化和分析工具中的oracle spatial 670

15.5.3 usgs可视化和分析工具带来的好处 673

15.6 美国国防部的militaryhomefront lbs系统 673

15.6.1 militaryhomefrontlbs的体系结构 675

15.6.2 militaryhomefront中的oracle spatial 677

15.6.3 移动militaryinstallations 681

15.6.4 militaryhomefrontlbs的好处 683

15.7 本章小结 683

第16章 提示、常见失误和常见错误 685

16.1 提示 685

16.1.1 数据建模和数据装载 685

16.1.2 空间查询操作符的性能 688

16.1.3 其他空间处理函数的性能 692

16.1.4 插入、删除、更新的性能 694

16.1.5 关于空间索引扩展性和可操纵性的最佳实践 695

16.2 常见失误 701

16.2.1 测量数据的范围、经纬度和容差 701

16.2.2 sdo_geometry的null值 702

16.2.3 使用geocode或geocode_all 702

16.2.4 在create index中指定“indextype ismdsys.spatial_index” 702

16.2.5 始终在where子句中使用空间操作符 702

16.2.6 没有有效的空间索引时请使用空间函数 702

16.2.7 不要移动、导入或者复制mdrt表 704

16.2.8 网络元数据 704

16.2.9 地图元数据 705

16.3 常见错误 705

16.3.1 ora-13226:没有空间索引接口将不被支持 705

16.3.2 ora-13203:读取user_sdo_geom_metadata视图失败 705

16.3.3 ora-13365:层的srid与几何体的srid不符 705

16.3.4 ora-13223:sdo_geom_metadata 中(table_name, column_name)的重复项 706

16.3.5 ora-13249,ora-02289:不能撤销序列/表 706

16.3.6 ora-13249:sdo_index_metadata表有重复条目 706

16.3.7 ora-13207:不正确地使用(operator-name)操作符 707

16.3.8 ora-13000:维数超出范围 707

16.3.9 ora-00904:…无效的标识符 707

16.3.10 ora-00939:函数参数过多 707

16.3.11 ora-13030:sdo_geometry的维数无效或者ora-13364:层维数与几何体维数不符 708

16.4 本章小结 710

第vi部分 附录

附录a 其他一些空间分析函数 713

附录b 线性参考 725

附录c oracle数据库中的拓扑数据模型 737

附录d oracle中的栅格数据存储 751

附录e 在oracle中使用点云和tin进行三维建模… 769

内容简介
本书涵盖了Oracle数据库中空间信息管理的所有内容。尤其是:
·介绍了空间信息管理的主要概念以及它们怎样与数据库概念和工具相关联。
·描述了Oracle Spatial所提供的用于存储、检索、分析和可视化空间信息的工具。
·介绍了例子、应用和案例研究,帮助你很方便地将上述概念和工具结合到你的应用中。
虽然大多数概念上的讨论一般都具有有效性,但本书是介绍空间信息管理——Oracle Database 11g产品的最新版本。
书中各章节着重介绍了Oracle Spatial技术在电子商务中的应用。与这些应用相关的所有特性都将进行详细的讨论,并附有本书提供的基于样本数据的可运行例子。附录涵盖了与高度专业化的GIS应用相关的题目,并为每个题目提供了一个总体的概述,要想了解细节,请参考Oracle文档。
以下是本书每章所包含的主要内容:
·安装:前言之后的下一节,将描述如何安装Oracle Spatial和运行本书中代码例子所需的实例模式(schema)。然后描述特定的电子商务应用以及本书许多例子都用到的相关数据集。所使用的数据包括地图数据(例如,州的边界、河流、建设区),地理编码数据(例如,用x、y坐标表示的地址列表),网络数据(例如,用于计算旅行距离和提供导航说明的公路网络)和特定应用中的数据(包含客户、商店/分店和竞争对手表的集合)。这些数据涵盖了美国的部分地区,如华盛顿、旧金山,以及使用典型的美国术语和符号(如县(county)、州际公路(interstate)等)。但这并不失一般性——同样的例子可用于任何类似的数据集。
·第1章:空间信息管理:本章描述了如何在不同的行业部门中使用空间信息以及概述了管理空间/位置信息所需的典型功能。我们用一个选址例子来阐述空间信息管理的不同方面:用合适的类型表示和存储空间数据以及对存储的空间数据的分析功能。然后讨论使空间信息管理成为可能的系统,比如,GIS以及它的演化版本。最后介绍使用Oracle Spatial进行空间管理的好处。
·第2章:Oracle Spatial概述:Oracle Spatial技术套件使得Oracle中的空间信息管理成为可能。这一章包括该套件的概述、架构以及功能。概述中包含了对Oracle Spatial不同特性的简明描述,包括使用SDO_GEOMETRY进行存储、使用空间操作符进行分析以及使用Oracle MapViewer进行可视化。我们也阐述了这个功能是如何被产品化为Oracle不同版本中的组件。最后,我们介绍了典型的Oracle Spatial安装过程。
·第3章:Location-Enabling你的应用程序:在这一章中,我们考虑怎样用位置信息扩大现有的应用表。为此,我们介绍了一个在本书其他部分的例子中也用到的电子商务应用。还描述了在Oracle表中存储地理数据时需考虑的几种设计选择。Location-enabling一个应用程序需要对元数据表进行适当的填充以便在空间表上进行空间处理。本章最后介绍了填充元数据的细节。
·第4章:SDO_GEOMETRY数据类型:本章着重介绍如何使用Oracle中的SDO_ GEOMETRY数据类型来对位置信息进行存储和建模。这个类型能存储各种各样的空间数据类型,如点、线串、多边形、面和立方体等几何体。我们详细介绍了SDO_GEOMETRY的结构以及如何用它的不同属性和值来存储不同类型的几何体数据。然后我们展示了怎样通过为几何体构建SDO_GEOMETRY对象,来对道路、地产边界和城市建筑物进行建模。

.·第5章:空间数据的加载、传输和验证:在这一章中,我们描述了填充含有SDO_ GEOMETRY列的Oracle表的不同方法。这些表可能是电子商务应用中的一部分,或是CAD/CAM、GIS、GPS、无线或者远程信息处理应用中的表。我们解释了怎样使用Oracle Import工具导入本书中的数据。也描述了其他的一些用于在Oracle数据库和/或其他格式之间传输数据的工具、函数/程序。最后,我们介绍了怎样验证已载入的SDO_GEOMETRY对象和如何更正一些无效的对象。

·第6章:地理编码:本章涵盖了Oracle Spatial中地理编码器的功能。首先我们通过介绍地理编码概念和地理编码过程来理解从地址到Oracle Spatial对象的转化。然后我们讨论如何建立一个数据目录使得你的应用程序可以进行地理编码。该目录用于对一个指定的地址推断和确定其位置。最后,通过使用Oracle中地理编码器的不同函数或API,介绍了如何将位置列添加到应用数据中。

·第7章:在应用程序中操作SDO_GEOMETRY:高级应用程序开发人员经常需要在他们的应用程序中访问和操作空间对象。本章介绍如何在程序语言,如PL/SQL和Java中操作SDO_GEOMETRY类型,同时也简要介绍了一下C和Pro*C。通过大量的代码示例,我们还研究了怎样对几何体进行读取、解码、构建和写入。

·第8章:空间索引和操作符:在这一章和下一章中,我们将描述如何使用空间信息执行邻近分析(proximity analysis)。这一章专注于空间索引和空间操作符。空间索引保证了执行邻近分析查询的有效响应时间。本章中介绍空间索引的概念和它们的创建。然后我们描述了Oracle Spatial所支持的用于对索引表执行空间分析的不同的空间操作符。概述了它们的语法和语义并且详细介绍了不同的操作符。还介绍了能保证空间操作符得到快速评价的秘诀。本章最后讨论了对大型空间存储很有用的一些高级空间索引特性。

·第9章:几何处理函数:本章讨论了几何处理函数,简称为空间函数。与空间操作符相比,这些函数不需要空间索引,而且能提供比带有空间索引的空间操作符更详细的分析。它们还可以出现在SQL语句的SELECT列表和WHERE子句中。我们会依次讨论每个空间函数,包括它们的一些使用技巧。..

·第10章:网络建模:本章介绍了对空间数据进行建模的另一种方法:基于网络概念的方法。当我们需要计算如路径、旅行距离或基于旅行时间的邻近时,网络是一种很有用的信息建模方法。我们首先描述了建立网络的一般概念和术语,然后讨论了Oracle Network Data Model及其数据结构,最后详细描述了怎样在Oracle中创建一个网络以及如何进行网络分析。

·第11章:路由引擎:这一章介绍了Oracle的路由引擎。你还将学习怎样使用Oracle的路由引擎来获得从起始地址到目标地址的详尽的行车路线。

·第12章:使用MapViewer定义地图:MapViewer是Oracle中用来可视化存储在空间数据库中的空间信息的工具,它是Oracle应用服务器(Oracle Application Server)的一部分。本章描述了MapViewer并介绍了基本的制图概念,如主题、样式规则和用户控制。我们还介绍了如何安装、部署和配置MapViewer,以及如何构建地图并用Map Builder定义工具把它们存储在数据库中。

·第13章:在应用程序中使用地图:这一章展示了如何将创建于空间数据之上的地图集成到商务应用中。我们还展示了怎样利用最近出台的Oracle Maps技术来支持无缝浏览体验和改进地图应用的性能。

·第14章:应用实例:在这一章,我们将运用本书所阐述的大部分技术和工具来创建一个集成了空间分析和可视化的简单应用,并展示和剖析这个应用。该应用包含地图和数据显示、地图功能(放大、面板等),地理编码、空间分析和路由功能。我们会介绍这个应用是如何设计和编码的,并评估实现该应用主要特性的部分源代码。完整的源代码可从Apress网站(www.apress.com)和本书合作站点http://www. tupwk.com.cn/downpage上下载,详见随后的“安装”部分。

·第15章:案例研究:通过描述5个案例,本章阐述了如何使用Oracle Spatial来存储、分析、可视化和集成商务和政府应用中的空间数据。BusNet案例阐述了如何使用Oracle Spatial来管理伦敦的公共汽车网络。P-Info案例描述了一个可为外勤警官提供location-enabled信息访问的系统。荷兰的有害物质风险仓库案例展示了如何使用Oracle Spatial来为一个危险化学品仓库提供空间功能。美国地质调查局(USGS)的全国土地覆盖可视化分析工具(National Land Cover Visualization and Analysis Tool)表明了怎样使用Oracle Spatial为美国的土地覆盖栅格数据提供访问支持。MilitaryHOMEFRONT案例描述了如何使用Oracle Spatial来存储和访问兴趣点、进行地理编码和路由操作。

·第16章:秘诀、常见失误和常见错误:本章描述了一些在location-enabling你的应用程序中有用的秘诀。我们也讨论了一些应用程序开发人员常犯的且很容易避免的失误。最后,我们给出了一些在location-enabling你的应用程序中经常遇到的错误以及如何应对这些错误。

·附录A:其他一些空间分析函数:除了第8章和第9章所描述的分析函数之外,本附录介绍了一些针对特殊商务分析需要的分析函数。这些函数可以进行基于瓦片的分析、邻接分析和聚类分析。

·附录B:线性参考:线性参考广泛应用于交通运输和公用事业行业。它使用一个参数(度量)在一个线性特性上通过与某些已知点(如起始点)的关系来标识一个对象的位置。本附录首先介绍了线性参考的概念和最常见的一些操作。然后讨论了SDO_LRS程序包,其中包含操作线性参考几何体的所有函数。

·附录C:Oracle数据库中的拓扑数据模型:在一些应用如土地管理中,分享和更新多个空间对象间的边界是很普遍的。由于对共享边界的更新,这个过程可能导致数据的不一致。本附录描述了另外一种模型,即拓扑数据模型(Topology Data Model),用于对共享几何体特性的有效管理。我们还介绍了Oracle Spatial中的拓扑建模和在拓扑数据模型上操作的功能。

·附录D:Oracle中的栅格数据存储:在本附录中,我们简单地讨论了如何在Oracle Spatial中存储栅格对象。本附录介绍了SDO_GEORASTER数据类型并探讨了怎样在Oracle的数据库中存储栅格数据,也描述了如何操作GeoRaster对象。

·附录E:在Oracle中使用点云和TIN进行建模:在本附录中,我们简单地描述了如何在Oracle Spatial中存储大型点集(通常来源于激光扫描)。本附录介绍了新的SDO_POINT_CLOUD数据类型,用于对这些大型点集进行有效存储和检索。最后描述了SDO_TIN数据类型,用来为这些大型点集创建不规则三角网。

本书并没有重复用户指南和安装指南的内容。当你阅读本书时,尤其是运行例子时,强烈推荐你把这些指南放在手边。因为有些情况下,我们会让你从用户或者安装指南中获取细节。完整的Oracle数据库和Oracle应用服务器文档可从Oracle技术网站www.oracle.com/technology/document上找到。与本书相关的Oracle 11g手册如下:

·Oracle Spatial用户指南和参考(Oracle Spatial User’s Guide and Reference)

·Oracle应用服务器,MapViewer用户指南(Oracle Application Server,MapViewer User’s Guide)

·Oracle Spatial拓扑和网络数据模型开发者指南(Oracle Spatial Topology and Network Data Models Developer’s Guide)

·Oracle Spatial地理栅格开发者指南(Oracle Spatial GeoRaster Developer’s Guide)

·Oracle Spatial Java API参考(Oracle Spatial Java API Reference)

本书读者对象

本书的主要读者是熟悉Oracle技术的应用程序开发人员,他们想通过空间信息增强他们的应用。他们通常了解数据库设计、PL/SQL、Java等,但对空间数据和地理信息系统不太了解(甚至一无所知)。

这本书也将吸引对数据库技术的高级特性感兴趣的Oracle通用技术用户。本书逐步介绍了空间信息领域并引导读者从基本的概念到复杂的分析和案例研究。它具有实际动手的风格、丰富的例子和实用的信息。

本书为开发人员开辟了新的应用领域并且促使他们在现有的应用里集成空间方面。同时,如果仅因为本书是全面介绍Oracle Spatial的第一本书的话,本书也应该吸引GIS程序员和用户。本书实际上涵盖了Oracle地理空间技术的所有范围—— 即数据库(Oracle Spatial和Locator)和Oracle应用服务器(MapViewer和路由器)。

如果你是PL/SQL和数据库技术方面的新手,那么我们建议你在读本书之前先花一些时间去熟悉对象关系数据库的语言和主要概念。这本书并非只针对完全的初学者。但另一方面,本书并不假定读者有任何关于空间信息管理的知识。

一旦你开始使用这本书,我们确信你将发现它对建立运行良好的、空间信息增强的应用非常有价值。

版权和不承担责任的声明

Oracle是一个已经注册了的商标,还有Oracle9i、10g、11g。Oracle iAS(应用服务器)和Oracle Spatial也是Oracle公司的商标。

本书中提到的所有其他的公司和产品名仅用于识别目的,它们有可能是其拥有者的商标。

本书中使用的数据专门用于说明本书中的概念,其他任何方式的使用并不被授权。如果没有作者的书面同意,数据集是不能被全部或部分地传递、改变或者修改的。特别地,对NAVTEQ提供的在本书中使用的样例数据,我们推荐你阅读一下最终用户许可协议。这个协议可从www.navteq.com/oracle-download/end_user_terms.pdf获取。通过安装和使用本书提供的数据,你将隐含地同意本协议的条款。

原始代码和数据的作者、出版社和公司不承担由使用本书里的数据而引起的任何后果。作者和出版商并不保证数据是完整的、及时更新的或者正确的。

本书中的大多数图片是基于来自NAVTEQ和DCW的数据并使用Oracle MapViewer而生成的。数据所有者拥有数据的版权。…

警告: [SetPropertiesRule]{Server/Service/Engine/Host

在网上查了一下,很多人也碰到这个问题

转一下别人的解释:

有的说将Tomcat的版本换成6.0.14就可以了;还有的说在建立Dynamic Web Project时把"Dynamic Web Module"选项后面的版本号由2.5改成2.4也行。不过这些回答好像都不能真正地解决问题。

出现SetPropertiesRule警告的原因是因为Tomcat在server.xml的Context节点中不支持source属性:<Context docBase="…" path="/…" source="org.eclipse.jst.j2ee.server:…"/>

解决方法是在Servers视图里双击创建的server,然后在其server的配置界面中选中"Publish module contexts to separate XML files"选项。

具体“Publish module contexts to separate XML files”是什么意思,

请看Tomcat Publishing Options介绍:

Two new options which affect publishing are now available in the Server Options section of the Tomcat server editor. The Tomcat server must be 5.0.x or later for these options to be enabled. The Serve modules without publishing option does what it says. Web content will be served directly from the "WebContent" folder of the Dynamic Web Project. A customized context is used to make the project’s dependencies available in the Web application’s classloader. The Publish module contexts to separate XML files option will publish contexts using the preferred method of separate XML files under the "conf/Catalina/localhost" directory, rather than keeping them in the "server.xml" file. A couple of improvements for this option are noted in Bugs 180931 and 180936.

关于解决方法,再详细说明一下:

Servers视图的打开方法:Window–Show View-other..–Servers

双击Server:就是双击服务器名,我的服务器名为:Tomcat v6.0 Server at localhost 即双击它,进入

server的配置界面: 选中"Publish module contexts to separate XML files"选项

jar not loaded. See Servlet Spec 2.3, section 9.7.

信息: validateJarFile(D:\xj\workspace\webworktest\webapp\WEB-INF\lib\servlet-api-2.4.jar) – jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

分析:

jsp-api.jar和servlet-api.jar这两个包tomcat的common\lib已经有了,必须将\WEB-INF\lib\目录下的去掉,否则会冲突的,会引起tomcat启动正常,而页面却总是无内容显示的错误

解决方案:

将\WEB-INF\lib\目录下的jsp-api.jar和servlet-api.jar删除

保证WEB-INF\lib跟tomcat5的common/lib下的JAR包没有重复的即可! 

tar包、压缩与解压缩

 

在Unix下常遇到一些解包、压包的问题。一般情况下将若干文件或文件夹打成tar包,是为了便于文件的传输和管理。例如,通过FTP从Unix平台下载目录结构较多的文件夹到Windows平台或另外一Unix平台,虽然文件夹不是太大,但由于每个文件很小,且非常多,每个文件都要进行文件头、尾检查校验。下载速度会非常慢。如果打成tar包,传输就会快很多。存档的文件夹打成tar包也容易管理。
值得注意的是:tar文件只是将文件或文件夹打包,并没有进行压缩。如果文本文件较多,对其压缩会节省很大的磁盘空间,传输将更快。压缩和解压缩方法可以参考下文给出的示例。
下面我以Sun Solaris 5.8(其他unix如linux、aix大体相同)为例,就常见的一些问题向各位同仁作一下介绍,供大家在工作中参考。因水平有限,仅做抛砖引玉,欢迎大家积极补充。

1、如何解开.tgz或.tar.gz文件?
2、如何解开.z或.Z文件?
3、如何解开.tar.Z文件?
4、如何安装、卸载、列出rpm包信息?(linux常用)
5、如何使用tar命令测试、展开、生成tgz包?
6、如何解开和生成tar文件?
7、如何象在PC上的ARJ那样的分解打包软件?
8、在Unix下如何压缩文件?
9、如何解开和生成其他包如.jar文件?
10、抛砖引玉,待同仁补充

============================================================
1、如何才能解开.tgz或.tar.gz文件?
1)方法一:
gzip -d filename.tar.gz 或 gzip -d filename.tgz
tar -xvf filename.tar
2)方法二:
解压并列表:
gzip -dc filename.tgz | tar xvf – #解.tgz文件
gzip -dc filename.tar.gz | tar xvf – #.tar.gz 同 .tgz文件
只列表不生成文件:
gzip -dc filename.tgz | tar tvf – #解.tgz文件
gzip -dc filename.tar.gz | tar tvf – #.tar.gz 同 .tgz文件
gzip的其他使用方法参见gzip -h

============================================================
2、如何才能解开.z或.Z文件?
1)解.z 文件: gzcat filename.z
2)解.Z 文件:uncompress -c filename.Z

============================================================
3、如何解.tar.Z文件?
1)解压并列表:
zcat filename.tar.Z | tar xvf – #解.tar.Z文件
uncompress -c tast.tar.Z | xvf – #uncompress -c 同 zcat
2)只列表不生成文件:
zcat filename.tar.Z | tar tvf – #解.tar.Z文件
uncompress -c filename.tar.Z | tvf – #uncompress -c 同 zcat

============================================================
4、如何安装、卸载、列出rpm包信息?(linux常用)
1)安装rpm包时显示进度,例如:用-vh参数,如rpm -ivh ipchains-1.3.6-1.i386.rpm
2)直接通过ftp来安装rpm包,例如:rpm -i
3)校验所有的rpm包,查找丢失的文件,例如:rpm –Va
4)查找一个文件属于哪个rpm包,例如:rpm -qf /usr/bin/who
5)列出一个rpm包的描述信息,例如:rpm -qpi mon-0.37j-1.i386.rpm
6)列出一个rpm包的文件信息,例如:rpm -qpl mon-0.37j-1.i386.rpm
7)列出并过滤已经安装的包,例如:rpm –q |grep IBM
8)删除已安装的包,例如:rpm –e 包名
9)其他rpm操作参见 # rpm –help

============================================================
5、如何使用tar命令测试、展开、生成tgz包?
tar zvfx filename.tgz #在当前目录下展开这个包
tar zvft filename.tgz #只测试不展开
tar zvfx filename.tgz -C /new-dir #展开后放到/new-dir目录下
tar zvfc filename.tgz /filename #把/filename目录下所有的文件及子目录打包成filename.tgz

============================================================
6、如何解开和生成tar文件?
tar xvf filename.tar #当先目录解包
tar tvf filename.tar #只显示不生成文件
tar cvf filename.tar <file or dir list> #生成包
tar的参数很多,要仔细学习参见#tar -h

============================================================
7、如何象在PC上的ARJ那样的分解打包软件?
# split -b 100k big.file
将big.file分解成若干500K的小文件 (名为xa, xb, xc, …)
# split -l 500 big.file
将big.file分解成每个500 lines的小文件
其它使用方法参见split –h

============================================================
8、在Unix下如何压缩文件?
在unix下压缩方法有多种,可以参见gzip、gunzip、zcat、compress等工具文档,也可以参见上面所述的一些方法。下面仅以compress命令示例:
例如:需要将/filename的文件打包并压缩,需要做以下步骤:
1)打包
tar cvf filename.tar ./dir
2)压缩
compress filename.tar #生成filename.tar.Z文件
如果还原回原来的目录结构
1)解压缩
uncompress filename.tar.Z
3)解tar包
tar xvf filename.tar
如果unix命令参数不熟悉,一般也可以通过ftp将压缩或打包文件传到PC上,利用Windows下的Winzip或rar等压缩工具解开。

==========================================================
9、如何解开和生成其他包如.jar文件?
在unix上生成和解开jar包和对tar包的操作差不多。
例如:
jar cvf filename.jar /dirname #将/dirname 打成jar包
jar xvf filename.jar #解开jar包
jar tvf filename.jar #只列表不解开jar包

eclipse中svn更改ip

我们项目组的应用程序是通过SVN进行版本控制的,通过安装Eclipse的SVN插件后,每次程序进行下载、同步、提交、更新,便可在Eclipse进行Synchronize、CheckOut、Commit、Update,非常方便。但是今天出了点小状况:版本控制器更换了地方,IP也变了。这样的话,我们自己机器这边没法进行同步了。如果重新以新的版本控制器的地址进行CheckOut,则原先自己本机上的程序就没法进行管理了,非常不爽。自然想到修改本机程序的版本控制器地址,这里就要借助一个客户端工具:小乌龟TortoiseSVN,幸好偶机器上有装。
首先在你自己程序所在工程的根目录下,点击鼠标右键,如下图:

选择TortoiseSVN–>Relocate,这时会跳出如下对话框:

修改文本框上面的IP地址为你目前版本控制器的地址即可。这时,你再回到Eclipse的界面,查看你程序的SVN版本控制器的URL,你将非常惊讶地发现:

上面的地址已经更新为你刚才输入的新的版本控制器的地址了,很神奇吧!

有一个问题:很多人会想(其实我也想到了),能否不借助小乌龟TortoiseSVN,而直接在Eclipse上进行修改呢?可惜的是,找了老半天,没找到其"神秘入口"所在……欢迎指教!

[题外话:]
晚上吃完饭走进平安大厦来加班的时候,经常和我们碰面的保安同志也耐不住了,向我们甩一句:
“天天加班啊?……”很愤怒的样子…… 足以见证安硕的加班已令“千”夫所指!

Oracle的一些SQL语句

一: SQL简介
SQL是Structured Query Language(结构化查询语言)。SQL是由IBM在二十世纪七十年代初开发的。 SQL是数据库语言,Oracle使用该语言存储和检索消息。
通过SQL可以与Oracle服务器实现通信: 输入SQL命令–> 将SQL命令发送到Oracle服务器–>Oracle服务器执行该命令–>将查询结果发送给用户
SQL是所有关系型数据库通用语言,因此他是可以移植的,可以用来操作其他数据库。
二: SQL命令
SQL 支持4大类型命令:
数据定义语言(DDL): Create(创建), Alter(更改), Drop(删除).
数据操纵语言(DML): Select(选择), Insert(插入), Update(更新), Delete(删除).
事务控制语言(TCL) : Commit(提交), Rollback(回滚), Savepint(保存点).
数据控制语言(DCL) : Grant(授予), Revoke(回收).

A: 数据定义语言: 用于改变数据库结构,包括创建,修改,删除数据库对象
         创建表:
         Create Table 表名 ( 列名 列类型, 列名 列类型, …… )
        例: Create Table vendor_master( vencode Varchar2(5), venname Varchar2(20) )
        修改表:
        Alter Table 表名 Modify | Add ( 列名 列定义 )
                  Modify:修改列。    Add:增加列。
        例: Alter Table vendor_master Modify ( vencode Varchar2( 10 ) )
                  Alter Table vendor_master Add ( venAdd Varchar2(20) )
        Alter Table 表名 Drop Column 列名
                  Drop 删除列。
        例: Alter Table vendor_master Drop Column venAdd
        删除表:
        Drop Table 表名
        例: Drop Table vendor_master
B:数据操纵语言: 用于检索,插入和修改数据库信息。
      Select 选择查询:
      查询符合条件的所有表字段:
       Select * From 表名 Where 列名 = 条件
       例:Select * From vendor_master Where vencode = ‘V004’
       查询符合条件的表的可选择字段:
       Select 列名,列名,…… From 表名 Where 列名 = 条件
       例:Select venname, venadd Where vencode = ‘V004’
       查询无重复的行:
       在Select 后加Distinct就可以了
       列:Select Distinct * From vendor_mastor
      查询并排序显示查询结果:
       Select * From 表名 Order By 排序列名,排序列名,……
       例:Select * From vendor_master Order By vencode    — 按一列来排序
               Select * From vendor_master Order By vencode, venadd   — 按多列来排序  
      Select 语句的总语法:
       Select * | {[Distinct] 列名,列名,…… } From Table
       [Where 条件]
       [Order By 列名,列名,……]
       其中用[ ]这个符号括起来的表示是可以选择写不写的。

      Insert 插入:
      插入一个表的所有列:
       Insert Into 表名 Values ( 列值,列值,…… )
       例:Insert Into vendor_master Values ( ‘V001’, ‘Pro’, ‘长沙’ )
      选择性插入表中的列:
       Insert Into 表名 ( 列名,列名,…… ) Values( 列值,列值,…… )
       例:Insert Into vendor_master ( vencode, venname ) Values( ‘V002’, ‘Wind’ )
       注:未选择插入值的列将以NULL空值插入。
      跳过列插值:
       跳过一个或多个列的方式是为该列输入NULL空值
       Select * From vendor_master Values( ‘V003’, NULL, ‘长沙’ )
      插入来自其他表的所有记录:
       Insert Into 表名 Select * From 表名    
       例:Insert Into order_master Select * From vendor_master
      选择列插入来自其他表的记录:
       Insert Into 表名 Select| 列名,列名,…… From 表名
       例:Insert Into order_master Select vencode, venname From vendor_master
      按条件插入来自其他表的所有记录:
       Insert Into 表名 Select * From 表名 Where 表名.列名
       例:Insert Into order_master Select * From vendor_master Where   vendor_master.vencode = ‘V002’
    Update 更新:
    按条件更新一列或多列:
     Update 表名 Set 列名 = 更新值,列名 = 更新值,……
     Where 列名 = 条件
     Update vendor_master Set venname = ‘kof’ Where vencode = ‘V001’
    更新所有行:
     Update 表名 Set 列名 = 更新值,列名 = 更新值,……
                  Update vendor_master Set venname = ‘kof’
      Delete 删除:
     Delete From 表名 Where 列名=条件
     例:Delete From vendor_master    — 删除表所有记录
     例:Delete From vendor_master Where vencode = ‘V001’ — 选择删除

C:事务控制语言:
        当用户执行创建,删除,修改数据库对象或插入,删除,修改数据库表时,    用户所做的数据修改会被保存在数据缓冲区中,此时用户所做的数据库修改并没有真正的修改了数据库,只有在用执行Commit(提交)命令后才真正的修改了数据库,如果想不修改数据库,则可以执行Rollback(回滚)命令则刚刚执行的修改不会修改数据库。
        如:当你用Insert 命令插入一条记录时,此时这条记录是保存在数据缓冲区中的,并没有真正保存到数据库中,数据库中不会有这条记录(不信你可以以另一个用户登陆然后查询插入的表,会发现无次记录),如果你执行了Commit(提交)命令后, 才会将缓冲区的数据保存到数据库里,既真正的修改了数据库(以另一个用户登陆可以查询到插入的记录),如果执行Rollback(回滚)命令则会把存在缓冲区中的数据给删除掉,既用户的修改作废(如果执行Commit命令则不能回滚了)。可以利用Savepoint(保存点)进行选择性的回滚。
例: Insert Into vendor_master Values( ‘V007’, ‘Kof’, ‘长沙’ )
          Savepoint insert_mark     — 保存点
          Update vendor_master Set venname = ‘aaa’ Where vencode = ‘V007’
          Savepoint update_mark     — 保存点
          Delete From vendor_master Where vencode = ‘V007’
执行以上代码,以上所修改的数据会先保存在数据缓冲区中,当执行Commit则将所做的数据修改保存到数据库中。当执行Rollback时则删除保存在数据缓冲区中的记录(既插入,更新,删除操作作废)。 如果只想删除作废,则可执行:Rollback To Savepoint update_mark           如果想删除,更新作废,则可执行:Rollback To Savepoint insert_mark       如果想插入,更新,删除作废,则可:Rollback
注: 此事务处理机制只有在Oracle中才必须需要用户手动控制,在SQL2000中默认情况它会隐性控制(既用户不需要自己执行Commit命令来提交,他自动执行),当然在SQL2000中也支持自己控制。

D:数据控制语言:用于为用户提供权限控制。
       在前面将过,所以不重复了。

三:SQL函数(常用函数)
      Oracle 将函数分为2大类:单行函数和分组函数

        单行函数又分为5大类
                   A:日期函数        B:字符函数        C:数字函数
                   D:转换函数        E:其他函数
        A:日期函数
                Round函数:返回日期,此日期四舍五入为格式模型指定的单位。
                格式为: Round( 日期, [格式模型] )
                格式为“Year”,如果日期大于7月1日将入为下一个年份。反之则舍为1月1日
                例: Select Round( DATE’2005-05-10′, ‘Year’ ), Round( DATE’2005-07-10′, ‘Year’ ) From dual
                结果为: 2005-01-01   和 2006-01-01.
                格式为“Month”,如果日期大于15则入为下一月份,反之则舍为此月1日
                例: Select Round( DATE’2005-05-10′, Month), Round( DATE’2005-05-20′, Month) From dual
                结果为: 2005-05-01 和 2005-06-01

        B:字符函数
                Instr 函数: 查找某字符位置
                InStr( 字符串, 字符 )
                例: Select InStr( ‘worldwide’, ‘d’ ) From dual
                结果: 5
                SubStr函数: 按位置去多个字符
                SubStr( 字符串, 起始位置, 取几个 )
                例: Select SubStr( ‘abcdefg’, 3, 2 )
                结果: cd
               Trim 函数:从字符串开头或结尾(或开头和结尾)剪裁特定的字符,默认裁减空格
              裁减左边开头字符:
                Trim ( Leading 裁减的字符 From 字符串 )
                例:Select Trim( Leading 9 From 9999876549999 ) From dual
                结果: 876549999
                裁减右边开头字符:
                Trim ( Trailing 裁减的字符 From 字符串 )  
                例:Select Trim( Trailing 9 From 9999876549999 ) From dual
                结果: 999987654
                裁减左边和右边字符:
                Trim ( 裁减的字符 From 字符串 )  
                例:Select Trim( 9 From 9999876549999 ) From dual
                结果: 87654
     Decode 函数:将值进行替换
Select Decode ( 比较列名, 比较值, 替换值, 比较值2, 替换值2,…… ) From 表名
例:Select venname, Decode( vencode, ‘001’, ‘aaa’, ‘002’, ‘bbb’, ‘003’, ‘ccc’ ) From vendor_master
结果:Pro      aaa
           Wind    bbb
            Kof      ccc
            Fly       004
注: 001, 002, 003被aaa,bbb,ccc替换

C:数字函数:
        ABS 函数: 去绝对值
        ABS( n )
        例: Select ABS( -15 ) From dual
        结果: 15
        FLOOR 函数: 向下取整
        FLOOR( n )
        例: Select FLOOR( 100.2 ) From dual
        结果:100
        Power 函数: m的n次幂
        Power( m, n )
        例: Select Power( 4,2 ) From dual
        结果: 16
      Mod 函数: 取m 除 n 的余数
        Mod( m, n )
        例: Select Mod( 10, 3 ) From dual
        结果: 1
        Round 函数: 四舍五入
        Round( m, n )
        例: Select Round( 100.256 , 2 ) From dual
        结果: 100.26
        Trunc 函数: 截断
        Trunc( m, n )
        例: Select Trunc( 100.256, 2 ) From dual
        结果: 100.25
        Sqrt 函数: 平方根
        Sqrt( n )
        例: Select Sqrt( 4 ) From dual
        结果: 2

D:转换函数
  To_Char 函数: 将数字或日期转换为字符串.
  To_Char( 数字或日期,转换格式 )
        例:Select To_Char ( sysdate, ‘ YYYY "年" fmMM "月" fmDD "日" HH24:MI:SS’ ) From dual
         结果: 2005年8月25日 16:02:10
         例:Select To_Char( ‘150’, ‘C999’ ) From dual    — 按货币格式转换
        结果: CHY150
        To_Date 函数: 将字符或字符串转换为日期
  例:Select To_Date ( ‘2005-01-03’, ‘YYYY-MM-DD’ ) From dual
        结果:2005-01-03 (日期类型)
    To_Number 函数: 将包含数字的字符串转换为Numer数字类型
        例:Select Sqrt( To_Number( ‘100’ ) ) From dual
        结果:10
E:其他函数
  注:NULL和0不同,NULL表示为空(未知),0表示为0(以知)
        NVL 函数: 将空值替换为指定的值.
  NVL ( exp1, exp2 )
    如果exp1为空,则返回exp2, 反之返回exp1.
        例:Select NVL( NULL, 0 ), NVL( ‘aa’, 1 ) From dula
        结果: 0 和 aa
        NVL2 函数: 将空值替换为指定的值.
  NVL 2( exp1, exp2, exp3 )
    如果exp1为空,则返回exp2, 反之返回exp3.
        例:Select NVL( NULL, 0, 1 ), NVL( ‘aa’, 0, 1 ) From dula
        结果: 0 和   1      

分组函数(又叫聚合函数):
      Avg 函数:返回指定列的平均值
  例:Select Avg( price ) From itemfile
         结果:返回所有行price值的和的平均值.
        Min 函数:返回指定列的最小值
  例:Select Min( price ) From itemfile
      Max 函数:返回指定列的最大值
  例:Select Max( price ) From itemfile
        Sum 函数:返回指定列的值的总和
  例:Select Sum( price ) From itemfile
        Count 函数:返回指定列的行树,可加条件
  例:Select Count( price ) From itemfile
      Group By 字句:将信息分组,按组进行聚合运算.
  例:Select p_category, Max( itemrate ) From itemfile Group By p_category
        结果:按p_category分组,并显示出每组的最大的itemrate.
  Having 字句:用来指定Group By 字句的检索条件,位于Group By 后面
  例:Select p_category, Max( itemrate ) From itemfile Group By p_category Having p_category Not In ( ‘accessories’ );
        结果:按p_category分组,且p_category不等于accessories,然后显示出每组的最大的itemrate.

Oracle截取字符串和查找字符串

oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏
常用函数:substr和instr
1.SUBSTR(string,start_position,[length])    求子字符串,返回字符串
解释:string 元字符串
       start_position   开始位置(从0开始)
       length 可选项,子字符串的个数
For example:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。

2.INSTR(string,subString,position,ocurrence)查找字符串位置
解释:string:源字符串
      subString:要查找的子字符串
      position:查找的开始位置
      ocurrence:源字符串中第几次出现的子字符串
For example:
INSTR(‘CORPORATE FLOOR’,’OR’, 3, 2)中,源字符串为’CORPORATE FLOOR’, 目标字符串为’OR’,起始位置为3,取第2个匹配项的位置;返回结果为 14 ‘

 

_______________________________

示例:

A#B#C#D
我想用sql截取得到C怎么写?
首先说下的市这个字符串也可能是AB#B#C#DE#EF#G
我想取到的是第二个‘#’和第三个‘#’之间的字符窜?

 select SUBSTR(module_tree,
              INSTR(module_tree, ‘#’, 1, 2) + 1,
              INSTR(module_tree, ‘#’, 1, 3) – INSTR(module_tree, ‘#’, 1, 2) – 1) as module_id
  from sys_modules sm
 where sm.module_id = ‘wdcs04’

 

FlexViewer2.3 最小化显示问题

因为在4.0中Resize 是用的<s:Resize  到4.5后又用回到<mx:Resize所以在WidgetTemplateSkin.mxml中

  <s:Resize heightTo="30"
                          target="{hostComponent}"
                          widthTo="100"/>

改为

 <mx:Resize heightTo="30"
                          target="{hostComponent}"
                          widthTo="100"/>