做测绘和GIS的兄弟,谁没被DXF转GeoJSON或者GeoTIFF搞崩溃过?昨天有个刚入行的小伙子找我,说导出来的图全是乱码,坐标偏移了几百米,急得直跳脚。其实这事儿真不怪他,怪就怪在很多人以为这就是个简单的格式转换,跟把Word转PDF一样简单。大错特错!DXF是CAD的格式,Geo系列是GIS的格式,这俩底层逻辑根本不一样。CAD是笛卡尔坐标系,讲究的是相对位置,哪怕你偏移一公里,它也不在乎;但GIS是地理坐标系,经纬度差一秒,地面上就差好几米。
我干了十年地信,见过太多人为了省事,直接拿个在线转换网站,上传文件,下载结果,完事。结果呢?属性全丢,图层混乱,更别提投影参数了。我就说句得罪人的话,那些免费的小工具,能帮你把图弄出来就算烧高香了,想用来做正式项目?趁早别想。
先说价格。现在市面上靠谱的DXF转Geo服务,如果是小批量,比如几百个文件,找外包团队或者用专业插件,单个文件大概5到10块钱。别贪便宜,有些骗子收你几毛钱,转完给你一堆垃圾数据,最后还得你花几百块去清洗。要是大批量,比如几万个地块,那就得定制脚本了,价格大概在0.01到0.05元每面,具体看复杂度。记住,数据清洗的成本往往比转换本身还高,别省这点小钱,最后哭的是你自己。
再说说避坑。第一个坑,坐标系。这是最致命的。很多DXF文件里压根没写投影信息,或者写的是假的。你直接转,出来的图可能就在南极或者非洲。解决办法:在转之前,先用ArcGIS或者QGIS打开DXF,手动指定正确的投影坐标系,比如CGCS2000或者WGS84。别偷懒,这一步省不得。
第二个坑,图层和属性。CAD里的图层是给人看的,GIS里的属性表是给机器用的。很多DXF文件里,图层名乱七八糟,有的叫“Layer1”,有的叫“墙体”,转成GeoJSON后,属性字段全乱套。我的经验是,在CAD里先把图层整理好,命名规范,比如“道路_红线”、“建筑_轮廓”,这样转出来的数据才干净。要是懒得整理,那就准备好花三天时间写Python脚本去清洗数据,累死你。
第三个坑,精度丢失。CAD是浮点数,精度极高;GIS有时候为了性能,会简化数据。转的时候,一定要检查节点数。我有一次帮客户转一个小区的地块,结果发现每个多边形的节点都少了几个,面积对不上。后来查了半天,发现是转换软件的简化阈值设得太高了。所以,转之前,把简化参数调到最低,宁可数据量大点,也别丢细节。
说个真事儿,上个月有个做不动产登记的,非要赶工期,让我帮忙转一批DXF。我没用现成的软件,而是写了个Python脚本,用GDAL库,手动指定了EPSG:4490。结果转出来,误差控制在厘米级。客户当时就惊了,说以前用的软件偏移好几米。你看,这就是专业和业余的区别。
最后,给点真心建议。如果你只是随便看看图,用QGIS免费转就行,虽然慢点,但免费。要是为了出报告、做项目,别犹豫,买正版插件或者找专业的人做。别信那些“一键转换”的广告,那都是骗小白的。还有,转完一定要检查!一定要检查!用QGIS打开,看看属性对不对,坐标对不对,别等出了问题再后悔。
要是你还搞不定,或者怕踩坑,可以私信我,我帮你看看你的DXF文件有没有问题。别不好意思,谁还没个不会的时候呢?关键是别在同一个坑里摔两次。
本文关键词:dxf转geo