GeoMedia 和GeoMedia Professional 常见问题解答
作者:intergra… 文章来源:
www.intergraph.com.cn 点击数:1963 更新时间:2006-7-3
摘要: 1. GeoMedia 允许同时连接多少个 Access 数据库?
回答
Access - 连接限制 - 最大连接数
GeoMedia 允许同时建立 47 个 Access 可读/写连接和 52 个 Access 只读连接。
Microsoft DAO 在每个系统上可打开的表的数量限制为 2048。如果你的数据是分散在多个 Access 数据仓库中的话就很容易达到这个限制数。
注意: 对于每一个特征类,Access 数据仓库有 9 个管理表加上 1 个特征表。操作系统将 CAD 配置定义文件(.csd)和 CAD 配置缓存文件(.csc)也作为当作 Access 数据库看待。对于每一个显示的特征类,有 24 个管理表加上 1 个特征表。
Access 数据服务器和 CAD 数据服务器采用的是 Jet 引擎,该引擎明确限制所打开的记录数。这是你碰到的第一个数量限制。
--------------------------------------------------------------------------------
2. GDO 认为 Arc/Info 中点状数据(代替PAT)的表名是什么?
描述
用户有一个coverage,包含线和点数据,及其相关的属性表 AAT 和 PAT。GeoMedia 的 Arc/Info GDO 好像是将 PAT 作为属性“Polygon”而不是“Point” 属性,点特征类处理为“[Feature Class Name]_Area”。线数据的处理是正确的“[Feature Class Name]_Line”。
这是所期望的行为吗?GDO 认为 Arc/Info 中点状数据(代替PAT)的表名是什么?
回答
在 Arc/Info 中该扩展名用于:
pat - 多边形(polygon)属性表
pat - 点(point)属性表
pat - 区域(region)
PAT 属性表名可用于点、多边形或区域。PAT 包含 Arc/Info 所创建的四个标准项,顺序如下:
AREA
PERIMETER
COVER#
COVER-ID
对于点的 coverage 来说,PAT 的 AREA 和 PERIMETER 总是为零。
检查你的 coverage 的这些值吧。我已经成功使用 GeoMedia 浏览来自于 Arc/Info 的 POINT 和 POLYGON coverage。
--------------------------------------------------------------------------------
3. GeoMeida 是如何处理 ArcInfo 的坐标系的?
描述
GeoMedia 不能读取 ArcInfo 的坐标系。为解决这个问题,使用下列工作流程来定义一个 GeoMedia 可以使用的坐标系。
回答
这里介绍的是如何定义一个 ArcInfo 的 coverage 所使用的坐标系。
从 GeoMedia 的程序组中,选择 工具>定义坐标系文件。
设置投影以匹配 ArcInfo 项目的投影。(可以使用记事本浏览 ArcInfo 的 .prj 文件中的坐标信息 ,不要编辑该文件)。
当选择 确定 后,会提示你将 .csf 文件保存到 ArcInfo 工作区的每一个 coverage 目录中, 或者把 .csf 文件保存到任意位置后创建一个包含这个 .csf 文件位置信息的 .ini 文件。
注意: .csf 文件的扩展名必须为 .csf 。如果该文件位于每一个 coverage 目录中,那么 GeoMedia 将自动定位该文件。
.ini 文件可以位于数据仓库的目录中,也可以位于 A/I 的项目目录中(与所有的 coverage 目录相同的目录)
.ini 文件的扩展名应该是 .ini。
.ini 文件的内容: COORDINATE SYSTEM: =
注意: .csf 文件的路径可以是 UNC 路径,也可以是本地驱动器。
--------------------------------------------------------------------------------
4. CAD 数据服务器 所支持的 DGN 文件的元素类型有哪些?
回答
类型 描述
2 cell
3 line
4 line string
6 shape
7 text node
11 curve stroked
12 complex string
14 complex shape
15 ellipse stroked
16 arc stroked
17 text
--------------------------------------------------------------------------------
5. 在 CAD 数据服务器中定义一个特征时,你可以根据 EntityNumber 区别出位于 MircoStation 相同图层上的特征吗?
描述
比如,我有一个特征 Storm Inlet Text (风暴入口文本),它有一个 EntityNumber,还有一个特征 Storm Line Text (风暴线文本), 它有一个不同的 EntityNumber,但是这两个特征均位于 MicroStation 的同一个图层,且具有相同的样式特征(类型、颜色、字体等等)。
回答
答案是可以。如果指定多个区分标准时,使用逻辑操作符 AND 进行组合。如,使用 SQL 句法,WHERE LEVEL=6 AND ENTITYNUM=1 以区别于 WHERE LEVEL=6 AND ENTITYNUM=2 ,这样便可以区分出这两种不同的图元集。
--------------------------------------------------------------------------------
6. CAD 数据服务器是如何考虑原始 .dgn 文件中的移位全球原点的?
描述
缺省情况下,全球原点位于 design 平面的精确中心处,且坐标设置为 0,0。但我的显示文件的全球原点是 -2000000,-4000000(主单位)。 通过键入 GO=$ 我便可以获得这个结果。键入后,我的显示平面为从 design 平面的左下角到坐标 0,0 点的距离为键入的距离。结果是,我需要在一个 .csf 文件中,除添加坐标系信息外,还须在 存储空间 > 高级参数 > 存储中心 中添加值:
X: 2000000+(4.294.967.296/2*PUperSU*SUperMU)
Y: 4000000+(4.294.967.296/2*PUperSU*SUperMU)
为得到正确位置,公式为:
X: (4.294.967.296/2*design file resolution) - global origin X
Y: (4.294.967.296/2*design file resolution) - global origin Y
回答
如果告诉 CAD 服务器从 .dgn 文件中获取坐标系信息,那么我们要读出该文件的正确的全球原点。 如果该文件有类型56的图元,并带有投影、大地基准等等信息,我们将使用它;如果没有这些信息,我们仍可以读类型9 并从中得出分辨率(工作单位)以及存储中心(全球原点)等信息。
在高级存储参数表单上,从 go=$ 到存储中心的转换是很麻烦的 - 这是因为表单所表达的中心点的值采用的是相应的测量单位,而 go=$ 必须给你 uor(0,0)点 - 所以你不得不做上面所列的复杂计算。
将 .csf 用于 .dgn 上的一个好处是如果 .dgn 中没有类型56, 而你是知道这些数据的投影设置的(只是没有在 .dgn 中定义)。 在这种情况下,可以使用下列步骤:
将 .dgn 拖到 DefCSF exe 上 - 便可以读 < I>.dgn (但不能写该文件!!!)。点击投影选项卡,确认投影设为未知(投影算法表示为 "Rectangular Grid",且不带参数) - 如果是一个有效的投影,那么就此打住,并在 DefCSD 中告诉 CADserver 使用这个 .dgn 文件。
如果你发现那里没有投影,那么继续转到投影和地理空间选项卡,来定义合适的投影。
非常重要 - 当点击 确定 退出 DefCSF.exe 时,改变输出的文件名以防覆盖原 .dgn 文件。
--------------------------------------------------------------------------------
7. CAD 数据服务器是否将共享 cell 类型 35 识别为点?如果不是,所支持的元素类型是什么?
回答
CAD 数据服务器不识别共享 cell。
以下是所支持的图元类型的全部列表:
类型 GeoMedia图元类型 名称
2 IGDSElemType cell
3 IGDSElemType line
4 IGDSElemType line string
6 IGDSElemType shape
7 IGDSElemType complex text node
11 IGDSElemType stroked curve
12 IGDSElemType complex string
14 IGDSElemType complex shape
15 IGDSElemType stroked ellipse
16 IGDSElemType stroked arc
17 IGDSElemType text
--------------------------------------------------------------------------------
8. 能否推荐一个工作流程,如何使用 CAD 数据服务器在 GeoMedia 地图窗中 访问和显示 MircroStation cell?
描述
比如,显示 cell 时,有时候我必须用包括 cell 头的 Level 0 和 GM Geometry Type=SpatialPoint(cells 有数据库链接)才能在 GM 中显示出 cell。 而有时候,又不必在 CAD 数据服务器中使用 Level 0 即可在 GM 中显示出 cell。 看起来似乎无法用一个统一的办法在 GM 中显示 cell。我需要了解什么?请给我一点启发,推荐一个在 GM 中显示带有数据库链接的 MicroStation Cell的步骤。
回答
如果一个图形属性没有参与到特征定义中,那么特征将包括该属性的所有的可能值。比如,如果只使用 Type=17 定义一个特征类, 会将所有的 Level 包括进来。
通常情况下,cell 具有 Color=0, GraphicGroupNumber=0, Level=0, Style=0, Type=2, Weight=0。 如果其中的某个属性参与特征定义,则在可用值的列表中必须包括零值。(注意:为了克服图形属性中没有 CellName, 可使用 EDG 选择性地重新分配某些属性的值。这种情况下,零值便不是合适的可用值。)
由于 CAD 服务器的限制,具有数据库链接的所有特征应选择 EntityNumber 和/或 OccurrenceNumber。
假设你想要所有的图元 - 包括 cells - 链接到 entity number 为 5 的表上,这时应只使用 EntityNumber= 5 来定义特征。
如果想将特征类限制为 cell,则使用 EntityNumber= 5 和 Type=2 来定义特征类。
任何情况下,如果想在地图窗中显示的特征类只包括 cell(与在特征类组中包含 cell 相反),则必须选择至少一个包括点的几何属性: SpatialPoint、SpatialAny、GrpahicPoint 或 GraphicAny。其它几何属性中的 cell 值为 NULL。
--------------------------------------------------------------------------------
9. GeoMedia 中不支持的 AutoCAD 的数据类型有哪些?
回答
下列是不支持的 AutoCAD 数据类型:
ATTDEF
BODY
DIMENSION
MLINESTYLE
RAY
REGION
SHAPE
SOLID3D
TOLERANCE
VIEWPORT
XLINE
--------------------------------------------------------------------------------
10. 是否可能从一个 .dwg/.dxf 文件中得到特征的多个坐标系?
回答
关于坐标系分配:
每个 CAD 地图有一个 STORAGE 坐标系。这些值在工具“定义CAD配置”的“坐标系”选项卡上分配。
每个 CAD 特征有一个 OUTPUT 坐标系。这些值在“新建特征”向导的第一个表单上分配。
如果地图的 STORAGE 坐标系与特征的 OUTPUT 坐标系不一致,那么 CAD 数据服务器将相应转换那些受影响的几何体。
--------------------------------------------------------------------------------
11. 指定 GRAPHIC 类型的用途是什么?
回答
关于 Graphic* 几何体的分类:
很少有用户特意使用 GraphicPoint、GraphicLine 和 GraphicArea,因为客户端对它们的空间对等方面有些功能限制。
很多用户是无意中使用到它们的,因为它们出现在属性列表的比较靠前的位置。
已考虑提供一个新的备用模板,并从缺省模板中移去这些图形属性来消除可能造成的使用混乱。
已经使用了 Graphic* 类型的 .csd 文件仍可以使用。
如果你希望定义一个新的使用 Graphic* 类型的 .csd 文件,必须先复制备用模板到原始缺省模板上。 (如:copy AutoCadTemplateWithGraphic.csd to AutoCadTemplate.csd)
--------------------------------------------------------------------------------
12. 工具“定义坐标系文件”(DefCSF.exe程序)有哪些使用技巧?
回答
DefCSF.exe 可以读取一个 .dgn 文件,从资源管理器中将 .dgn 拖到该图标上,或者将 .dgn 复制并重命名为 .csf然后双击即可读取。
不论 .dgn 是否包含 Type 56,DefCSF.exe 均可读取它。如果不包含 T56,它便从 Type9 中读取工作单位(分辨率)和全球原点(存储中心)信息,并设置投影为“Rectangular Grid”, 这表示没有定义从投影坐标到地理坐标的转换算法。
DefCSF.exe 不能对 .dgn 进行写操作。如果将一个 .dgn 拖到该图标上然后一直点击确定,文件保存对话框会缺省显示出原 .dgn 名称。但会检测出该文件不能写, 便给出一个错误信息并停止写操作。如果将一个 .dgn 重命名为 .csf 后试图写操作,仍会发现该文件的内容是 .dgn 的内容并拒绝写。
想要读一个 .dgn 然后写为 .csf,你必须在文件保存对话框中重命名 -- 即告诉它保存为一个全新的扩展名为 .csf 的文件。然后,它便很乐意地根据原 .dgn 中的内容写一个新的 .csf 文件(并保存按 确定 之前的任何编辑信息)。
--------------------------------------------------------------------------------
13. 坐标系的 水平分辨率 设置有什么用途?
回答
对于一个数据源的坐标系,水平分辨率(从“定义坐标系统文件”对话框上打开的“高级存储参数”对话框中设置) 用于定义连续整数坐标值之间的间距。比如,如果分辨率为 0.001 ft.,将一个点的 x 坐标从 1 改为 2 时,则在 x 方向的改变是 0.001 ft.。 这对于那些以整数形式存储坐标的数据源(MGE, MGDM, MGSM, 以及 .dgn 文件)来说非常重要。对于这些数据类型,无法从中获取 1 和 2 之间的值。因此,能够分辨两个值之间的最小间距就是 0.001 ft.,这就是术语“分辨率”。在 IGDS/MGE 环境中,这个概念以 UOR(分辨率单位)表示,而在 GeoMedia 中是用存储坐标表示的。这样,当 MGE 告诉你每英尺有 1000 个 UOR 时,也就是 GeoMedia 告诉你有一个 0.001 ft 的水平分辨率(1 ft/1000 UORS)。GeoMeida 只是查看两个邻接 UOR 之间的间距,而 MGE/MCSO 表示为“一个常用间距(如 1 ft)中有多少个 UOR”。GeoMedia 的表示方式使用的是通用语言,如,“我的数据是厘米级(cm)的分辨率”(意思就是 UOR 之间的间距是 1 cm.,MGE 表示为“每米有 100 个 UOR”或者是“每厘米有 1 个 UOR”。对于 CAD、MGE 等使用者,水平分辨率表示的是数据间非常真实的限制。如,你不能在两个 UOR 之间画线和测量。对于其它使用浮点型的数据,这些限制是不存在的(在合理范围之内即可)。许多 ArcInfo 和 MapInfo 数据的分辨率为 1 米(或者对于地理数据为 1 度)。这表示数据源所采用的存储坐标的单位。 如,不需要将浮点型点存储为一英尺的百分之几,这样会造成多余的计算;它们只需存储为英寸 (或米、或其它等常用的完整单位)。同样,GeoMedia 的图形缓存数据也是浮点型的。因此,通常不需要调整工作区 坐标系的分辨率定义。这是由于在对话框中可以设置将工作区的坐标系与数据仓库的坐标系相匹配。你也可以在对话框上设置存储中心。 这是整数存储方式的另一个遗留问题。整数存储机制, 如 MGE 和 CAD .dgn 文件等,只能存储多个 UORs。在某些情况下,用户需要对使用的 UOR 作一定范围的偏移(如,一些用户想要使所有坐标均为正值)。可以使用 MicroStation 的全球原点偏移来完成。这在 GeoMedia 中表示为存储中心。一般设置为以(0,0)为中心的数据,这表示没有定义移位。
--------------------------------------------------------------------------------
14. 如何在 GeoMeida 中使用 La Canoa 大地基准?
回答
在发布的大地基础中列有“La Canoa”;它使用国际椭球体作为用户注释。从投影算法的列表中可以找到 UTM,其全称为 “Universal Transverse Mercator”。如果你的用户要求使用,这应该没有问题。
这个大地基准目前尚未在 autodt.ini 的发行版本中定义基准转换,但是如果用户需要, 也许可以从委内瑞拉国家制图部门、石油公司等找到参数。如果用户知道地心偏移、7-参数转换、或 helmert 参数, 就可以将参数直接输入到配置文件中。
--------------------------------------------------------------------------------
15. AutoCAD 实体类型的 ENUM 是什么?
回答
这里列出的是所有 AutoCAD 实体类型的 enums:
AD_ENT_LINE 1
AD_ENT_POINT 2
AD_ENT_CIRCLE 3
AD_ENT_SHAPE 4
AD_ENT_ELLIPSE 5
AD_ENT_SPLINE 6
AD_ENT_TEXT 7
AD_ENT_ARC 8
AD_ENT_TRACE 9
AD_ENT_REGION 10
AD_ENT_SOLID 11
AD_ENT_BLOCK 12
AD_ENT_ENDBLK 13
AD_ENT_INSERT 14
AD_ENT_ATTDEF 15
AD_ENT_ATTRIB 16
AD_ENT_SEQEND 17
AD_ENT_POLYLINE 19
AD_ENT_VERTEX 20
AD_ENT_LINE3D 21
AD_ENT_FACE3D 22
AD_ENT_DIMENSION 23
AD_ENT_VIEWPORT 24
AD_ENT_SOLID3D 25
AD_ENT_RAY 26
AD_ENT_XLINE 27
AD_ENT_MTEXT 28
AD_ENT_LEADER 29
AD_ENT_TOLERANCE 30
AD_ENT_MLINE 31
AD_OBJ_DICTIONARY 32
AD_OBJ_MLINESTYLE 33
AD_OBJ_CLASS 34
AD_ENT_BODY 35
AD_OBJ_GROUP 36
AD_OBJ_PROXY 100
AD_OBJ_XRECORD 101
AD_OBJ_IDBUFFER 102
AD_OBJ_PLOTSETTINGS 103
--------------------------------------------------------------------------------
16. Oracle 中的 GeoMedia 元数据表中,为什么在 GFeatures 表和 GeometryProperties 表中文本的 GeometryType 设置为不同的值?
回答
这与 Access 数据仓库中的文本几何类型的存储/描述方式有些矛盾。 当我在一个新的数据仓库中(本例命名为“Text1”)使用“特征类定义”来创建一个新的文本特征时, 在 GFeatures 表中的 GeometryType 值为 33。但是,在查看该特征的 GeometryProperties 表时,我注意到 GeometryType 值设置为 5。对于文本特征,为什么在 GFeatures 表中和 GeometryType 表中设置的值不一样?
GeometryType 属性主要用于属性的类型过滤。当我们查找 gdbGraphics 数据类型时,我们考虑到这个字段的类型可以包含已有的任意红线类型。 在 GUI 中我们希望最好将所有的红线图形一起处理,因为数据不是真正强制为地球上的一个点。这样,我们将所有的红线图形组合为 gdbGraphic 属性类型(不是 subtype 属性)所定义的一个集合中。
总结:
如果主几何体的 GField.Type 值为 gdbGrpahic,那么 GFeatures.GeometryType 的值为 gdbGraphic(33)。
如果主几何体列的 GField.Type 值为 gdbSpatial,那么 GFeatures.GeometryType 的值为 GField.SubType 的值。
如果没有几何体列,那么 GFeatures.GeometryType 为 -1 。
GeometryProperties.GeometryType 总是包含相应几何体列的 GField.SubType 的值。
--------------------------------------------------------------------------------
17. 如何将 Intergraph 网格文件格式转换到 MSWorks 中?
回答
下面是将 Intergraph(以及其它 ERDAS、ERMapper)格网格式数据放入到 MFWorks 中的方法。
基本步骤
需要将 .grd 扩展名改为 .bin。
从 ImageStation Raster Utilities > View Edit Header 或 MTA 工具软件中获得头文件信息。
将文件路径和头文件信息添加到 MFWorks 脚本中(见下)。
Intergraph 格网需要旋转和翻转(见下面的 MFWorks 脚本)。
在 MFWorks 中手工纠正新地图 Georegister Newmap
MFWorks 脚本 - 读 Intergraph 2 字节整数格网数据
##START of MFWORKS SCRIPT######
/* Open Up New Map*/
NewMap = import "E:\ABYSS_D\prj\hydrovox\grd\aussie.bin" Rows 987 Columns 728 FixedPoint DataSize 2 SkipHeader 7168 MACByteOrder;
/*Rotate Map*/
RotMap = Rotate NewMap By 90;
/*Flip Map*/
FlipMap = Flip RotMap Horizontally;
##END of MFWORKS SCRIPT######
--------------------------------------------------------------------------------
18. 如何将面积、长度或周长等信息批量载入到相应的属性表中?
回答
使用菜单 Tools > Analyze Geometry 命令可以得到需要的信息。这个命令生成查询结果并追加到相关的特征属性表中。 (确定属性表中有一个空列用于存储该结果。如,想测量你的地块面积,就需要在属性表中创建一列,名为“面积”。) 欲将信息添加到你的表中,打开一个数据窗,显示该信息。将鼠标光标放在查询结果的第一条记录上, 然后点击鼠标左键并将鼠标指针拖到最后一条记录, 这样便选择了整列查询数据。选择 Edit > Copy。下一步,按照上述办法选择欲复制的目的列。 最后用 Edit > Paste 即可实现。
--------------------------------------------------------------------------------
19. 为什么我的坐标系文件被覆盖了?
回答
解决方案:
“定义坐标系”的 另存为 功能将直接替换目录中的已有文件而不出现常见的确认对话框。因此,在使用这个命令时, 应该小心使用,以防已有文件被不经意地覆盖掉。
--------------------------------------------------------------------------------