您的位置:首页 > 其它

VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(一)

2008-12-04 18:22 423 查看
前面耗了好大的劲终于用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中了。

读取空间数据,下回分解。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐