常见问题

关于乱码

乱码主要出现在 SHP 格式中,这种文件格式比较古早,字段名长度最多只能有 10 个字节,字节≠字数,这涉及编码问题,我们常用的编码有两种:UTF-8GBK

  • UTF-8:一个英文字母占 1 字节,一个汉字占 3 字节,这意味着该编码下的字段名最多 3 个汉字。
  • GBK(CP936):英文字母占 1 字节,汉字占 2 字节,这就可以让字段名支持最多 5 个汉字。

看起来是 GBK 更有优势,但实际上 UTF8 有更好的兼容性,几乎不会出现乱码,如果对字段名中文长度没有特别要求,建议采取 UTF8 编码 ,这也是导出SHP的默认设置。

image-20230809111040007

如果 GBK 导出的 SHP 加载到 ArcGIS 中出现乱码,这可能并不是数据有问题,而是软件原因,ArcGIS 10.2 及以上的版本中汉字经常乱码,可尝试按照下面的方式处理(以 ArcGIS 10.2.1 为例):

  1. 下载官方补丁并安装: ArcGIS-1021-DT-SSDCP-Patch.mspopen in new window

  2. 新建一个 bat 文件,如:ChangeCodePage.bat,粘贴下面的代码并保存;

    @ECHO OFF
    IF "%1"=="" GOTO :EOF
    reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.2\Common\CodePage /v dbfDefault /t REG_SZ /d 936  /f
    
  3. 以管理员权限执行上面的文件。

  4. 注意,针对不同版本的ArcGIS ,需要修改 ..\Desktop10.2 到匹配的版本。

关于打印

大影像、在线地图以及字段标注是动态绘制的,不支持打印,想要打印可参考下面的方法:

  • 大影像:通过光栅图像加载即可打印。

    • 影像格式不受支持的,可先导出为支持的格式
    • 影像太大光栅图像无法加载的,可通过裁剪工具裁剪后再加载
  • 在线地图:直接下载,之后处理方式同大影像

  • 字段标注:标注转为注记即可

注意

在线地图下载并非级别越高越好,注意根据应用场景判别。实际情况是国内几乎没有超过18级的在线地图,即使显示提示是20级,也只是18或更低级别的影像重采样到20级的,实际分辨率并没有提升,没必要去追求高级别,这点注意甄别。

关于TIFF

TIFF(TIF)是一种常见的图像文件格式,它可以存储多个图像和元数据,CAD 的光栅图像也支持插入 TIF 图像,但在实际使用过程中会发现一些 TIF 并不能插入 CAD 中,提示如下:

image

出现这种情况,除却文件损坏等原因,很有可能是该图像不是传统的 TIF 图像,而是 BigTIFF ,在此简单说明几个概念:

格式说明
TIFF传统的图像文件格式,TIF 格式可以存储32位深度的图像文件,但是文件大小不能超过4GB。(CAD支持)
BigTIFF为打破 TIF 的4GB大小限制而生,使用了64位的地址空间,允许文件大小超过4GB。(CAD不支持)
GeoTIFF一种特殊的 TIF 文件格式,它无需坐标文件 tfw ,自身即包含了地理参考信息,使得GIS 软件能够更容易地识别图像的地理位置和坐标系。(CAD不一定支持,具体取决于文件是否是BigTIFF

由于上述格式的后缀名都是 tiftiff ,无法简单通过后缀判别,若出现无法光栅图像无法加载的情况,可尝试通过以下方法解决:

  1. 通过 gimg 加载图像;
  2. 若图像小于4GB,直接导出为 TIFF
  3. 若图像大于4GB,通过裁剪将其分割,导出为多个 TIFF
  4. 将导出的结果通过光栅图像加载。

关于投影

关于投影的问题比较多,在此简单甄别几个概念:定义投影投影动态投影

首先明确,不管是什么格式的空间矢量数据,都会以保存坐标值,这是进行投影的基础

  • 定义投影:更新用于标识当前坐标系的元数据,数据坐标值不发生改变

    定义投影(Define Projection)适用于数据空间位置准确、坐标系明确,只是缺乏空间参考(投影信息)的情况,相当于是给数据添加一个标签,让GIS软件知道数据是哪种投影。

  • 投影:将数据从一种坐标系投影到另一种坐标系,数据坐标值发生改变

    投影(Project)或者说投影变换,适用于将一种坐标转换成另一种坐标,进行投影变换往往需要相应的转换参数,同椭球体下转换不需要参数。

  • 动态投影:将不同坐标系的数据投影到同一个坐标系下显示,而数据坐标值不改变,该过程一般是自动进行,无需用户操作。

    ArcMap 举例,当数据框定义了坐标系时,该数据框下所有数据会被动态的投影到该坐标系下,参考以下步骤观察其变化:

    • 新打开一个文档,在未添加数据时,其数据框是没有坐标系的;
    • 向数据框添加一个图层,如果该图层定义了坐标系,则ArcGIS会默认以该坐标系作为数据框坐标系;
    • 继续向数据框添加图层,如果新图层坐标系和数据框坐标系不一致,ArcGIS会尝试将新图层动态投影到数据框坐标系上,但该数据的坐标值并未改变,这就是动态投影的作用。

可见,只有投影(投影变换)可以实际上改变数据的坐标值,回到CAD中:

  • 定义投影:也就是插件功能中的设置空间参考,并不会改变数据坐标值。

  • 动态投影:CAD原生不支持,这导致不同的投影下的数据,在CAD中无法套合,软件支持在导入数据时自动进行投影转换。

    自动进行投影转换的前提是设置了全局投影,具体参见 空间分析 > 全局空间参考

  • 投影变换:参见 空间分析 > 坐标转换 > 投影转换

投影跨带

国内常用 CGCS2000 的3度带投影,但很多时候我们数据是跨带的,并不完全在同一个投影带内,在线地图动态定义投影后,将只显示所定义投影带范围内的地图,这就导致超出该投影带的部分地图没显示,想要将数据和地图完全套合并显示,可参考以下操作:

将数据转换到能完全覆盖它的投影带上,在此以跨越37度和38度带的数据,通过ArcGIS操作举例:

  1. ArcGIS中 加载数据后,数据框(图层)右键 > 属性 > 坐标系 > 定义37.5度的中央经线

    image

    可直接在37或38度的投影基础上修改,注意上图红色部分是修改过的值

  2. 将数据框坐标系定义到上述投影后,导出图层,注意勾选数据框的坐标系

    image-20230808151058568

    这一步的目的是对数据进行投影变换,也可通过其他方式实现,在此不予赘述

  3. 将导出的数据加载到CAD中,此时数据的坐标系就是我们刚刚定义的 37.5

  4. 在线地图投影选自定义,如下设置即可:

    image

    这样,就将数据和地图都定义到了一个能完整显示的投影带,二者可完全套合。

提示

  • 如果只是浏览数据,也可将投影定义为全球有效的地理坐标系,如WGS84 ,自然不存在跨带问题。
  • 投影变换还有一种更简单的方式,就是在CAD中将数据框(图层)的投影定义为需要的值,再加载数据,会提示执行投影变换,具体参见:空间分析 > 空间参考

DPI

软件在启用了 Windows 缩放后,可能出现文字模糊、布局压盖、混乱等问题,这里做一个简单说明:

首先是设置缩放的方法(Win10):

  • 桌面右键 > 显示设置 > 缩放和布局 > 更改文本、应用等项目的大小

    image-20230810151336698

  • 下方还有个 高级缩放设置,打开后有个选项:允许Windows尝试修复应用,使其不模糊

    image-20230810151429776

开启缩放后,就可能出现文字模糊、布局压盖、混乱等问题,同时模糊修复也会对软件产生影响:

开启模糊修复关闭模糊修复
文字文字被缩放,清晰文字被缩放,模糊
图标图标维持原状,清晰图标被缩放,模糊
布局布局和文字缩放比例不均,相互压盖、布局混乱整个软件被同步缩放,布局正常

可见在设置了缩放后,要么是字体清晰但界面混乱,要么是界面正确但是模糊,目前来说二者不可调和,按自己需要取舍即可。

除去在 Windows 中的全局设置,也可以单独设置CAD软件的缩放行为:

  • acad.exe > 属性 > 兼容性 > 更改高DPI设置

    image-20230810153802264

  • 这儿有两个设置:程序DPI高DPI缩放替代

    • 程序DPI:勾选后能确保布局正常
    • 高DPI缩放替代:勾选后能确保清晰
    • 程序DPI和高DPI同时勾选:将忽略系统设置的缩放,维持原始的高清状态

上面的测试均基于 AutoCAD2024,不同版本可能略有出入。你可以在上述设置中自由组合,找出最适合自己的,如果有更好的方案,欢迎提出建议。