用经纬度生成对应的坐标点

原文发布时间:2012-05-29

作者:jason

      对于勘测数据,使用的测量工具为手持GPS的情况下,测量的位置往往是经纬度坐标,单位为度(°)分(′)秒(″),如72°32′56″,这些坐标对往往代表的是重要的设施,比如采矿点、水源点、定位点等。在内业处理、数据入库等环节,如果绘图软件无法解译经纬度坐标对,或者无法存储到数据库时,这就成了一个棘手的问题。不过,FME 提供了一种解决思路,可以快速方便地解决此问题,轻松完成此类数据的绘图、入库。

思路:

1、分割经纬度为独立的经度、纬度(AttributeSplitter)

2、依次去掉经、纬度符号,使其成为分割的数据段

(AttributeSplitter)

3、再将分割的段连接起来(StringConcatenator)

4、生成对应的坐标点(2DPointReplacer)

案例:待处理属性F7(72°32′56″,126°32′22″)

1、用其自身的分隔符(,),提取经、纬度坐标,保存到_list{0},list{1};此时 ,_list{0}=72°32′56″, list{1}=126°32′22″;



2、用符号度(°)分割_list{0},保存到list1{0},list1{1}。此时,list1{0}=72,list1{1}=32′56″;



3、依次类推:

经度:list1{0}=72,  list2{0}=32,list3{0}=56;

纬读:list1{1}=126 list2{1}=32,list3{1}=22;


4、接下来,就需要将不带符号的数据连接起来。注意:有人可能怀疑直接连接“度分秒”的正确性,不用担心,FME专门提供了转换器(AngleConverter),来将这样的数据转换为10进制数据。用转换器StringConcatenator连接经度:


结果为:_long=723256;

用同样的方法连接纬度:结果为:_lat=1263222。


5、将该经纬度数据转换为十进制数据:


 注:DECIMAL_DEGREES - 角度值表示为十进制。

       DDDMMSS - 角度值是以度分秒的整数形式表现。


6、用该坐标生成对应的二维点:



7、完成以上步骤,问题就已解决。整体模板思路如下:


总结:FME不愧是专业的数据处理工具,能精细化到一个细微符号的解决,并提供了各种进制转换的算法,从而免去了繁琐的换算过程,用户直接用转换器调取即可,真正实现了很多用户“不会编程,胜过编程”的愿望。





猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80896982