ArcSDE vs. oracle Spatial 4

导入数据到Oracle Spatial

Oracle Spatial并没有像ArcGIS那样有一套从桌面到数据库到服务器到开发包的全方位GIS产品体系,因此向Oracle中加载数据相比用ArcGIS要麻烦得多,同时也没有那么多的数据源格式的支持。Oracle本身则提供了一个工具shp2sdo[1]
,可以帮助你导入Shapefile到Oracle Spatial中,这个工具的使用分三个步骤:


[oracle@test2 shp2sdo_linux]$ ./shp2sdo.exe

shp2sdo – Shapefile(r) To Oracle Spatial Converter

Version 2.15 21-May-2004

Copyright 1997,2004 Oracle Corporation

For use with Oracle Spatial.

Input shapefile (no extension): /home/wuyf/world/cities

Shape file /home/wuyf/world/cities.shp contains 2539 points

Output table [/home/wuyf/world/cities]: cities

Output data model [O]:

Geometry column [GEOM]:

ID column []:

Points stored in SDO_POINT_TYPE ? [Y]:

Use a spatial reference system ID (SRID) ? [N]:

Change tolerance value from the default (0.00000005) ? [N]:

Generate data inside control files ? [N]:

Target database Oracle8i? [N]:

Spatial Data requires more than 6 digits precision? [N]:

Bounds: X=[-176.151564,179.221888] Y=[-54.792000,78.200001]

Override ? [N]:

Processing shapefile /home/wuyf/world/cities into spatial table CITIES

Data model is object-relational

Geometry column is GEOM

Points stored in SDO_POINT attributes

Data is in a separate file(s)

Control file generation for Oracle9i or higher

Spatial data loaded with 6 digits of precision

Conversion complete : 2539 points processed

The following files have been created:

cities.sql : SQL script to create the table

cities.ctl : Control file for loading the table

cities.dat : Data file


SQL> @/home/oracle/shp2sdo_linux/cities.sql


[oracle@test2 shp2sdo_linux]$ sqlldr spatial/esrichina cities.ctl

SQL*Loader: Release – Production on 星期一 4月 19 14:02:26 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

达到提交点 – 逻辑记录计数 64

达到提交点 – 逻辑记录计数 128

达到提交点 – 逻辑记录计数 192

达到提交点 – 逻辑记录计数 256

达到提交点 – 逻辑记录计数 320

达到提交点 – 逻辑记录计数 384

达到提交点 – 逻辑记录计数 448

导入成功后我们可以在Oracle Spatial中看到这个空间表,其中GEOM是导入时设置的几何字段,我们可以打印些数据看一下:

SQL> select geom from cities where rownum<10;



SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-66.348, -33.316002, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-57.140001, -25.387002, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-56.428002, -25.452999, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-57.150999, -25.623999, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-56.450997, -25.784001, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-58.176999, -26.182998, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-58.295997, -26.867997, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-58.986999, -27.457002, NULL), NULL, NULL)

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-58.817997, -27.486999, NULL), NULL, NULL)





You may also like...