VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(一)
前面耗了好大的劲终于用VB连上了SDE,其实本来很简单(如果有人传授的话),可要自己去探索就特别的麻烦,难怪前面我转载的那几个课程要500rmb/天,真是天价课程啊,不免又要感叹一番了。用VB连上了,我就开始用VC连,道理基本上一致,所以我很快就连上SDE了,这一步会了确实很easy,very fast。
可是一开始我的SDE或者说我的Sqlserver里面根本就没有空间数据,这就得先录入数据了。录入数据查了很多地方,看到了很多to geodatabase的文档,如1、shapefile to geodatabase等,这个在ArcCatlog中就有,能很快转换,2、也可以用命令提示符。当时想,既然有简单方法,当然选前面一个。可不知是否是RP问题,翻山越岭啊,跋山涉水啊就是没有找到该死的shapefile to geodatabase,to geodatabase倒是遇到好几个,可是都没有转到SDE,仅仅是复制了一个shp文件,要是有哪位大虾能告知原因,敝人将感激不尽。最后,没有办法了,只能用命令提示符:原型如下:
shp2sde -o create -l <table,column> -f <shape_file> [-I]
[Spatial_Index] [{-R <SRID> | [Spatial_Ref_Opts]}]
[-S <layer_description_str>] [-v] [-L {ON | OFF}] [-P {32 |
64
}]
[-e <entity_mask>] [-k <config_keyword>] [-M <minimum_ID>]
[-a {none | all | file=<file_name>}] [-r <reject_shpfile>]
[-V <version_name>] [-C <row_id_column>[,
{SDE|USER},<min_ID>]]
[-c <commit_interval>] [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>];一看头就有点晕,直接看例子算了:
一下部分是转载内容(出处无法考证):
shp2sde -o create ^
-l buildshd,shape ^
-f D:\job\sde入库\builds.shp ^
-g 600,3000,10000^
-x 416047,555677,999999 ^
-e a+n ^
-S "vegrgn" ^
-a all ^
-c 10000 ^
-i 5151:esri_sde ^
-u sde ^
-p sde ^
-s jiaodaozhen
这是一个对数据进行加载的具体例子,下面对每一条我都进行详细的说明:
^ 换行的标志,使用命令行方法一定要注意不能使用Tab,换行符使用 ^(Windows
里面使用^,Unix中使用"\");
-o create (参数)建立一个新层;
-l buildshd,(建立层的名字)shape(类型);
-f D:\job\sde入库\builds.shp (路径);
-g 600,3000,10000^ 索引网格大小(Grid size);
在加载数据时候,我们还需要给数据指定索引网格的大小,为了提高空间查询的性能,ArcSDE采用空间索引的机制,是一个覆盖整个要素类的两维索引,类似于一般的道路图上的索引网格。ArcSDE可以赋予三层空间索引网格,每个网格层都具有自己的格网大小。第一层网格为必需,它的格网尺寸最小;而第二和第三层可选,它们的网格可以通过设置为0使之无效。如果有效,第二层网格大小必须至少比第一层网格大三倍,而第三层网格大小也必须至少比第二层网格大三倍。索引格网的大小加载后也是可以随时修改的。
-x 416047,555677,999999 ^
这三个参数可以从ArcCatalog中获得,第一个参数是X最小值,第二个参数是Y 最小值,第三个参数是精度(Precision)。
-e a+n (输入shp的类型) a+n ^ 面 s+n ^ 线 p+n ^ 点
-S "vegrgn" 备注
-a all ^ 所有的地物都要载入
-c 10000 ^ 转换速率
-i 5151:esri_sde ^ SDE 的服务名和端口名,一般都没有做改动。
-u sde ^ 用户名
-p sde ^ 密码
-s jiaodaozhen 服务器 (主机名)
下面是一个追加的例子,对已经加载的数据进行追加数据:
shp2sde -o append -l agency,shape -f D:\job\sde入库\temp\py\agency.shp -a all -c 10000 -i 5151:esri_sde -u sde -p sde -s jiaodaozhen
-O append 追加
-L 要追加到SDE文件名字
-F 文件目录
其他的参数和上面的都相同,但是要注意少了几个参数。
注意:如果导入的时候数据出现的错误较多,可以使用如下命令来储存错误信息:C:\>d\resrgn.bat > 1.txt
C:\>d\resrgn.bat: 批处理的路径和名字。
1.txt 在C 盘根目录下的 1.TXT 文本文件将记录其内容。
例子你照搬可能会有错误的,我就吃了苦头。所以要具体分析。如:
-g 格网大小,这个和你的数据有关,不可乱写,要是不知道就不写这个参数;
-x 这是参考坐标系等消息,同样是和数据有关,亦可不写;所以我自己的实例如下(通过了):shp2sde -o create -l layer5,shape -f c:\test.shp -e p+n -S "vegrgn" -a all -c 10000 -i 5151:esri_sde -u sde -p sde -s sabrinna
注意:中间没有换行符,只有空格,直到最后。
这样我就把shp文件真正地录入或者说导入到了我的数据库(spatial database)sde中了。
读取空间数据,下回分解。