60進を10進に一括変換No.25451
スーパーT さん 08/09/21 11:35
 
お世話になります。

地図座標の60進を10進にマクロを使い
一括で変換したいのですが可能でしょうか?

データは下記のような表記です。
345758.82N/1370608.84E
261236.88N/1275603.03E
251432.72N/1250102.88E
 ・
 ・

345758.82N/1370608.84E は
北緯34度57分58.82秒 東経137度06分08.84秒 のことです。

これを
34.96633889/137.1024556 のように
10進表記に変換したいのですが
良い方法はございますか?

よろしくお願いいたします。


[ ]
RE:25451 60進を10進に一括変換No.25452
山紫水明 さん 08/09/21 20:17
 
 スーパーTさん,

>これを
>34.96633889/137.1024556 のように
>10進表記に変換したいのですが
>良い方法はございますか?

 この種の数字の扱いはあまり得意ではありませんが,とりあえず次のマクロを
お試しください。多分もっとスマートな方法があると思います。
 なおこのマクロは浮動小数点数版が必要です。
//----------------------------------------------------------//
setfloatmode 1;
disabledraw;
gofiletop;
while( #i < linecount ) {
    $s = gettext( 0, y, linelen, y );
    if( $s == "" ) break;
    $a  = leftstr( $s, strstr( $s, "N" ) );
    call 60to10 $a;
    $aa = $$return;
    $c = midstr( $s, strstr( $s, "/" ) + 1, 99 );
    $c = leftstr( $c, strlen($c) - 1 );
    call 60to10 $c;
    $decimal[#i] = $aa + "/" + $$return;
    #i = #i + 1;
    moveto 0, y + 1;
}
newfile;
while( #j < #i ) {
    insert $decimal[#j] + "\n";
    #j = #j + 1;
}
endmacro;

60to10:
$$a  = leftstr( $$1, strlen( $$1 ) - 7 );
$$b  = midstr( $$1, strlen( $$1 ) - 7, 2 );
$$c  = rightstr( $$1, 5 );
##d  = ( val( $$b ) *60 + val( $$c ) ) / 3600 + 0.00000005;
$$e = $$a + midstr( str( ##d ) , 1, 8 );
return $$e;
//----------------------------------------------------------//


     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:25452 60進を10進に一括変換No.25453
スーパーT さん 08/09/22 03:27
 
山紫水明 様

いつもお世話になります。
完璧でした。
大変感謝申し上げます。



秀丸 担当様

> なおこのマクロは浮動小数点数版が必要です。

説明を拝見しますと
違いについて
通常版(V7.00以上)と浮動小数点数版(統合版)(V7.00以上)の違い
少し遅い。
とありますが
体感でどの程度でしょうか?
気になります。


[ ]
RE:25453 60進を10進に一括変換No.25454
秀丸担当 さん 08/09/22 10:58
 

>説明を拝見しますと
>違いについて
>通常版(V7.00以上)と浮動小数点数版(統合版)(V7.00以上)の違い
>少し遅い。
>とありますが
>体感でどの程度でしょうか?
>気になります。

体感では、ほとんど感じないかもしれません。
数値が少しでも関わっていて、非常に多くの回数ループしているようなマクロの
場合、計測してみると差が出てくるというくらいではないかと思います。

[ ]