ArcPy之预处理(CAD文件转SHP,定义投影,显示标注)

CAD文件导入arcmap后,有5个子文件

转换思路:

1、建立数据库

2、将CAD文件导入数据库

3、要素类转SHP

4、MultiPatch一般不能完全绘制,需要修复几何,删除空白要素

5、批量定义投影

6、将SHP文件显示到数据视图窗口

7、显示Annotation图层的标注

8、将脚本导入工具箱

arcpy可以在arcmap界面自带的python窗口,或者下载arcmap同时下载的idle中写代码。

使用的是arcmap10.2和python2.7版本

在引用arcpy和定义工作空间后,1、建立数据库:

# Import system modules
import os
import sys
import arcpy

# 设置工作空间,路径尽量使用\,或者//,使用\的路径最后一个\会不识别
env.workspace = r"C:\..."
# 设置文件地理数据库输出路径,输出名
out_folder_path = r"C:\..."
out_name = "myfgdb.gdb"

# Execute CreateFileGDB
arcpy.CreateFileGDB_management(out_folder_path, out_name)

2、CAD导入数据库

# Name: CADtoGeodatabase.py
# Description: Create a feature dataset
# Import system modules
import arcpy

# Set workspace
arcpy.env.workspace = "C:/..."
# dwg集合的路径
input_cad_dataset = "C:/.../Data.DWG"
#输入要用作注记参考的比例。注记中的所有符号及文本的大小都会参考此处设置的参考比例。默认为1000
reference_scale = "1000"
#可选的空间参考,按需求可以改变,若不确定,则删除下面一行,在功能中的空间参考有默认值
spatial_reference = "NAD_1983_StatePlane_California_VI_FIPS_0406_Feet"

# 执行前提是存在数据库,空间参考一般默认,可以改,不能删,不能“”,{}代替
arcpy.CADToGeodatabase_conversion(input_cad_dataset, 数据库的路径, 
                                  数据库的名, reference_scale)

3、要素类转SHP

#inFeatures是输入要素类或要素图层的列表,是集合,批量操作
#outLocation是自定义输出SHP的文件夹路径
arcpy.FeatureClassToShapefile_conversion(inFeatures, outLocation)

4、修复几何

arcpy.RepairGeometry_management("需要修复的图层的路径")

5、批量定义投影

import arcpy
#将进行处理的图层路径
infc = r"C:\...\Data.shp"
#投影的坐标系,可以直接引用坐标系名称,或者自定义坐标系
sr = arcpy.SpatialReference("NAD 1983 UTM Zone 11N")

#自定义的坐标系,选其一,详细参数可以百度,无非是参考椭球,投影方法,中央子午线,是否偏移
sr = "PROJCS['坐标系名称',GEOGCS['坐标系名称',DATUM['D_China_2000',SPHEROID['CGCS2000',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Gauss_Kruger'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',117.0],PARAMETER['Scale_Factor',1.0],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]"

#实现批量操作,加一个for
arcpy.DefineProjection_management(infc, sr)

6、将SHP文件显示到数据视图窗口

import arcpy
#输入mxd文件路径,这里绝对路径容易出错,建议打开arcmap后,使用"current",大小写都行
mxd = arcpy.mapping.MapDocument(r"C:\...\Data.mxd")
#df是数据框,打开arcmap(汉化)默认是"图层",[0]是第一个此命名的图层
df = arcpy.mapping.ListDataFrames(mxd, "图层")[0]
#添加的图层路径
addLayer = arcpy.mapping.Layer(r"C:\...\Data.lyr")

#AddLayer是唯一一个能够向空数据框添加图层的函数
#第三个参数是AUTO_ARRANGE —自动放置图层、BOTTOM —在数据框底部放置楼层、TOP —在数据框顶部放置图层。默认为AUTO_ARRANGE,是根据点线面放置
arcpy.mapping.AddLayer(df, addLayer, "BOTTOM")

7、显示Annotation图层的标注

图层有这个属性,只需要选中图层,然后=True:

import arcpy.mapping as mapping

#mxd和df为地图和数据框路径的变量,选择图层为以A开头的图层,此为图层集
layers = mapping.ListLayers(mxd,'A*',df)

#for循环选择图层集中一层,标注bool打开true
ly.showLabels=True

8、将脚本导入工具箱

注:脚本应为py文件,在脚本中的路径变量改为arcpy.GetParameterAsText(0),才能在arcmap里成功生成窗口,自定义参数:

脚本中设置了几个arcpy.GetParameterAsText(0),可以在这设置几个变量名称和类型

最后,设置为通用功能:如

如果有任何问题或者更好的解决方法,欢迎讨论

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过多个方法将CADshpg格式 CADshp经常出现的问题是丢失属性数据,利用以下方法可以解决丢属性的问题: ① 把CAD存放目录和文件名全部改成英文,并且注意不能出现如:"-"、"/"等特俗字符,否则不能生成shp文件或者丢失属性数据; ② 打开ArcMapArcToolbox—Conversion Tools—To Shapefile 弹出对话框操作即可。 CAD中DWG格式换成SHP文件的方法默认分类 2009-05-13 08:18:58 阅读1069 评论1 字号:大中小 订阅 . 1.先换为dxf格式,再用国产软件中地MapGIS,为WT文件MapGIS点文件)再注记属性,再用MapGISshp的点文件,文字在点文件属性中。在MAPGIS里,“文件换”菜单中有个“选择”菜单,里面有个“压缩存盘”的功能。把MAPGIS数据导进去后用数据压缩保存数据,然后再输出SHP就基本不丢失数据了。 2.ArcGIS9.2集成了FME, 集成在arctoolbox中的数据交互模块(Data Interoperability Tools)中 , 换后可能坐标系不正确。 3.用工具FME2008版,设置源的坐标系为Unknown,然后设置目标的坐标系,换后坐标还是原来的坐标. 4.首先将CAD数据的dwg格式保存为dxf格式,(mapgis-文件换-输入DXF-输出SHP)用MapInfo Professional把dxf成tab文件,然后利用MapInfo的通用换器将tab文件换成shape文件,其中注记无法换,而且换时要注意坐标系是否正确. 5.把dwg另存为dxf,直接在arccatalog中直接点击右键export为shpCAD数据ARCGIS数据(SHP格式)技术中心 2010-06-24 14:33:43 阅读85 评论0 字号:大中小 订阅 .  如果希望在ArcGIS中读取CAD文件时是简单明了而非杂乱无章的,那么就需要先在CAD环境下进行简单的数据处理: 1、删除不需要的图形:只保留需要的图形,让文件精简一点,有的图层不需要,应该全部删除。 2、编辑有明显错误的图形:实际上在ArcGIS9.2中读取CAD文件时,一些交叉的线段将不会显示,非PL线段即使是封闭的也无法构成面。所以应该先令一些明显没有闭合的PL线闭合,打断交叉的线段,并删除一些无用的线段。 3、数据初步分层:将同一类型的数据保存到一个文件中,其中等高线为一个图层,高程点为一个图层,需要构成面状的地物和注记为一个图层,保证每读取一个CAD文件时不会有额外的难以辨别的信息。    选择将CAD文件换为shapefile文件的方法,以高程点文件为例: 启动ArcMap,点击“Add Data”按钮,添加高程点文件的Point类型,右键点击添加的图层,选择“Data”下的“Export Data”弹出对话框,设置“Export”为“All Features”,输出的文件路径和名字可以进行重新设置,点击“OK”完成换。 cad文件dwg格式 ArcGIS shp格式完整过程 1、cad文件有很多层,而我们只想要其中的某一层或几层 在层管理器中删除,常弹出不让删除的对话框 解决方案如下: 在cad中打开dwg或者dxf文件, 在文件菜单中选择另存为 格式选择为dxf,在保存对话框右上角选择工具/选项/dxf选项 将选择对象勾选 点击保存 再在试图中选中所要的对象,回车即可 2、将dxf文件另存为dwg格式 3、arcmap中dwg和shp格式间换经常丢失大量信息 最好是在mapgis中换 具体如下: 图像处理/文件换 输入菜单/添加dwg文件 输出菜单/shp文件 CAD规划图换为MapInfo Tab以及ESRI shp格式数据 技术方案 最近因为项目的需要,需要将规划图中的内容配准到具有标准地理坐标系(WGS84)的地图上面,经过多次尝试,走过不少弯路后,终于找到了一个比较切实可行的方法。 在这里写出来,与大家讨论。 大家都知道,1:10000的电子地图数据(WGS84),我们可以通过购买得到。但是规划部门的规划图通常都是CAD格式的,如果要将他们集成到一起,数据换是必不可免的。一般情况下,CAD规划图在绘制时,都参照了某个坐标系,所以我们在换的时候,只要确定好控制点就行了。 废话少说,下面我把基本流程叙述一下,其中的部分步骤也是参照网友的成功经验。 1、将CAD规划图(*.dwg)换为AutoCAD R12/13格式的dxf文件。 一般情况来讲,利用AutoCAD或者Autodesk Map的另存为就可以完成该步骤,但是我在实际操作中,发现保存为低版本的dxf文件时,CAD老是未响应,然后死掉了。 在这里推荐Amethyst CADWizz 软件,下载地址http://www.cadwizz.com/,虽然是试用版,不过并不影响我们进行文件换,呵呵。很好用。换为R13/R12格式的DXF文件即可。 2、利用mapinfo中的import功能 换之前,首先应当知道图形中两个点的精确的平面直角坐标值及其经纬度坐标值。这两个点最好位于图形的左下角和右上角附近。 当利用Mapinfo所提供的“导入表”功能,将AutoCAD的dxf文件Mapinfo中打开时,Mapinfo能对该dxf文件重新设置投影、并进行坐标换。如果dxf图形文件中包含了属性信息,则在换过程中Mapinfo可将原来的属性信息同时入到Mapinfo中。 选择所要生成的新地图文件投影方式,输入dxf图形文件中两点的平面坐标值及其对应的经纬度坐标值。按“确定”后,Mapinfo 便会自动将非地球投影的dxf图形文件化成地球投影Mapinfo地图,并使地图定位到相应的地球空间中,以使地图上的空间对象具有实际的经纬度坐标值。 如果用户的dxf图形文件上的所有图形对象已经具有了与地球投影下的经纬度坐标相等的平面直角坐标值,则换过程将更简单,只需要将dxf图形文件投影改变成Mapinfo的地球投影就可以 3、import过程中进行投影换,并确定控制点。 4、处理ing。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值