2022年ArcSDECAPI创建矢量数据及坐标系统定义 .pdf

上传人:C****o 文档编号:32521415 上传时间:2022-08-09 格式:PDF 页数:8 大小:49.40KB
返回 下载 相关 举报
2022年ArcSDECAPI创建矢量数据及坐标系统定义 .pdf_第1页
第1页 / 共8页
2022年ArcSDECAPI创建矢量数据及坐标系统定义 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年ArcSDECAPI创建矢量数据及坐标系统定义 .pdf》由会员分享,可在线阅读,更多相关《2022年ArcSDECAPI创建矢量数据及坐标系统定义 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ArcSDE C API创建矢量数据及坐标系统定义ArcSDE C API 创建矢量数据及坐标系统定义七 18 2010 Published by Jack under .NET/CSharp, ArcSDE *写了有些天了 .上网不方便 ,总是没更新 .罪过. 在 ArcSDE API 中,要素类 (featureclass) 被称为 Layer下文均用 layer 代表 featureclass。Layer可以看作增加了一个空间列定义的Table 。ArcSDE创建 Layer的过程:1, 创建 DBMS Table ,注册 Table (增加 SDE维护的 ROWID类型字段)2,增加空

2、间列定义 坐标系统,几何类型,存储精度等参数定义3,创建 F表(Feature Table )综上所述,调用 API创建 Layer步骤:1,创建 Table并注册2,增加空间列定义所用相关函数(创建表并注册见上一篇) :SE_coordref_create 创建坐标系结构体pe_factory_geogcs 设置坐标系定义(也可用其它坐标系定义函数,该函数是指定系统预定义的坐标系代码)SE_coordref_set_coordsys 设置坐标系名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

3、 - 第 1 页,共 8 页 - - - - - - - - - SE_coordref_set_xy 设置坐标域和存储精度SE_coordref_set_precision 确定使用 64 位还是 32 位存储SE_layerinfo_create 创建 layerinfo SE_layerinfo_set_coordref 设置坐标系SE_layerinfo_set_spatial_column 设置“ shape”字段SE_layerinfo_set_shape_types 设置几何类型SE_layerinfo_set_grid_sizes 设置格网大小SgCoordRefSetXYCl

4、usterTol 设置 xy tolerance 其中:设置xy tolerance 的函数在sde c api 中并没有提到,使用dumpbin /exports sde.dll 就会发现,实际很多函数sde c api文档都没有提到。那就只好去看sdetype.h头文件的定义了。其中涉及到的几个概念:precision,scale,xy cluster tolerance:通过观察 api 定义,SE_coordref_set_precision 用来定义要素类存储精度的。在 ArcSDE9.2以前的版本,空间几何形体坐标均以32 未整数存储。以后的版本,默认采用64位整型数据存储。SE_

5、coordref_set_xy 函数用来设置存储数据的范围和scale值。 xy 是数据存储起始 minx,miny 值。scale可以看作是存储精度。因为空间数据以整型存储在数据库中,所以,需要要通过小数点位移,来存储小数。这里的 scale 值就是这个意思。例如,如果一个数据的坐标系为高斯-克里格投影,即地图单位为米,那么,如果数据要能够以厘米存储, 即可以存储类似 123.12形式的数据,则 scale值至少设置为 100。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页

6、,共 8 页 - - - - - - - - - 通常情况,为了保证数据存储精度,可适当提高scale 值。如设置为1000。SgCoordRefSetXYClusterTol(设置 xy cluster tolerance)则表达进行拓扑操作的时候,系统可区分两个点的最小距离。通常情况下,需要将tolerance 值设置为存储精度值的两倍或更高。ESRI推荐值为 10 倍以上。SDE API 声明代码:/create coodref struct DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar

7、 = true) public static extern System.Int32 SE_ coordref_create(out IntPtr coordref); /create pe_geogc s struct by gcs CODE DllImport("pe.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.IntPtr pe_factory_geogcs(Int16 code); 名师资料总结 - - -精品资料欢迎下载 - - - - -

8、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - /set coordref's coordsys DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_coordref_set_coordsys(IntPtr coordref,IntPtr pe_coordsys); /set coordref&#

9、39;s xy and scale DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_coordref_set_xy(IntPtr coordref, double x,double y,double xyunits); /set coordref's precision DllImport("sde.dll", SetLastError = true, ThrowOnUnmapp

10、ableChar = true) public static extern System.Int32 SE_coordref_set_precision(IntPtr coordref, Int32 precision); /create layerinfo struct DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_layerinfo_create(IntPtr coordref, ref 名师资料总结

11、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - IntPtr layerinfo); /set spatial column DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_layerinfo_set_spatial_column(IntPtr laye

12、rinfo,string tablename,string spatialColumnName); /set layerinfo's shapetype property DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_layerinfo_set_shape_types(IntPtr layerinfo, Int32 shape_type); /set layerinfo's grid si

13、ze 3 level DllImport("sde.dll", SetLastError = true, ThrowOnUnmappableChar = true) public static extern System.Int32 SE_layerinfo_set_grid_sizes(IntPtr layerinfo, double grid1,double grid2,double grid3); /set xy tolerance DllImport("sg.dll", SetLastError = true, 名师资料总结 - - -精品资料欢

14、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - ThrowOnUnmappableChar = true) public static extern System.Int32 SgCoordRefSetXYClusterTol(IntPtr coordref, double xyTolerance); 调用过程代码:IntPtr coordref; / create coordinate system struct int res = SDEAPI.SE_coo

15、rdref_create(out coordref); /define coordinate system 4024 -> PE_GCS_KRASOVSKY_1940 (pedef.h) IntPtr pe_coordsys = SDEAPI.pe_factory_geogcs(4024); /set coordinate system res = SDEAPI.SE_coordref_set_coordsys(coordref,pe_coordsys); /set xy domain res = SDEAPI.SE_coordref_set_xy(coordref, -400, -40

16、0, 1000000000); /set tolerance res = SDEAPI.SgCoordRefSetXYClusterTol(coordref, 0.00000005); /set precision res = SDEAPI.SE_coordref_set_precision(coordref, 64); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - /create layerinfo struct IntPt

17、r layerinfo = new IntPtr(); res = SDEAPI.SE_layerinfo_create(coordref,ref layerinfo); res = SDEAPI.SE_layerinfo_set_coordref(layerinfo, coordref); /create table code CreateTable( . ); /set spatial column res = SDEAPI.SE_layerinfo_set_spatial_column(layerinfo, FeatureClassPro.FeatureClas sName, "

18、;SHAPE"); /set shape type res = SDEAPI.SE_layerinfo_set_shape_types(layerinfo,getShapeCode(FeatureClassPro.GeoMetryType); / set grid size res = SDEA 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - PI.SE_layerinfo_set_grid_sizes(layerinfo, 0.0, 0.0, 0.0); /final: create layer function res = SDEAPI.SE_layer_create(sdeConnection,layerinfo,0,0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁