斯潘8
斯潘4
我在之前的一篇文章中找到了一些关于这个的帮助(https://knowledge.亚搏在线safe.com/questions/46672/change-degree-minute-seconds-hemisphere-to-decimal.html)但是dms lat long的格式不同(dms值和lat/long dms值之间有空格)。我试着从那篇文章中编辑regex,但没有用,同时尝试推断我的纬度dms值…
(d++?)d*)([nSEW])
(d++?)d*)([nSEW])
(d++?)d*)([ns])
然而,我匹配的部分只包含度数值,缺少分钟和秒值。我承认我对雷杰克斯不够了解!
以下是详细信息…我将纬度和经度值存储在DMS格式的单独列中(例如,27°54'32.32124“N或38°24'16”N),我需要把它们转换成十进制的度数。秒值的精度可能在2-7之间,刻度为0-5。我知道我可以用测试人员/测试过滤器和子字符串提取器以更繁琐的方式处理这个问题,但我真的想找出一个在StringSearcher中使用的regex表达式,然后将匹配的部分值推送到度数上,分钟,秒到小数点的计算器。这将是一个更优雅的十进制转换。
不幸的是,我正在运行一个稍旧(2015)版本的FME以及我所在组织的Arcgis10.3订阅。如果有人有一个regex帮助我的转换更优雅,非常感谢!
我自己回答问题!
能够使用带有三个字符串搜索器的regex(每个搜索器都在lat或长dms字符串中搜索d,M或S值)。我不确定为什么我不能让零件列表只与一个字符串搜索器一起工作,也许这是我的FME版本的限制,哦,好吧。
正则表达式…
(\d*)度外推度值
(\d*)外推mins值
(\d+\.\d*)“(\d*)”表示秒(表示十进制和非十进制秒值)
然后将得到的三个匹配结果属性推送到字符串替换器,使用regex(''')删除特殊字符,然后在属性创建者中用fme数学函数将它们转换为十进制…
(@add(@value(_matched_characters_lat_d),@div(@value(_matched_characters_lat_m),60),@div(@value(_matched_characters_lat_s),3600)))
whew:)我确信有一种更优雅的方式,但我觉得强迫自己学习雷吉斯更好!如果有人知道一个更优雅的方式,我仍然很高兴听到它!
?2019安全亚搏在线软件公司|合法的