java取出sap接口的数据

import test.ConnectionPool;

import com.sap.mw.jco.*;
import com.sap.mw.jco.JCO.Client;
import com.sap.mw.jco.JCO.ParameterList;
import com.sap.mw.jco.JCO.Table;

public class MyMain {
 
    public static void main(String[] args) {
   
       Client mConnection = null;
       //创建连接池
       ConnectionPool cp = new ConnectionPool();
       try{
       JCO.Table ret = null;
       JCO.Function function = null;
       JCO.ParameterList inParm = null;
     
       //RFC函数名      
       String strRfcName = "zrfc_ddstutas";//rfc函数名
       //使用连接池
       cp.PoolConnection("mySAPPools",50, "700", "00593987", "shit","192.168.100.4", "03");
       //从连接池中取出Connection
       mConnection = JCO.getClient("mySAPPools");
       //             (
  //                            "700", //端口号
  //                            "00593987", //用户名
  //                            "shit", //密码
  //                            "EN", //语言
  //                            "192.168.100.4", //sap服务器ip
  //                            "03"); //系统编号
                              //sysConfig.getSapGroupName()); //SAP组名
 
        //mConnection.connect();
        if(mConnection!=null&& mConnection.isAlive()){
           System.out.println("SAP连接成功");
        // 从连接获得一个逻辑意义上的“仓库”对象(Repository)

           JCO.Repository myRepository = new JCO.Repository("hui",mConnection); // 只是一个名字
         //为输入参数赋值
           IFunctionTemplate ft = myRepository.getFunctionTemplate(strRfcName.toUpperCase());

             // 从这个函数模板获得该SAP函数的对象

           function = ft.getFunction();
          //  function = this.createFunction(strRfcName);
   inParm = function.getImportParameterList();
   //inParm.clear();
   inParm.setValue("8515466119", "BSTNK"); //AUFNR_B 订单号                          
   //inParm.setValue("1997-10-11", "ERDAT_B"); //AUFNR_E 订单号 
   //inParm.setValue("2011-10-11", "ERDAT_E"); //AUFNR_E 订单号   
   //inParm.setValue("", "KUNNR"); //AUFNR_E 订单号   
   
   //赋值传入参数
   function.setImportParameterList(inParm);          
   mConnection.execute(function);
   
   //执行完毕读取返回信息
   ParameterList pList=function.getTableParameterList();
   //pList.getTable("OUTPUT");
   
   System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+pList.toXML());
   ret = function.getTableParameterList().getTable("OUTPUT");
   if (ret.getNumRows() > 0) {
    System.out.println("查询结果>0");
    for (int i = 0; i < ret.getNumRows(); i++) {
        ret.setRow(i);//指定行
        String strVBELN = ret.getString("VBELN");
        System.out.println("strVBELN查询结果为"+strVBELN);
        String strKUNNR = ret.getString("KUNNR");
        System.out.println("strKUNNR查询结果为"+strKUNNR);
        String strERDAT = ret.getString("ERDAT");
        System.out.println("strERDAT查询结果为"+strERDAT);
        String strMS = ret.getString("MS");
        System.out.println("strMS查询结果为"+strMS);
        String strSTUTSA1= ret.getString("STUTSA1");
        System.out.println("strSTUTSA1查询结果为"+strSTUTSA1);
        String strSTUTSA2= ret.getString("STUTSA2");
        System.out.println("strSTUTSA2查询结果为"+strSTUTSA2);
        String strSTUTSA3= ret.getString("STUTSA3");
        System.out.println("strSTUTSA3查询结果为"+strSTUTSA3);
        String strSTUTSA4= ret.getString("STUTSA4");
        System.out.println("strSTUTSA4查询结果为"+strSTUTSA4);
        String strSTUTSA5= ret.getString("STUTSA5");
        System.out.println("strSTUTSA5查询结果为"+strSTUTSA5);
        String strSTUTSA6= ret.getString("STUTSA6");
        System.out.println("strSTUTSA6查询结果为"+strSTUTSA6);
        String strSTUTSA7= ret.getString("STUTSA7");
        System.out.println("strSTUTSA7查询结果为"+strSTUTSA7);
    }
   }
   System.out.println("查询结果为"+ret.getNumRows());    

          
      

 

 

          
        }
      }catch(Exception ex) {
      
           System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
           ex.printStackTrace();
          System.out.println("Caught an exception: \n" + ex);
        }finally{
            // do not forget to close the client connection
         cp.RemoveClientPool("Sample_Pool");
        }
    }
 
}

 

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包没有重复的即可!