摘要
使用高度规范化的预定义方案将 CAD 文件的集合转换为要素类和数据表,以便进一步转换为 GIS 数据。
输出将存储在临时过渡地理数据库中。然后,可使用地理数据库或执行进一步后处理。
用法
默认情况下,此工具将输出文件地理数据库,但如果用户已定义适当的扩展名,则此工具还将输出个人地理数据库。
一组固定的要素类将在指定的输出要素数据集中生成。这些要素类包含线、面、点几何和文档范围,还可以针对每个唯一的块或单元格名称生成点要素类。
此工具将创建新的地理数据库,而不会追加到现有地理数据库。
如果需要执行任意数据或关系的连接,则需进行后处理。输出数据来自 CAD 输入,且不存在任何关系。展平结构使其可以根据需要复原。
输入文件参数允许在一次操作中添加多种 CAD 数据(DGN、DWG 和 DXF)。
CAD 属性表在输出工作空间中创建。可使用关键字段(例如也可在“导入 CAD”工具创建的要素类中找到的 EntID)将这些规范化表链接到一起。
如果输出要素数据集或工作空间中的表与“导入 CAD”创建的表具有相同的名称,则将删除此表并重新创建。
“从 CAD 导入”工具不支持创建注记要素类。
可使用选择数据工具从模型或脚本中的输出工作空间访问 CAD 属性表。同样,可使用输出要素数据集中的“选择数据”工具访问通过 CAD 数据生成的要素类。
CAD 文本和属性实体会转换为点要素。
“从 CAD 导入”无法输出到 ArcSDE 要素类;它将创建新的个人地理数据库。
如果要将 CadDoc 要素类中的 DocPath 字段或 TxtProp 表中的 TextMemo 字段从过渡地理数据库复制到 ArcSDE 地理数据库中,则需注意某些限制。CadDoc 要素类中的 DocPath 字段和 TxtProp 表中的 TextMemo 字段均带有备注字段,该字段过长,不适合 ArcSDE 地理数据库。有关 ArcSDE 地理数据库限制的信息,请咨询您的系统管理员。上述字段中的部分信息会复制到其他字段中。这些字段的长度更短,因此可将其移动至 ArcSDE 地理数据库。DocName 字段包含部分 DocPath 字段,TextValue 字段包含部分 TextMemo 字段。
使用脚本或模型构建器模型中的一系列其他地理处理函数将 CAD 数据转换到现有地理数据库中时,通常使用此函数,此函数生成的数据通常为临时数据。
规范化表在指定的输出工作空间中生成。这些表包含图层属性、文本属性、实体属性、块或单元属性的表格属性以及扩展实体数据或 MSLink 值。
如果存在输入 CAD 文件的投影文件,则会使用此投影信息自动填充空间参考参数。如果将多个 CAD 文件用作输入,则会从在输入列表中具有投影文件的第一个 CAD 文件中获取空间参考。
生成过渡地理数据库的默认空间参考时,应始终使用 CAD 文件默认模型的范围作为基础。这表示如果存在位于 CAD 字段默认范围之外的实体,则可将其拒绝。确保在 DGN 工程图中将范围最大的模型用作默认模型。仅 MicroStation 版本 8 支持在单个设计文件中使用多个模型。
如果 DGN 文件具有多个模型,请确保第一个模型具有最大的域。“从 CAD 导入”会根据第一个模型计算整个 DGN 文件的域。如果不是这样,请务必对第一个模型中的域进行扩展,使其足以包含所有模型。
如果使用 PRJ 文件作为空间参考参数,请务必设置 x,y,z 域。如果不设置域,则在某些要素落在动态计算域之外的情况下,可能导致无法导入这些要素。
如需将 CAD 注记转换为地理数据库注记,可使用导入 CAD 注记等特定工具。
语法
ImportCAD_conversion (Input_Files, out_personal_gdb, {spatial_reference}, {Explode_Complex})
参数 | 说明 | 数据类型 |
Input_Files [Input_Files,...] | 要转换为地理数据库要素的 CAD 文件的集合。 | CAD Drawing Dataset |
out_personal_gdb | 用于放置所有输入 CAD 要素和随附表的新输出地理数据库。如果需要表或要素的连接,则需进行后处理。 | Workspace |
spatial_reference (可选) | 要应用至输出过渡地理数据库的空间参考。 | Spatial Reference |
Explode_Complex (可选) | 指定将块插入 DWG 还是 DXF 和/或 DGN 中的单元会为复杂对象中的每个构成元素都创建一个要素,还是只在其定义的插入点处创建单个点要素。
| Boolean |
代码示例
# To create Points from the CAD block inserts.
# Create the Geoprocessor object
import arcgisscripting
gp = arcgisscripting.create()
# Script arguments...
blocks = sys.argv[1]
if blocks == '#':
blocks = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb/blocks"
# provide a default value if unspecified
res00051_pc22j_dwg = sys.argv[2]
if res00051_pc22j_dwg == '#':
res00051_pc22j_dwg = "C:/Test_data/CAD/MetroGAS/res00051_pc22j.dwg"
# provide a default value if unspecified
Select_Set_Name = sys.argv[3]
if Select_Set_Name == '#':
Select_Set_Name = "[SetName] = 'COD_90_50M'"
# Local variables...
Pivoted_AttrTags_by_OwnerID = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb/Attrib_PivotTable"
Attrib_Table = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb/Attrib"
Entities_Table = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb/Entity"
joined = "joined"
Output_Staging_Geodatabase = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb"
points_new2 = "points_new"
Point = "C:/Test_data/CAD/MetroGAS/res00051_pc22j_ImportCAD1.mdb/CADStaging/Point"
points_new = "points_new"
points_new3 = "points_new"
try:
# Process: Import from CAD...
gp.ImportCAD_conversion("'C:/Test_data/CAD/MetroGAS/res00051_pc22j.dwg'", Output_Staging_Geodatabase, "", "Do_Not_Explode_Complex")
# Process: Select Data...
gp.SelectData_management(Output_Staging_Geodatabase, "CADStaging/Point", )
# Process: Make Layer...
gp.MakeFeatureLayer_management(Point, points_new, "", "", "EntID EntID VISIBLE")
# Process: Select Data (Entities Table)...
gp.SelectData_management(Output_Staging_Geodatabase, "Entity", )
# Process: Add Join...
gp.AddJoin_management(points_new, "EntID", Entities_Table, "EntID", "OUTER", )
# Process: Select Data (Attrib Table)...
gp.SelectData_management(Output_Staging_Geodatabase, "Attrib", )
# Process: Make Table View...
gp.MakeTableView_management(Attrib_Table, joined, Select_Set_Name, "", "EntID EntID VISIBLE;OwnerID OwnerID VISIBLE;AttrFlag AttrFlag VISIBLE;MSSet MSSet VISIBLE;AtrTag AtrTag VISIBLE;AtrHndl AtrHndl VISIBLE;AttrType AttrType VISIBLE;AttrStr AttrStr VISIBLE;AttrLong AttrLong VISIBLE;AttrDbl AttrDbl VISIBLE")
# Process: Pivot Table...
gp.PivotTable_management(joined, "'Attrib.OwnerID';'OwnerID'", "AttrTag", "AttrStr", Pivoted_AttrTags_by_OwnerID)
# Process: Add Join2...
gp.AddJoin_management(points_new2, "Point.EntID", Pivoted_AttrTags_by_OwnerID, "OwnerID", "INNER", )
# Process: Copy Features...
gp.CopyFeatures_management(points_new3, blocks, "", "0", "0", "0")
except:
# If an error occurred while running a tool print the messages
print gp.GetMessages()
环境
许可信息
- ArcGIS Desktop Basic: 是
- ArcGIS Desktop Standard: 是
- ArcGIS Desktop Advanced: 是