钻表表示

当从SDE读取数据时,不需要定义源表。在写入现有表时也是如此。但是,如果SDE编写器要创建表,那么必须提供定义。这是真的,即使表已经存在SDE_DROP_TABLE参数设置为“是”。在FME映射文件中,SDE表使用< WriterKeyword > _DEF语句,而在Workbench中,它们是通过添加目标特性类型来定义的。

在创建新表时,重要的是要理解创建哪种类型的表的决定不是基于DEF行本身,而是基于写入表的第一个特性。这意味着,如果第一个特性不包含几何图形,那么将创建一个业务表(没有空间列);如果第一个特性包含向量几何,那么将创建一个特性类(业务表+层);如果第一个特征包含栅格几何,那么栅格地图或栅格目录将被创建。DEF行的目的是指定表是什么样子的。

如果表已经存在于数据库中(并且用户没有使用SDE_DROP_TABLE参数),则其模式不会被更改。唯一的例外是,当第一个特性(在翻译中)写入到预先存在的业务表时,包含向量几何和指令ADD_LAYERS_TO_EXISTING_TABLES设置为Yes或未指定。在这种情况下,将向业务表添加一个层。这一层的添加将业务表变成一个特性类。如果SDERASTERMAP写入器用于写入现有的光栅目录,或SDERASTERCATALOGWriter用于写入现有的栅格映射,翻译将失败。

要使用FME定义一个没有空间列或栅格列的简单表,定义如下:

< WriterKeyword > _DEF <表名> \
(< columnName > < columndef >)

这里给出了表定义的一种更通用的格式——其中可以定义空间列和属性索引。

< WriterKeyword > _DEF <表名> \ [< columnName > < columndef >] * \ [ [ SDE_INDEX < indexName > \ SDE_INDEX_CONFIG < configKeyword > \ SDE_COLUMN_NAME < columnName >, < columnName >] * \ SDE_UNIQUE <真|假| |否> \ SDE_SORT_ORDER提升|下]* \ [SDE_UPDATE_FIELDS < columnName >, < columnName >] * \ [SDE_STORAGE_TYPE < SDE_BINARY | WKB SQL | |规范化>)SDE_LAYER < spatialColumnName > \ [SDE_COORD_SYS_ID < coordSysID # >] \ [SDE_COORD_SYS_DESCRIPTION <描述>]\ [SDE_PRECISION 32 | < 64 >] \ SDE_GRID {0} < grid0size > \ [SDE_GRID {1} < grid1size >] \ [SDE_GRID {2} < grid2size >] \ SDE_DIMENSION < 2 | 3 > \ [SDE_CONFIG_KEYWORD < configKeyword >] \ SDE_MEASURED <是的|不> \ SDE_ANNOTATED <是的|不> \SDE_AREA <是的|不> \ SDE_LINE <是的|不> \ SDE_POINT <是的|不> \ SDE_SIMPLE_LINE <是的|不> \ SDE_NIL <是的|不> \ SDE_MULTIPART <是的|不> \ SDE_CAD <是的|不> \ SDE_DROP_TABLE <是的|不> \ SDE_TRUNCATE_TABLE <是的|不> \ SDE_XORIGIN < minimum_x > \ SDE_YORIGIN < minimum_y > \ SDE_SCALE <规模> \ SDE_ZORIGIN < minimum_y > \SDE_ZSCALE  \ SDE_MEASURED_ORIGIN  \ SDE_MEASURED_SCALE  \ SDE_TOLERANCE  \ SDE_MEASURED_TOLERANCE  \ SDE_ZTOLERANCE  \ [SDE_DESCRIPTION ] \ [SDE_MINIMUM_FID ]]

表定义的另一种通用格式包括栅格列的定义。这里给出了一个栅格映射的例子。

注意:注意:在创建新的栅格映射表期间,写入器将创建一个名为NAME的ArcSDE保留列。这个附加的列将被创建并使用值ESRI_SDERASTERDATASET填充。对于光栅编目,此列是可选的,默认情况下使用表中每一行的fme_basename属性值填充。

< WriterKeyword > _DEF <表名> \ [< columnName > < columndef >] * \ [SDE_COORD_SYS_ID < coordSysID # >] \ [SDE_COORD_SYS_DESCRIPTION <描述>]\ [SDE_CONFIG_KEYWORD < configKeyword >] \ SDE_RASTER < rasterColumnName > \ [SDE_COMPRESS_TYPE <没有| LZ77 | JPEG |如JPEG2000 >] \ [SDE_PYRAMID_INTERPOLATION <没有| NEAREST_NEIGHBOR |双线性|双三次的>]\[SDE_PYRAMID_LEVEL_TYPE <没有|汽车|自定义>]\ [SDE_PYRAMID_MAX_LEVEL < maxLevel >] \ [SDE_RASTER_STATS_TYPE <没有|汽车>]\ [SDE_DESCRIPTION > <光栅描述]\ [SDE_DROP_TABLE <是的|不> \]\ [SDE_TRUNCATE_TABLE <是的|不> \]\ [SDE_COMPRESS_COLORMAP <是的|不> \]\ [SDE_RASTER_MOSAIC_MODE <没有| |删除>合并)

栅格目录的表定义包括用于创建空间(足迹)列的附加参数。

注意:如果为还不存在的表给出了表定义,并且定义中定义的唯一列是空间列或栅格列,那么写入器将创建一个由ArcSDE维护的对象ID列,调用OBJECTID.这个额外的列将被创建,因为ArcSDE不允许表只包含一个空间/栅格列。

< WriterKeyword > _DEF <表名> \ [< columnName > < columndef >] * \ [SDE_COORD_SYS_ID < coordSysID # >] \ [SDE_COORD_SYS_DESCRIPTION <描述>]\ [SDE_CONFIG_KEYWORD < configKeyword >] \ SDE_RASTER < rasterColumnName > \ [SDE_COMPRESS_TYPE <没有| LZ77 | JPEG |如JPEG2000 >] \ [SDE_PYRAMID_INTERPOLATION <没有| NEAREST_NEIGHBOR |双线性|双三次的>]\[SDE_PYRAMID_LEVEL_TYPE <没有|汽车|自定义>]\ [SDE_PYRAMID_MAX_LEVEL < maxLevel >] \ [SDE_RASTER_STATS_TYPE <没有|汽车>]\ [SDE_DESCRIPTION > <光栅描述]\ [SDE_MINIMUM_FID < minimumFidNumber >] \ [SDE_DROP_TABLE <是的|不> \]\ [SDE_TRUNCATE_TABLE <是的|不> \]\ [SDE_XORIGIN < minimum_x >] \ [SDE_YORIGIN < minimum_y >] \ [SDE_SCALE< >规模)