MapGIS Desktop将ArcGIS 制图成果转换到MapGIS平台中-微调成果Mapx

一、介绍

MapGIS Desktop是一款专业的二三维一体化桌面GIS产品,具备强大的数据管理与编辑、数据制图与可视化、空间分析与影像处理、三维可视化与分析等能力,通过“框架+插件”的思想构建,支持按需定制。

img

二、产品下载

软件版本下载地址
MapGIS Desktop10.7.8.10MapGIS Desktop软件下载地址
MapGIS Desktop 操作手册10.7.8.10在线操作手册地址

三、功能概述

ArcGIS中通过地图(.mxd)存储大量的地图配图信息,包括数据、地图显示颜色、符号、样式、标注、专题图等。MapGIS可快速将ArcGIS的地图(.mxd)转换为MapGIS的地图(*.mapx),并继承其配图信息。

本文档旨在提供一套完整的ArcGIS成果迁移方案,指导用户快速、精准将ArcGIS的地图(.mxd)转换为MapGIS的地图(.mapx)。

四、微调转换成果Mapx

由于ArcGIS 和 MapGIS 制图机制的差异性,部分细节并未能正确转换。MapGIS的"制图成果纠错"工具,将可能存在的细节差异以列表形式提供给用户,用户可基于此列表进行交互修改。从而保证转换后地图的一致性。制图成果转换内容参考MapGIS Desktop如何将ArcGIS 制图成果转换到MapGIS平台中?

目前支持如下几种错误类型检查:

  • 图层连接失败:地图文档(*.mapx)记录了每个数据层在数据库中URL信息。若根据URL无法匹配到数据库中数据,会在列表中显示。
  • 标注类SQL条件语句解析失败:当图层采用"定义要素类并为每个要素类添加不同标注"时,需为每个类设置SQL条件。若此条件规则在MapGIS中无效时,会在列表中显示。
  • 标注类字段使用复杂表达式:设置动态注记时,需设置"字段"信息。若字段信息在MapGIS中无效时,会在列表中显示。
  • 图层定义查询语句解析失败:添加并显示某个矢量数据图层时,可在"属性"中设置显示过滤条件。若此条件在MapGIS中无效时,会在列表中显示。

提示:

1、"制图成果纠错"中罗列的结果并非实时检测。ArcGIS 制图成果转换时,将转换结果信息存储到MapGIS地图文档(*.mapx)中,"制图成果纠错"列表只是罗列了地图中信息。

2、对于动态注记,即使ArcGIS中并未开启"标注此图层的中的要素",MapGIS会继承不开启"标注此图层的中的要素"信息,并将设置的"标注类SQL条件语句"及"标注类字段"信息转换到MapGIS中,且罗列出未能正确转换的内容。

3、根据"制图成果纠错"列表内容调整配图信息时,建议直接通过列表中"修订值"进行修改,而不是在MapGIS的"工作空间"中修改。若需要在两个位置修改,建议每个位置修改后及时保存地图文档。

  1. ArcGIS 制图成果转换后,打开"制图成果纠错"列表,列表中会罗列出 转换结果不一致情况:

img

  • 【地图名称】:地图名称;
  • 【图层名称】:图层名称,以"{组图层名}/{图层名}"形式展示;
  • 【错误类型/错误描述】:错误类型及描述信息;
  • 【原始值】:ArcGIS 中原始配置信息;
  • 【转换值】:转换到MapGIS中对应的配置信息;
  • 【修订值】:默认为空,用户可在此调整配置信息。
  • 用户可逐行检查错误信息,并对比调整信息。

(一)图层连接失败

导致图层连接失败有如下几种可能:

①对应的源数据MapGIS不支持。

如源数据是ArcGIS GDB中栅格数据,ArcGIS制图成果转换时采用"直接转为MapGIS数据",栅格数据不会转换到MapGIS GDB中。需要用户手动导入栅格数据。若图层名称及存储位置没有变化,无需再手动指定源数据,可直接在列表中手动标注为已处理。

img

②对应的源数据不存在。

这种原因ArcGIS地图(*.mxd)中也无法正确显示,需用户根据实际情况判断,是否手动设置关联其他图层。

③图层被重命名。

如ArcGIS制图成果转换时,采用"替换到已有数据库"方式,若数据库中无对应名称的图层,会显示"图层连接失败"。

如由于图层名重复等原因,需要用户手动设置图层URL信息。在列表中点击"修订值"后方的图标,即可弹出选择如下对话框,用户可重新指定源数据。

img

(二)标注类SQL条件语句解析失败

大多数情况下,ArcGIS的地图(*.mxd)中数据图层采用"定义要素类并为每个要素类添加不同标注"时,为每个类设置SQL条件MapGIS均可正常转换。若极端情况下无法转换时,用户需解析ArcGIS中SQL查询语意,再在MapGIS中设置对应语意的SQL查询语句。

在列表中点击"修订值"后方的图标,即可弹出选择如下对话框,用户可重新设置SQL查询语句。

img

MapGIS中SQL条件语句设置方法可参考"sql查询表达式"及"sql查询函数说明"章节。

(三)标注类字段使用复杂表达式

ArcGIS的地图(*.mxd)中数据图层在设置"标注字段"时,可选择一个属性字段或复杂的表达式。通过ArcGIS 制图成果转换到MapGIS中时,若检测转换结果无效,会显示在列表中。一般会有如下几种情况:

①使用了源数据中不存在的属性字段。

这种情况ArcGIS地图(*.mxd)中也无法正确显示该动态注记,需要用户根据实际情况判断,手动修改"标注字段"信息。

②ArcGIS中"标注字段"的表达式过于复杂。

用户需解析ArcGIS中标注字段的语意,再在MapGIS中重新设置动态注记信息。MapGIS中动态注记的设置可参考"常用动态注记标注方法"章节。

(四)图层定义查询语句解析失败

大多数情况下,ArcGIS的地图(*.mxd)中数据图层定义查询后,MapGIS均可正常转换。若极端情况下无法转换时,用户需解析ArcGIS中SQL查询语意,再在MapGIS中设置对应语意的SQL查询语句。

在列表中点击"修订值"后方的图标,即可弹出选择如下对话框,用户可重新设置SQL查询语句。

img

MapGIS中SQL条件语句设置方法可参考"sql查询表达式"及"sql查询函数说明"章节。

  1. 在列表中更新"修订值"后,该行记录会自动显示为"已处理"。建议点击"更新工作空间文档",保存到当前地图文档中。此时查看地图文档效果,可检查更新内容是否正确。

常用动态注记

(1)分类注记

例如,字段"CLASID"记录了道路类别信息,希望按照道路类型,设置不同的标注信息。

设置动态注记时,可采用"定义要素类并为每个要素类添加不同标注"方式,创建不同类别的注记,再通过"SQL条件"为每个类别道路设置过滤信息。每个类别可独立设置动态注记的标注内容、样式、位置、冲突策略等信息。

img

img

(2)连接多个字段

①数值类字段增加单位后缀

例如,“双精度型"字段"n3"记录了GDP产值,希望动态标注 GDP数值并在后面增加单位"亿元”,可通过如下方式:

String(n3) + '亿元'

其中,通过"String"函数将"双精度型"字段转为字符串。

img

②连接多个属性字段

例如,"字符串"字段"str1"记录了行政区编码信息,"字符串"字段"str2"记录了省名信息,希望动态标注 行政区编码-省名,可通过如下方式实现:

str1 + '-' + str2

img

(3)提取部分内容标记

①提取字符前n位

例如,"字符串"字段"str1"记录了行政区编码信息,希望动态标注 行政区编码前四位,可通过如下方式实现:

Left(str1,4)

img

(4)字母大小写替换

①全部大写

例如,"字符串"字段"str4"记录了省名拼音信息,动态标注时所有字母大写,可通过如下方式实现:

Upper(str4)

img

②首字母大写

例如,"字符串"字段"str4"记录了省名拼音信息,动态标注时首字母大写,后面全部小写。可通过如下方式实现:

Upper(Left(str4,1))+Lower(Mid(str4,1,20))

其中,利用Left(str4,1)提取首字母,Mid(str4,1,20)提取第1到20中间的字母,不包含1和20。此处考虑到名称不超过20,提取了从2开始的字母。

img

(5)字符串换行

①MapGIS换行功能

MapGIS在设置动态注记时,可进行"换行配置"设置,实现动态注记换行:

img

②利用Chr(10)换行

例如,"字符串"字段"str1"记录了行政区编码信息,“字符串"字段"str2"记录了省名信息。动态标注两行信息,第一行内容为” 行政区编码:* “,第二行为” 省名:* "。可通过如下方式实现:

'行政区编码: ' + str1 + Chr(10) + '省名: ' + str2

img

若希望两行内容居中对齐,可通过"符号"参数中"多行中间对齐"实现:

img

③特殊字符换行

MapGIS 动态注记的"符号"参数中可指定换行符。例如"字符串"字段"str6"记录了行政区编码-省名 信息,可通过如下方式实现"-"字符换行:

img

(6)分数标注

例如,"字符串"字段"str1"记录了行政区编码信息,"字符串"字段"str2"记录了省名信息。通过分数标注,分子为行政区编码,分母为省名。可通过如下三种方式实现分数注记:

①MapGIS 自带分式注记规则

MapGIS提供了自带的分式注记模式,当注记内容为 “/分子/分母/” 格式时,可显示分数标注。

可在"字段"中输入如下内容,实现分数注记:

'/'+ str1 + '/' + str2+ '/'

img

②通过换行符和多个"-"实现近似分数注记

str1 +  Chr(10) + '------' + Chr(10) + str2

img

③矩阵注记实现

可创建如下矩阵的注记,其中上方文本为"str1"字段,下方文本为"str2"字段。

img

(7)上/下标

例如,"字符串"字段"str2"记录了省名信息,"双精度型"字段"n3"和"n4"记录了两个产业GDP产值信息。省名为正常注记,n3为上标,n4为下标,可通过如下几种方式实现上/下标注记:

①MapGIS 自带上/下标规则

MapGIS提供了自带的上/下标注记模式,如当注记内容为 “A#+B#=C#-D” 格式时,可显示上/下标注记。

可在"字段"中输入如下内容,实现上/下标注记:

str2 + '#+'+ string(n3) + '#-' + string(n4)

img

②矩阵注记

可创建如下矩阵的注记,其中左侧正常文本为"str2"字段,右侧分为3行,第二行可以让上下标间有一定间距。第一行为上标n3,第三行为下标n4,中间行为分隔符,颜色为"无颜色"。可为每个字段设置独立符号化样式,让其显示更为美观。

img

(8)图片注记

①矩阵注记

例如,“字符串"类型字段"tp"中记录了图片路径及名称信息,通过"矩阵注记”,直接选择"图像"类型及字段"tp",即可实现图片动态注记样式。

img

常用SQL查询表达式

MapGIS在进行SQL条件查询时,遵循了标准的计算机SQL查询语句。SQL查询语句变化丰富,下面以几种常用的SQL条件查询为例进行讲解。

①数值查询

对于数值类的属性字段查询可以使用"=“,”!=“,”<“,”<=“,”>“,”>="等查询语句。

例如,查询面积"mpArea"大于500的属性记录:

mpArea>500

②模糊查询

模糊查询使用 like,通配符采用"%"。

例如,查询名称"name"为"北京大学"的属性记录,如下两种方式均可:

name='北京大学'
name LIKE '北京大学'

查询名称name后缀为"大学"的属性记录:

name LIKE '%大学'

查询名称name中任意位置包含为"大学"的属性记录:

name LIKE '%大学%'

③查询字段值为空

查询是否为空值使用 IS NULL 或 IS NOT NULL。

例如,查询名称"name"为空的属性记录:

name IS NULL

④构建函数进行查询

通过构建SQL数学表达式函数,查询符合条件的记录。

例如,查询"水稻"产量高于"小麦"产量2倍的属性记录:

水稻>小麦*2

img

⑤时间查询

对"日期型"、“时间型”、"邮戳型"属性字段进行查询。

例如,查询"统计日期"在2023-1-1到2024-1-1间的属性记录,包含2023-1-1但不包含2024-1-1:

统计日期>='2023-1-1' AND 统计日期<'2024-1-1'

img

SQL查询函数说明

SQL查询时通过构建SQL查询函数,查找满足指定条件的数据。MapGIS目前支持SQL查询函数包括运算符号、数学函数、字符串函数和时间函数四种类型。

(1)运算符号

运算符号是SQL查询条件的基础符号,包括常用的算术运算符、比较运算符和逻辑运算符。

类型运算符说明
算术运算符+加法
-减法
*乘法
/除法
比较运算符=等于
>大于
<小于
>=大于等于
<=小于等于
!=不等于
逻辑运算符like使用通配符运算符将值与类似值进行比较
and如果两个表达式都为真,则返回true
or如果任一表达式为真,则返回true
not反转其他布尔运算符的结果
Is Null运算符将列的值与null值进行比较,如果比较的值为null,则返回true; 否则,它返回false
其他运算符+字符串连接,如连接str1和str2两个字符串字段:str1 + str2

(2)数学函数

数学函数用来执行算术运算。

函数名语法说明示例
AbsAbs(x)绝对值函数。语法:Abs(-4.5) 返回值:4.5
ExpExp(x)以自然对数 e 为幂的函数。语法:Exp(2) 返回值:7.389056
FloorFloor(x)向下舍入函数,即获得距x最近的较小整数。语法:Floor(1.89) 返回值:1
CeilCeil(x)向上舍入函数,即获得距x最近的较大整数。语法:Ceil(1.89) 返回值:2
SinSin(x)正弦函数。语法:Sin(2) 返回值:0.909297
CosCos(x)余弦函数。语法:Cos(1) 返回值:0.540302
TanTan(x)正切函数。语法:Tan(1) 返回值:Tan(30)
CotCot(x)余切函数。语法:Cot(30) 返回值:0.642093
LNLN(x)取自然对数。语法:LN(9) 返回值:2.197225
PowerPower(x,y)x 的 y 次方。语法:Power(2,3) 返回值:8
SqrtSqrt(x)对 x 开方。语法:Sqrt(9) 返回值:3

提示:

MapGIS中正弦、余弦、正切、余切函数中x值单位为弧度。

(3)字符串函数

字符串函数用来对字符串或表达式进行操作。

函数名语法说明示例
ASCIIASCII(input_string)返回字符表达式最左端字符的 ASCII 代码值,input_string可以是字符串,字符串表达式或属性列语法:ASCII(‘ab’) 返回值:97
ChrChr(x)返回与所给ASCII数值参数等当的字符语法:Chr(97) 返回值:a
LowerLower(input_string)将字符串中大写字母转换为小写字母语法:Lower(‘XyAB’) 返回值:xyab
LeftLeft(input_string,length)从提供的字符串的左侧开始提取给定长度的字符语法:Left(‘ABxy’,3) 返回值:ABx
LTrimLTrim(input_string)去除字符串中最左边的空格语法:LTrim(’ a bcd’) 返回值:a bcd
MidMid(input_string,startlength,length)从字符串中startlength位置开始提取length个字符,startlength起始为0语法:Mid(‘abcdef’,2,3) 返回值:cde
RightRight(input_string,length)从提供的字符串的右侧开始提取给定长度的字符语法:Right(‘ABxy’,3) 返回值:Bxy
RtrimRTrim()去除字符串中最右边的空格语法:RTrim('a bcd ') 返回值:a bcd
SpaceSpace(count)以空格构造字符串,count是一个正整数,表示空格的数量语法:Space(2) 返回值:{2个空格}
StringString()将数值转为字符串语法:String(‘3.141500’) 返回值:3.141500
TrimTrim()去除字符串中两端的空格语法:Trim(’ abc def ') 返回值:abc def
UpperUpper()将字符串中小写字母转换为大写字母语法:Upper(‘aBcd’) 返回值:ABCD

(4)时间函数

日期函数用来处理日期和时间。

函数名语法说明示例
datedate()返回当前日期语法:Date() 返回值:2024-2-29
sysdatesysdate()返回当前日期及时间语法:sysdate() 返回值:2024-2-29 15:33:41
dateadddateadd(datepart,number,date)在日期中添加或减去指定时间间隔语法:dateadd(dd,-3,‘2024-2-24’) 返回值:2024-2-21
datepartdatepart(datepart,date)返回指定日期时间的指定部分整数语法:datepart(dd,‘2024-2-12’) 返回值:12

其中datepart参数说明如下表:

日期部分缩写说明
yearyy,yyyy返回年份
monthmm,m返回月份
daydd,d返回日
hourhh返回小时
minutemi,n返回分钟
secondss,s返回秒
millisecondms返回毫秒数
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐