昨天半夜两点,客户老张在微信上炸毛了。说他把CAD导出来的图纸转成GIS数据后,坐标全乱了,原本在城东的项目,跑到了城西的河里。我一看截图,差点没把刚喝进去的咖啡喷出来。这种低级错误,我干了7年geo行业,见得多了。今天不整那些虚头巴脑的理论,就聊聊怎么把dxf转换geo这事儿办漂亮,别让你辛辛苦苦画的图,最后变成一堆垃圾数据。
很多人以为,dxf转换geo就是点个按钮的事儿。太天真了。CAD和GIS底层逻辑根本不一样。CAD是笛卡尔坐标系,它不管地球是圆的还是方的,只管你画得直不直。而GIS,尤其是GeoJSON这种格式,它得认经纬度,得认投影。你直接把CAD里的X,Y当成经纬度扔进去,那就是在犯罪。
我有个真实案例。去年帮一家园林公司做数据清洗。他们给了一堆dxf文件,说是“绝对坐标”。结果我打开一看,单位是毫米,坐标值大得离谱,像是把北京的位置直接当米数用了。如果直接转换,整个图层会跑到太平洋去。这时候,你得先做“配准”。找两个已知控制点,算出平移量和缩放比例。这一步,软件自动跑不准,必须人工介入。别偷懒,偷懒的代价是返工,返工的成本比人工高十倍。
再说说投影问题。这是90%的人踩坑的地方。dxf文件本身不带投影信息,它只是一堆线条。当你执行dxf转换geo时,必须明确告诉软件:这些坐标属于哪个投影带?是高斯-克吕格3度带,还是6度带?如果是WGS84经纬度,那还得做坐标转换。我见过太多人,直接默认是WGS84,结果生成的geojson文件,打开后地图是一片空白,或者点都挤在一个像素点上。
还有属性丢失的问题。CAD里的图层、颜色、线型,在转成geojson时,大部分会丢失。因为geojson只认key-value对。如果你需要保留这些信息,得在转换前,把CAD里的属性表整理好,或者用插件把图层名映射到geojson的properties里。不然,你拿到手的数据,就是一堆没有灵魂的线条,根本没法做后续的空间分析。
怎么避坑?我有三条建议。第一,先检查单位。打开CAD,输入“UNITS”命令,看看单位是米还是毫米。如果是毫米,转geojson前必须除以1000。第二,确认坐标系统。问清楚画图的人,这个图是在哪个坐标系下画的。如果不知道,就找个当地的地标,反向推算。第三,小批量测试。别一次性转几百个文件。先转一个,打开QGIS或ArcGIS看看位置对不对。对了,再批量跑。
我常跟新人说,技术是死的,人是活的。dxf转换geo不是目的,拿到准确、可用的空间数据才是目的。别迷信自动化,有时候手动调整几个关键点,比跑半小时脚本都管用。
最后,如果你手头有这种头疼的数据,或者搞不定坐标转换的鬼故事,别自己死磕。找个懂行的帮你看一眼,可能几分钟就解决了。毕竟,在这个行业,经验比软件值钱多了。有问题的,可以来聊聊,我不一定免费,但一定给你指条明路。
本文关键词:dxf转换geo