处理未知坐标系

翻译文章地址:https://blog.safe.com/2009/11/fmeevangelist48/

 

这个简短的帖子是关于当FME无法识别您的坐标系时意味着什么 - 并突出了一个鲜为人知的变换:CoordinateSystemDescriptionConverter

这种情况与没有坐标系的数据集(在FME Viewer中显示为未知)不同。而是使用坐标系标记数据集,但FME不识别其描述。

这并不意味着FME不能重新投影数据,但您应该检查它的解释。下面的工作区将有助于此。

坐标系描述

坐标系的描述通常不仅仅是一个名称,而且也是一个定义,与空间数据没有单一格式的方式相同 - 有几种描述坐标系的规范。

例如,一些最常见的规范是:

  • OGC WKT:开放地理空间联盟定义的一个众所周知的文本描述。
  • ESRI WKTESRI定义的一个众所周知的文本描述。
  • Oracle SRIDOracle定义的空间参考ID
  • EPSG:欧洲石油勘探组织定义的空间参考ID

 

转换坐标系描述

再次,与空间数据格式一样,FME有自己的坐标系内部表示。这有助于在转换期间处理一个表示到另一个表示的映射。

通常我们会自动为您执行此映射。例如,如果将数据从ESRI Shape数据集加载到Oracle数据库,我们会自动将ESRI WKT转换为Oracle SRID(通过FME等效描述)。

但是,有时您可能希望手动执行此操作,而在执行此操作时,CoordinateSystemDescriptionConverter是要使用的转换器。

 

示例:场景

此示例 - 您也可以在fmepedia找到 - 显示一个实例(还有其他实例),您可能需要手动转换坐标系描述:检查FME是否正确处理未知坐标系。

所以,这里我们有一个带有坐标系的ESRI数据集,FME无法识别。即有一个prj文件,但FME无法识别内容。

查看PRJ文件,我们可以看到定义是这样的:

PROJCS [ “PCS_Lambert_Conformal_Conic”
GEOGCS [ “GCS_North_American_1983”
DATUM [ “D_North_American_1983”
SPHEROID [ “GRS_1980”6378137.0,298.257222101]]
PRIMEM [ “Greenwich0.0]
UNIT [ “Degree0.0174532925199433]
PROJECTION[ “Lambert_Conformal_Conic”]
PARAMETER [ “False_Easting”6200000.0]
PARAMETER [ “False_Northing”3000000.0]
PARAMETER [ “Central_Meridian” -91.86666666666666]
PARAMETER [ “Standard_Parallel_1”49.0]
PARAMETER [ “Standard_Parallel_2”77.0]
PARAMETER [ “Latitude_Of_Origin”63.390675]
UNIT [ “Meter”1.0]]

为了找出FME认为坐标系代表什么,让我们在工作区中使用CoordinateSystemDescriptionConverter转换器。

示例:工作区
我从我们的一位开发人员处获得此工作区 ,它 将告诉我与此未知坐标系相当的FME是什么:

 

  • 工作区只使用Creator转换器创建单个要素,并将PRJ文件中的ESRI定义添加为属性。
  • 然后CoordinateSystemDescriptionConverter转换器将其从ESRI WKT转换为FME表示


上图: CoordinateSystemDescriptionConverter参数对话框

- 最后,我们将FME表示设置为新的坐标系,并将数据输出到Visualizer


图:此数据集的FME视图

因此,FME将其定义为_FME_0,这意味着它无法识别。但是单击[...]图标,您将获得坐标系的完整描述:

 

上图: FME对此坐标系的定义

这给您提供了一种检查FME是否正确解释源数据坐标系的方法。如果这个定义符合您认为正确的定义,那么您可以放心,即使坐标系未被正式识别,重新投影也会正常。

当然,通过将这个定义添加到FME中,您可以确保坐标系能够被识别。

 

将未知坐标系添加到FME

如果我想将此坐标系添加到FME,以便自动识别,则需要先将FME定义复制到MyCoordSysDefs.fme文件中


上图:将定义复制到文件中

现在我可以通过以下方式更改它:

  • 删除ESRI WKT(不是完全需要的)
  • 在每行之后添加一个延续字符(除了最后一行)
  • 将标头从CS_NAME更改为正确COORDINATE_SYSTEM_DEF
  • 删除所有不必要的:(冒号)字符
  • 将坐标系重命名为更易识别的东西

我还可以在我认为FME错误解释源代码的地方进行任何其他更改。

 

上图:编辑后的定义

重新运行工作区,输出如下所示:


上图:好!FME现在可以识别我的坐标系

如果去掉定义的ESRI WKT部分,确实FME不需要知道如何转换数据。但是,如果我确实将它留在那里,那么在将来将数据写回Shape(使用此坐标系)时,该字符串将获得优先权。

关键点是:

  • 即使坐标系统无法识别,FME仍然可以正确地重新投影数据
  • CoordinateSystemDescriptionConverter将数据集的描述转换为FME描述(反之亦然)
  • FME添加新的坐标系就像将FME描述复制到MyCoordSysDefs.fme并进行一些编辑一样简单

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值