将shp数据存储到oracle或者sql server 2008中

/Files/zuiyirenjian/将shp数据存储在oracle下.rar

ArcGIS 10 中有一个新的功能 query layer,用这个东西就可以将存储在其他关系型数据库里面的数据整合到ArcMap中,看来ESRI越来越开放了,我们知道,空间数据的存储有点复杂,不同的GIS厂商都有自己管理数据的结构,比如超图和MapGIS就和ESRI的空间数据结构不一样,同样关系型数据库也有自己的空间数据存储结构,Oracle提供了SDO_GEOMETYRST_GEOMETYR,注意这个和ESRI提供的ST_GEOMETYR是不一样的。
Oracle提供了一个shp2sdo的工具,将shp数据存储成自己的SDO_GEOMETYR,在这里我操作一下。我的shp数据CUN2
这是在ArcMap下看到的



将下载到的shp2sdo添加到oraclebin目录下,为什么?因为oracle安装的时候配置了一个环境变量path,在这里我不多介绍。



cmd 进入shp文件的目录,我的shp数据在计算机上的位置





Esriquery oracle中的表名,我采用默认的。
下面多了三个文件




Ctl为控制文件,里面有dat数据的地址,dat数据含有我们的数据

我用scott用户连接到oracle数据库,然后做如下操作,执行sql语句,可以打开看看,不要因为看到第1行出现错误,就认为这个错了,原因呢,在这里我不说了,sql语句里面可以看到。Sql语句其实是创建了一个表。



Sql语句其实是创建了一个表,但是还没装在数据呢?数据是在dat中,装载控制文件,控制文件记录了dat数据的位置。






创建一个空间索引
SQL>CREATE Index esriquery_index ON esriquery (GEOM)INDEXTYPE IS MDSYS.SPATIAL_INDEX;
oracle中看到的




本来是要ArcMap中直接利用Query Layer 访问这个数据,我的ArcGIS10的,Oracle11R2,计算机是64win7但是就死活连接不上,最终和同事认为是一个BUG,同事说装一个32位的客户端就可以了,我看到他们确实可以,而且我用其他的都可以连接上,从命令端或者sql developer都可以,但是ArcMap不行,没法,我将数据又存储在sql server2008中,可以,通过query layer可以访问,至于Oracle的那个问题。我还在努力。

在这里说一下,我找到的一个工具是将shp存储在sql server2008中,估计不是官方的,所以如果字段是汉字的话,会有乱码,用英文字段名称没问题的。
Shp2sql server2008下载地址
http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx
以下是用query layer访问到sql server 2008 中的数据



你可能感兴趣的:(SQL Server 2008)