zoukankan      html  css  js  c++  java
  • 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中了。

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

  • 相关阅读:
    创建对象的模式
    linux下安装node v12.16.3
    es6知识点总结
    在阿里云上部署的node服务器不能通过公网IP访问
    angular 1 input中选中状态绑定
    让一个元素水平垂直居中
    语录收集
    跨域
    事件循环
    git的常用命令
  • 原文地址:https://www.cnblogs.com/googlegis/p/2979101.html
Copyright © 2011-2022 走看看