利用ArcSde c Api 向sqlserver空间数据库实体图形-_第1页
利用ArcSde c Api 向sqlserver空间数据库实体图形-_第2页
利用ArcSde c Api 向sqlserver空间数据库实体图形-_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用ArcSDE C API向SQL SERVER空间数据库中添加实体图形收藏此页 打印【IT168知识库】 摘要:本文以一个C/C+实例分步讲述了利用ArcSDE C API向空间数据库中添加实体图形的方法。 利用ArcSDE8.1 C API向空间数据库中添加实体图形大致可分为六步。步骤如下: 第一步:与空间数据库建立连接。 SE_CONNECTION handle; /空间数据库连接对象 SE_ERROR Connect_error; /错误状态 LONG rc; /执行结果状态 CHAR server30 = "LCR" /空间数据库服务器名 CHAR instan

2、ce30 = "esri_sde" /空间数据库实例名 CHAR database30 = "" /数据库名 CHAR user30 = "sa" /用户名 CHAR passwd30 = "sapassword" /密码 /* 创建连接 */ rc = SE_connection_create( server, instance, database, user, passwd, &Connect_error, &handle; /*错误检查 */ check_error (handle, NULL

3、, rc, "SE_connection_create" 第二步:建立用户定义属性表。 LONG num_cols; /列数 SE_SHAPE shape; /形 SE_ENVELOPE rect; /矩形范围 LONG part_offsets2, int_val; CHAR *attrs; /属性列 CHAR column32, table32; /列与表 SE_COORDREF coordref; /坐标系引用 SE_POINT pt10; /坐标点 SE_LAYERINFO layer; /层信息 SE_COLUMN_DEF *column_defs; /列定义对象

4、 SE_STREAM stream; /数据流 /* 创建数据流连接 */ SE_stream_create (handle, &stream; check_error (handle, NULL, rc, "SE_stream_create" /* 创建用户表 */ strcpy(table, "MYTABLE" num_cols = 1; column_defs = (SE_COLUMN_DEF * calloc (num_cols, sizeof(SE_COLUMN_DEF; strcpy (column_defs0.column_name

5、, "ATTR_COL" column_defs0.sde_type = SE_INTEGER_TYPE; /为整形列 column_defs0.nulls_allowed = TRUE; /允许为空 rc = SE_table_create(handle, table, num_cols, column_defs,"DEFAULTS" check_error (handle, NULL, rc, "SE_table_create" 第三步:创建并设置图层信息。 /* 创建层的坐标系参考 */ rc = SE_coordref_cre

6、ate (&coordref; check_error (handle, NULL, rc, "SE_coordref_create" /设置假定坐标源点与比例尺 rc = SE_coordref_set_xy (coordref,0,0,10000; check_error (handle, NULL, rc, "SE_coordref_set_xy" /分配并初始化层信息结构layer rc = SE_layerinfo_create (coordref, &layer; check_error (handle, NULL, rc,

7、"SE_layerinfo_create" /设置层的格网尺寸、允许的形类型、创建关键字和空间列 rc = SE_layerinfo_set_grid_sizes (layer,1000,0,0; check_error (handle, NULL, rc, "SE_layerinfo_set_grid_sizes" rc = SE_layerinfo_set_shape_types(layer, SE_NIL_TYPE_MASK | SE_POINT_TYPE_MASK | SE_LINE_TYPE_MASK | SE_SIMPLE_LINE_TYPE

8、_MASK | SE_AREA_TYPE_MASK | SE_MULTIPART_TYPE_MASK ; check_error(handle, NULL, rc, "SE_layerinfo_set_shape_types" rc = SE_layerinfo_set_creation_keyword (layer, "DEFAULTS" check_error (handle, NULL, rc, "SE_layerinfo_set_creation_keyword" strcpy(column, "SPATIAL_CO

9、L" rc = SE_layerinfo_set_spatial_column (layer, table, column; check_error (handle, NULL, rc, "SE_layerinfo_set_spatial_column" /* 创建层 */ rc = SE_layer_create (handle, layer, 0,0; check_error (handle, NULL, rc, "SE_layer_create" 第四步:创建图形实体对象,并设置属性与空间列。 /* 创建形 */ rc = SE_shap

10、e_create (coordref, &shape; check_error (handle, NULL, rc, "SE_shape_create" /* 将表插入数据流 */ attrs = (CHAR * malloc (sizeof(CHAR * * 2; attrs0 = "ATTR_COL" attrs1 = column; rc = SE_stream_insert_table (stream, table, 2, (const CHAR* attrs; check_error (handle, NULL, rc, "S

11、E_stream_insert_table" free (attrs; /* 设置矩形的最值并产生矩形*/ rect.minx = 5000.0; rect.miny = 1000.0; rect.maxx = 8000.0; rect.maxy = 4000.0; /生成矩形 rc = SE_shape_generate_rectangle (&rect, shape; check_error (handle, NULL, rc, "SE_shape_generate_rectangle" /* 设定形和属性列 */ int_val = 2; rc =

12、SE_stream_set_integer (stream, 1, &int_val; check_error (NULL, stream, rc, "SE_stream_set_integer" rc = SE_stream_set_shape (stream, 2, shape; check_error (NULL, stream, rc, "SE_stream_set_shape" /*插入行 */ rc = SE_stream_execute (stream; check_error (NULL, stream, rc, "SE

13、_stream_execute" /* 对面域设定坐标数组 一个中间有洞的矩形,并生成多边形 */ part_offsets0 = 0; pt0.x = 1000.; pt0.y = 1000.; pt1.x = 4000.; pt1.y = 1000.; pt2.x = 4000.; pt2.y = 4000.; pt3.x = 1000.; pt3.y = 4000.; pt4.x = 1000.; pt4.y = 1000.; pt5.x = 2000.; pt5.y = 2000.; pt6.x = 2000.; pt6.y = 3000.; pt7.x = 3000.; p

14、t7.y = 3000.; pt8.x = 3000.; pt8.y = 2000.; pt9.x = 2000.; pt9.y = 2000.; /生成多边形 rc = SE_shape_generate_polygon (10,1,part_offsets,pt,NULL,NULL,shape; check_error (handle, NULL, rc, "SE_shape_generate_polygon" /* 设定形及属性列 */ int_val = 3; rc=SE_stream_set_integer (stream, 1, &int_val; check_error (NULL, stream, rc, "SE_stream_set_integer" rc = SE_stream_set_shape (stream, 2, shape; check_error (NULL, stream, rc, "SE_stream_set_shape" /* 插入行 */ rc = SE_str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论