体验地址:https://pass.itdos.net/mapus?file=1

1 总体思路

(1) cad文件dwg格式转为dxf 2000版本保存
(2) 如果cad里坐标系前面省略了 比如38/37 等 带号,需要在cad里将图形向右方水平移动38000000/37000000(m,@38000000,0)。
(3) 为了保证dxf文件的干净,将cad中需要的图元复制,然后新建一个cad文件,粘贴到原坐标,再另存为dxf文件(2004版?)
(4) 尽量做成一个连续的pl线(ACAD命令:pe——m),不要一个个线段,因为后者每根都作为一个独立的layer,配上一个独立的名称,很多,也不好整体移动(如果坐标有偏差的话)。
(5) 所有线的线宽要设置为0.00 mm,特性表里的全局宽度同时也要设置为0。
(6) 支持圆(AcDbEntity:AcDbCircle)、多段线(AcDbEntity:AcDbPolyline)、点(marker、point)、矩形(作为多段线)、面域(polygon,首、尾坐标相等则作为面域)、文字(point、text)

方法A:用QGIS软件导入dxf文件,转换坐标,再用QGIS软件里的插件bulk vector export导出为geojson文件
方法B:用91地图等导入dxf,匹配好位置,再导出为xml文件,用mapus里的xml转geojson文件,转成geojson文件
mapus导入geojson文件

下面是方法A,方法B请点击上面链接。

2 下载和安装QGIS软件

QGIS install
QGIS手册

3 QGIS坐标转换

这个是关键。
首先理解原理。

3.1 综述——可跳过

可直接跳过,看3.3
转换CAD图形坐标记住口诀:
首先设定QGIS工程坐标为WGS84的经纬度坐标系。
将dxf文件拖进去,dxf是什么坐标系就设置属性是什么坐标系。可以在属性里改,也可以设置图层CRS。比如dxf无非是2000大地、1954北京、1980西安。
地方坐标系或自定义的坐标系,有另外文字说明。比如用excel
问题,如果dxf坐标系选择不对,就不会出现图形。同样的坐标系,有111°带(CM 111E),也有37(zone 37)开头的横坐标。因为CAD里用平面直角坐标系,所以一定是选类似37,即横坐标开头的数字。

坐标参照系 官方ID
CGCS2000/3-degree Gauss-Kruger zone 37 EPSG:4525
Xian 1980/3-degree Gauss-Kruger zone 37 EPSG:2361
Beijing 1954/3-degree Gauss-Kruger zone 37 EPSG:2413

不要选下面的这些

坐标参照系 官方ID
Xian 1980/3-degree Gauss-Kruger CM 111E EPSG:2382
WGS 84 EPSG:4326
CGCS2000/Gauss-Kruger CM 111E EPSG:4508
CGCS2000/3-degree Gauss-Kruger CM 111E EPSG:4546
Beiiing 1954/3-degree Gauss-Kruger CM 114E EPSG:2435
China Geodetic Coordinate System2000 EPSG:4479
Xian 1980 EPSG:4610
Beijing 1954 EPSG:4214

参考网址
https://blog.csdn.net/weixin_39755003/article/details/111360925
https://liubf.com/2020/12/23/qgis%e4%b8%ad%e5%9d%90%e6%a0%87%e8%bd%ac%e6%8d%a2/
https://www.cnblogs.com/lanren567/p/16385287.html
https://www.bilibili.com/video/av513963733/
https://blog.csdn.net/m0_37251750/article/details/95479331

以上转换2000坐标转经纬度是非常准确的。
如果出现偏差,
方法A:要借助一个中间参数,比如91地图中的方法
方法B:导入mapus后,直接拖动移动即可。所以要求尽量是连续的pl线,方便整体移动。

3.2 概念——可跳过

可直接跳过,看3.3
大地坐标(地理坐标系)

WGS84:EPSG 4326 (经纬度)
CGS2000: EPSG 4490 (经纬度)
CGS2000: EPSG 4479 (米)
北京1954: EPSG:4241( 经纬度 )
西安1980:EPSG: 4610 ( 经纬度 )

投影坐标(平面坐标系)

WEB墨卡托: EPSG 3857 (米) (WGS84地理坐标系经纬度表示+墨卡托投影方式表达)
地方投影坐标: EPSG 4547 / EPSG 4548 … (米) (CGS2000+地方投影)
各地方坐标参照 http://epsg.io/

坐标系统可分为地理坐标与投影坐标。地理坐标系统(Geographic coordinate system)又可称大地坐标系统。是利用三度空间的球面来定义地球上的空间位置。以经纬度之度(゚)分(′)秒(″)来表示地球上任一点的绝对位置。东西向的分度线称为纬线,以赤道为 0 度起点。南北向的分度线称经线,以通过英国格林威治天文台之经线为本初子午线作为 0 度起点,往东称为东经,往西为西经。(东经为正、西经为负;北纬为正,南纬为负;E 表东经、W 表西经、N 表北纬、S 表南纬)


图:地理坐标之经度与纬度图

投影坐标(Projection Coordinate System)即将三度空间的地理坐标经过投影的方式,转换成二度空间的平面坐标系统。由于是由地理坐标转换成平面,因此包含了参考椭球体、大地基准及地图投影方式。目前全球最通用的坐标系统,为国际横麦(墨)卡托(Universal Transverse Mercator Projection Grid System)投影坐标系统。

图:横麦卡托投影图

开源与成熟商业的瓦片地图服务(TMS或WMTS服务标准-瓦片命名不同而已),都有如下共同的特性,基本成为了标准:
(1) 坐标系:WGS84
(2) 投影:墨卡托投影(Marcator,正轴等角圆柱投影)

中国的坐标系
1954北京坐标系Beijing 1954
1980西安坐标系Xian 1980
2000大地坐标系CGCS2000
地方坐标系

3.3 准备工作

1)设置界面为中文(可选)

设置——选项——通用——本地化语言

2)添加插件

插件——管理并安装插件——bulkvectorexport

安装完左上角工具条第三行出现工具条

3)设置工程属性

设置工程属性中坐标系为WGS84地理坐标系(关键1),这个就是你导出的坐标样子,这里是经纬度,那么导出的就是经纬度。

把arcgis遥感图作为地图,操作方法见 4 QGIS其他操作

4)设置dxf的坐标系和多段线及线宽

要求:
将CAD中有用的选中拷贝到新建图中(保证干净)
1.坐标:dxf在cad里的平面坐标系,是完整的,不要省略38/37等带号,如果省略了,请向右水平移动37000000/38000000
广东西部是37(对应东经111°带),中部是38,东部是39带
新疆是29带
2.多段线:dxf文件尽量连接成一条或多条连续的pl多段线。目的是为了减少图元数量——pe命令,(输入m,意思是只要是相连的多段线,都自动各自连上,支持多个多段线)再输入j,关闭其他图层,全选,那么能合并的都会自动合并。
3.线宽:全选——必须设置线宽为0.00 mm,全局宽度为0!!注意,圆以及一些软件生成的图形是无法设置宽度的,所以全选里如果包含了圆和这些图形,则不出现这个全局设置项的。必须关闭它们的图层。


将dxf文件直接拖到图层里,点击按钮 添加图层 即可

关键2)拖进来的看不见,必须设置好坐标才行。
右键选中图层——设置CRS坐标系统,这里就是cad里所使用的平面坐标系了。所谓的投影坐标系,注意横坐标前面的2个数字,是37的话,就在下图中选对应的zone37。设置完图形会消失,点第5个放大镜图标(缩放到图层)即可显示。

选择CAD图纸对应的坐标系,比如CGCS2000大地坐标系……

其实上述操作后,导入的dxf文件同时具备两种坐标数字,一个是经纬度,一个是投影坐标。鼠标右键在图上点击就可以查看不同格式的坐标。

4 导出geojson格式文件

再次打开 工程——工程属性——选择坐标是WGS84,看到屏幕下方显示的坐标系是经纬度
在工具条左上角第三行,看到

选择左侧一个图层,点击bulkvectorexport工具,选择导出所在文件夹即可,不需要写名字,名字默认是图层的名字,注意output选geojson。
,并勾选 project才行哦
导出的geojson文件,用文本编辑器打开后,确认里面的坐标系是经纬度。类似[ 113.190292549003601, 22.860978704533771, 0.0 ],

5 导入mapus

先用文本工具打开geojson文件,确认"name": "工程名称",导入后的图元以这里的名字加上下面的features里的图层Layer名来命名。
导入前先在地图下方选择颜色,如果不选,默认是蓝色。
稍微解释一下geojson文件的格式,json其实就是一个目前普遍流行的树状文件格式,逐渐取代xml格式。features后是中括号,表示数组的意思,中括号里面第一级的大括号会有一个或多个并列,用逗号隔开,每个一级大括号里表示一段多段线的所有信息,我们只要看属性properties和几何geometry即可,properties里留意Layer和description,开头字母分别是大写和小写,我们在qgis里导出的geojson文件大概率是没有这个properties的,所以把下面的拷贝过去修改。注意json格式有严格要求,不能少了字段后的逗号和后大括号以及后大括号后面的逗号。几何geometry里看看coordinates是不是经纬度即可,东经在前和北纬在后。

{
  "type": "FeatureCollection",
  "name": "北江引水——这里是工程名称",
  "features": [
  {
    "type": "Feature",
    "properties":
    {
      "Layer": "主干线——这里是图层1名称",
      "Name": "主干线——这里是图层1名称",
      "description": "这里是特性描述,比如流量,洞径等",
      "PaperSpace": null,
      "SubClasses": "AcDbEntity:AcDb3dPolyline",
      "Linetype": "Continuous",
      "EntityHandle": "D4",
      "Text": null
    },
    "geometry":
    {
      "type": "Point",
      "coordinates": [112.59549, 23.89696]
    }
  },
  {
    "type": "Feature",
    "properties":
    {
      "Layer": "分干线——这里是图层2名称",
      "PaperSpace": null,
      "SubClasses": "AcDbEntity:AcDb3dPolyline",
      "Linetype": "Continuous",
      "EntityHandle": "D4",
      "Text": null
    },
    "geometry":
    {
      "type": "LineString",
      "coordinates": [
        [113.151798, 23.66315],
        [113.151801, 23.66311]
      ]
    }
  }]
}

找到import geojson,选择刚刚在QGIS中导出的geojson文件即可。导入后可以编辑左侧导航栏里的名称和描述。

导入的鉴江供水工程(北京坐标系)效果——还是有些偏移。大地2000完全准确。

用移动功能后的效果

珠三角水资源配置工程,用的2000大地坐标系38°带(CGCS2000 / 3-degree Gauss-Kruger zone 38),直接在QGIS里转成WGS84经纬度后,导入mapus,吻合度很好,无需调整

6 导出geojson并转为dxf

在mapus里修改了的图元,导出geojson文件,用QGIS打开后再导出为dxf,cad打开dxf即可。

mapus数据导回到cad里

7 xml文件转geojson文件出错

有时候遇到91等软件导出的xml文件存在<name/>这个情况,导致文件转换失败,请全局替换<name/><name>某某</name>

<Folder>
<name>pipe_cen</name>
<Placemark>
  <name/>
  <description/>
  <styleUrl>#1632796375</styleUrl>
  <LineString>
    <coordinates>

8 导出文件乱码处理——不可行,尝试后会造成系统问题。

https://blog.csdn.net/lwqkiss/article/details/128217506
防乱码设置(更改系统编码为utf-8)
注意:更改之后会重启,请先保存重要文件
Windows10
搜索框输入语言,点击进入
或者点击Windows设置->时间和语言->语言
点击管理语言设置
点击更改系统区域设置,勾选使用utf-8,然后点击确定,按提示重启系统
Windows11
搜索框输入语言,点击进入
或者点击Windows设置->时间和语言->语言和区域
点击管理语言设置
点击更改系统区域设置,勾选使用utf-8,然后点击确定,按提示重启系统

作者:秦晓川  创建时间:2022-10-27 17:49
最后编辑:秦晓川  更新时间:2024-02-14 21:14