刚入行GIS那会儿,我真是被这个geo文件整惨了。
那时候不懂规矩,拿着客户发过来的一大包数据,全是那些奇奇怪怪的后缀。有个哥们甩给我一个geo文件,我双击打开,嘿,系统提示未知关联程序。当时我脸都绿了,心想这客户是不是故意整我?或者我电脑中毒了?
后来请教了个老法师,才晓得geo这种格式,虽然听着像通用的几何数据,但很多时候它是某些特定GIS软件的私有缓存,或者是从Shapefile、GeoJSON转换过来的一种中间状态。要想真正看懂它,你得对症下药。
我就直接说干货吧,别整那些虚头巴脑的理论。你遇到geo格式可以用什么软件打开这个问题,按下面这几个路子走,基本上能解决90%的 case。
第一步,先判断来源。
这个文件你是从哪儿弄来的?如果是从AutoCAD导出的,或者是一些工程软件里弄出来的,那它大概率是DXF或者DWG的变种,虽然后缀叫geo,但结构可能是基于矢量的。这时候,你用AutoCAD打开试试。
真的,别嫌弃这个土办法。很多老工程师手里存的地理数据,都是几十年前用CAD画的,转成geo后,直接用CAD看最直观。图层、线型、属性表,一目了然。要是打不开,说明可能被加密或者是压缩包。这时候你得去问源头要解压密码,或者找找有没有配套的.dxf文件一起打包了。
第二步,尝试用专业GIS软件暴力解析。
如果你用的是ArcGIS或者QGIS,别急着新建项目,直接拖拽。把那个geo文件拖进QGIS的图层面板里。QGIS是开源的,包容性极强。我记得有次客户发来个geo文件,ArcMap死活加载失败,报错说是数据错误。我换成QGIS 3.0版本,竟然直接读出来了!原来那个文件的坐标系定义有点歪,QGIS会自动弹窗让你选坐标系,选对WGS84或者北京54,地图瞬间就出来了。
这里有个小坑。有时候你拖进去,地图是空的。别慌,看看下面的图层列表,数据可能有,但是缩放级别不对。你双击那个图层,点“缩放到图层”,如果还是空白,检查下投影参数是不是缺失。geo格式可以用什么软件打开?QGIS绝对是首选备选方案。
第三步,转换格式,一劳永逸。
其实吧,_geo这种格式在交换数据时真的很尴尬。它既不是标准的GeoJSON,也不是Shapefile。我建议你拿到文件后,第一时间转换成GeoJSON或者KML。
用Python写个简单的脚本,或者用GDAL命令行工具。命令行里输入:ogr2ogr -f "GeoJSON" output.json input.geo。这么一转,以后不管你是用Excel看属性,还是用Web前端展示,都畅通无阻了。这一步虽然有点技术门槛,但一旦掌握了,你就再也不用问别人geo格式可以用什么软件打开了。因为你可以把它变成任何你能读的格式。
第四 步,注意数据隐私和版本匹配。
有些_geo文件是某个大型测绘软件生成的,比如MapGIS或者SuperMap。这种时候,你得去装对应的查看器。别硬扛。我有个同事,非要拿ArcGIS去开MapGIS的geo文件,折腾了两天没搞定,最后发现装个MapGIS 10的轻量版阅读器,三分钟就解决了。这就是经验。有时候,工具选错了,努力全白费。
最后说点实在的。
别遇到文件就打不开就慌。先看好文件大小,要是只有几KB,那大概率只是元数据或者空的壳。要是几百MB,里面肯定有货。先备份,再尝试。复制一份出来,别直接动原件,不然改坏了哭都来不及。
现在回想起来,刚开始做这行,因为不懂格式,被甲方骂得狗血淋头。现在嘛,遇到geo格式可以用什么软件打开这种问题,我心里都有谱了。先CAD,再QGIS,最后转GeoJSON。这三招下来,没什么数据是看不开的。
对了,还有个小细节。有些geo文件里面嵌了图片或者多媒体数据,这种用记事本打开,你可能会看到乱码,甚至看到图片的二进制编码。这时候千万别删乱码,那是图片。把它保存为.txt,然后找专门的二进制编辑器,或者用支持多媒体的GIS软件才能正常预览。这一步挺折腾的,但也是真金白银买来的教训。
总之,别怕文件奇怪。多试几种工具,多转几种格式。经验都是在一次次打不开和强行打开中积累的。希望这篇文章能帮你省下半夜改bug的时间。