0.背景

当我们需要发布一张地图时,我们会遇到一个不好现状,就是部分地图是用CAD绘制完成的。你也许会说,这有啥区别?这区别很大!

在GitHub上有一个# Cannot use DXF with geographic coordinates #1561,里面有这样一段话:

Well, we are prepared to handle DXF data in paper coordinates or projected coordinates, but not in geographic coordinates. DXF’s origin is CAD, it is an abbreviation for “drawing interchange format”. There is no georeferencing attached.

As a workaround, you may choose a true geospatial format such as OSM or SHP.

这句话,给用户简单科普了一个知识点:

DXFdrawing interchange format 的缩写,如果使用翻译软件,no georeferencing attached是说这类文件并没有地理配准(影像配准)

1.什么是地理配准?

ArcGIS的官方帮助文档上,有这么一篇文章:地理配准概述,它属于ArcGIS的一项功能,它大体的意思就是:

栅格数据可通过卫星影像、航空摄像机和扫描地图等多种来源获取。现代化的卫星影像和航空摄像机往往具有相对准确的位置信息,但可能需要在进行轻微调整后,才能与所有 GIS 数据对齐。扫描地图和历史数据中通常不包含空间参考信息。在这种情况下,您将需要使用准确的位置数据来使栅格数据对齐或将其地理配准到地图坐标系。地图坐标系通过地图投影(将弯曲的地球表面描绘到平面上的方法)来定义。

等等,CAD图输出的不是矢量图吗?不是栅格数据啊,为什么要地理配准呢?在《# GIS数据对不齐?三分钟教你学会“空间校正”和“地理配准”》一文中曾简要说明ArcGIS数据对齐的两种工具:

工具名定义
空间校正提供用于对齐和整合数据的交互式方法。它通常用于已从其他源(例如 CAD 绘图)导入数据的场合。主要包括:将数据从一个坐标系中转换到另一个坐标系中、纠正几何变形、将沿着某一图层的边的要素与邻接图层的要素对齐,以及在图层之间复制属性。
地理配准使用地图坐标为地图要素指定空间位置。一般通过扫描地图、采集航空摄影和卫星影像等获得数据,可通过该功能要将这些栅格数据集与其他空间数据结合使用。

啊,所以,这里应该是想通过georeferencing表达没有地理信息附加上去的意思,也就是说,纯的CAD绘图是没有
地理信息的。

image.png

好吧,我们有了一个关键词georeferencing,我们就用这个关键词继续往下搜吧。

2.Georeferencing DXF using QGIS

通过一阵搜索,我们来到了这么一篇问答Georeferencing DXF using QGIS? [duplicate],而且这个问题和Georeferencing vector layer with control points using QGIS?重复了。

是的,我不会QGIS,于是我学习了《开源GIS软件:QGIS 3.0入门教程 (中文) 2018.04》,这是个漫长的过程,我耗费了大量精力。

在冲着QGIS一番使劲儿无果后,我转念想,为何不用ArcGIS试一试?毕竟Arcgis for AutoCAD插件已经证实是一条路子。

3.使用 ArcGIS 的工具进行空间校正

我开始学习《钟老师arcGIS从放弃到入门系列教程【不断更新中】》,全民都是GIS专家,冲鸭!

其中有一节
【钟老师arcGIS入门篇】矢量数据空间校正2.0,我想,我这关键词大概是错了,应该是Spatial Adjustment

image.png

我发现,我刚开始都是dxf或者dwg文件,不是shp文件,然后我开始编辑就报错了。

image.png

好的,那么,现在我开始学习《第8章 数据转换.5CAD和ArcGIS转换应用》,看着看着,就被老师那句:

image.png

给感动到流泪了,这个路应该是通的,但是我没有老师说的安装位置,查看这个帮助文档:《Instruction how to download, install and authorize the ArcGIS Desktop and Pro》也无果。

而且,CAD的图有室内的情况,就算路是通的,这应该远远不够的。

4.使用GeoServer发布任意室内地图

4.1.伪墨卡托投影

有一位同志发表了《Geoserver配置以及发布geojson服务教程》,其中说了这么一句话

点击发布按钮后需要再填几个参数,我这里选择的坐标系是3857

按照文中的步骤进行操作,真的渲染出了想要的结果!

可是,为什么是EPSG:3857 (Pseudo-Mercator)呢?

我开始检索相关的文章,GIS基础知识 - 坐标系、投影、EPSG:4326、EPSG:3857,这里提到:

伪墨卡托投影,也被称为球体墨卡托,Web Mercator。它是基于墨卡托投影的,把 WGS84坐标系投影到正方形。我们前面已经知道 WGS84 是基于椭球体的,但是伪墨卡托投影把坐标投影到球体上,这导致两极的失真变大,但是却更容易计算。这也许是为什么被称为”伪“墨卡托吧。另外,伪墨卡托投影还切掉了南北85.051129°纬度以上的地区,以保证整个投影是正方形的。因为墨卡托投影等正形性的特点,在不同层级的图层上物体的形状保持不变,一个正方形可以不断被划分为更多更小的正方形以显示更清晰的细节。很明显,伪墨卡托坐标系是非常显示数据,但是不适合存储数据的,通常我们使用WGS84 存储数据,使用伪墨卡托显示数据。

在这个时候,我又突然想到本文最开始的GitHub中的我看不懂的对话:

Well, we are prepared to handle DXF data in paper coordinates or projected coordinates, but not in geographic coordinates.

我有点理解了,意思是,我们不能直接让dxf文件关联地理信息,但是它能配合着投影坐标系来使用。啥是投影呢?我看到了OpenLayers中的投影的解释:

The projection determines the coordinate system of the center and the units for map resolution calculations.

翻译过来就是:投影决定了中心的坐标系统和地图分辨率计算的单位。

由于对于地图学的理解确实还太少,故此处先存疑。后期再思考为何一张任意的图片都可以通过此投影方式获得GeoServer的认可。

4.2. 拓展阅读

相关的,我们还可以知道:Creating indoor map in GeoServer?

好,这里提到了GeoTools user guide,里面提到了

The concept of a “Generic 2D” CoordinateReferenceSystem is formally intended for working with things like CAD drawings where the results are measured in meters.

这里需要注意的是,CAD图应该是以米为单位。

GeoToolsOSGeo 的子项目,那什么是 OSGeo

OSGeo is the parent project for GDAL, QGIS, GRASS GIS, OpenLayers, and other projects

简单来说,OSGeo是个好项目,它基本搞定了主流的GIS开源解决方案。

项目名简介
GDALGDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing.
QGISA Free and Open Source Geographic Information System
GRASS GISGeographic Resources Analysis Support System
OpenLayersA high-performance, feature-packed library for all your mapping needs.
GeoToolsGeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement Geographic Information Systems. The GeoTools library data structures are based on Open Geospatial Consortium (OGC) specifications.

由于不开发程序,仅依靠AutoCADQGISGeoServerOpenLayer就可以搞定,我们暂缓对于GDALGeoTools的探索,留到下一篇。

总结

故,解题思路比较简单,在掌握了基本的软件和基础知识后,使用QGIS添加坐标系EPSG:3857,右键单击Layer,选择Export->Save Feature as...,没有特殊设置,直接导出shp文件,然后参考《Geoserver配置以及发布geojson服务教程》即可。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐