做测绘这行第七年,今天又被一个刚入行的小兄弟问烦了。他拿着个几百兆的.dat文件,在软件里打不开,急得满头大汗,问我怎么转成GeoJSON或者Shapefile。我盯着他屏幕看了半天,发现他居然在找什么“在线转换网站”。我差点把咖啡喷出来。
咱们干Geo这一行的,心里得有点数。DAT文件,很多时候不是单一格式,它是各种测量仪器(比如全站仪、RTK)导出的原始数据。有的里面是坐标,有的是属性,有的连头信息都没有。你指望一个通用的在线工具,能精准识别你手里这个特定仪器吐出来的乱码?这概率比中彩票还低。
记得09年我刚入行那会儿,导师扔给我一堆老式GPS导出的dat,让我转成ArcGIS能用的shp。那时候没现在这么多花里胡哨的插件,我就老老实实用Excel打开。对,你没听错,Excel。
先把.dat文件拖进Excel,用“数据-分列”功能,按空格或者逗号切开。这时候你会看到一堆数字,X、Y、Z,还有可能有的点没有Z值。这一步最磨人,因为不同厂家的数据,列的顺序可能完全不一样。有的把点名放在第一列,有的把高程放在最后。你得一个个去对,稍微手抖一下,坐标就错位了,到时候在地图上点位飘到海里去,你还得排查半天。
我有个客户,去年为了赶项目,用了个号称“智能转换”的付费软件。结果导出来的GeoJSON,经纬度反了,经度当纬度用。虽然肉眼看不出来,但一旦叠加底图,整个项目区域都偏了十几公里。最后不得不重测,损失了几万块。这就是盲目信任工具的代价。
现在2024年了,方法其实更简单,但也更考验基本功。如果你懂Python,写个简单的脚本,用pandas读取dat,指定分隔符,然后调用geopandas转成GeoJSON,只要半小时。而且脚本是你自己写的,逻辑清晰,出错能改。如果你不懂代码,那就用QGIS。
QGIS里有个“加载 delimited text layer”的功能。关键点来了:别急着点确定。先在预览里看坐标范围。如果你的数据是西安80或者北京54,别直接当WGS84加载,否则位置全错。在坐标系设置里,手动指定对应的投影坐标系。这一步,网上很多教程都跳过了,导致很多人转完发现点都挤在一起或者不在中国境内。
说到dat格式如何转换geo格式,其实核心不是“转换”,而是“解析”。你要先搞清楚这个dat是谁生的,格式规范是什么。有些dat文件其实是CSV改的后缀,直接改后缀名就能用Excel打开。有些则是二进制,那就得找厂家要解码文档。
我见过最离谱的情况,有人把CAD导出的dat直接当坐标数据转,结果里面混入了图层名、颜色代码,转出来的GeoJSON全是乱码。所以,预处理永远比转换本身重要。
别嫌麻烦,别想着走捷径。地理信息数据,差之毫厘谬以千里。你省下的那十分钟找工具的时间,最后可能要用几天时间去修正错误数据来还。
最后说句掏心窝子的话,dat格式如何转换geo格式,真的没有银弹。多问一句数据源头,多核对一遍坐标系统,比什么黑科技都管用。下次再有人问你,别直接给链接,让他先把数据拿给你看一眼,说不定能发现他连文件头都没删干净呢。
这行干久了,你会发现,最笨的方法,往往最靠谱。毕竟,地图上的每一个点,背后都是真金白银和汗水,容不得半点虚假。希望这篇干货,能帮你省下点加班熬夜的时间。