[OSGeoJapan-discuss] GDALのPython版の精度

Miura Hiroshi miurahr @ osmf.jp
2017年 4月 24日 (月) 04:15:20 PDT


ありがとうございます。
おそらく、C/C++とPythonのブリッジを提供するSWIGによる制限ですね。
https://github.com/swig/swig/blob/master/Source/Modules/python.cxx#L2056

このあたりに、C++の .xxf は Fを落すと書いてあります。

三浦

2017年4月24日 12:42 Taro Matsuzawa <taro @ georepublic.co.jp>:

> 松澤です。
>
> C++の方のコードは .15f で、
> Pythonの方のコードは .15g なので、
> そこらへんから調べて見るとよいのではないでしょうか?
> (latitudeだと2桁の違いになる)
>
> また、Pythonの表示をするための文字に変換する組み込み関数の
> repr()では物によっては .15g となります。
> ただ、以下の結果だと期待したものにはなりませんでした。
>
> >>> repr(139.718509733734379)
> '139.71850973373438'
> >>> format(139.718509733734379, '.15g')
> '139.718509733734'
>
> あと、gdal-2.0.2のコードが手元にあったので検索してみましたが、
> 決定的な所はわからなかったです。
>
> ちなみに、座標の比較を行う時は必ず誤差がある前提で比較をします。
> よくこんなのを先に定義してやったりします。
>
> ```python
>     EPSILON1 = 0.1
>     EPSILON2 = 0.01
>     EPSILON3 = 0.001
>     EPSILON4 = 0.0001
>     EPSILON5 = 0.00001
>     # ...
>     EPSILON16 = 0.0000000000000001
>     EPSILON17 = 0.00000000000000001
> ```
>
>
> On 2017/04/23 9:19, Miura Hiroshi wrote:
>
>> 三浦です。
>>
>> 先月、基盤地図情報のコンバーターについて、取組をご紹介しました。
>> 現在、テストケースで悩んでおり、皆さんの知見をお聞かせ頂きたいです。
>>
>> FGDConvプロジェクト
>> https://github.com/miurahr/fgdconv
>>
>> テスト結果
>> https://travis-ci.org/miurahr/fgdconv/builds/223815639
>>
>> こちらの結果で、生成されるべきデータの正解を、GDALの
>> C++版のコマンドで生成しました。
>> ところが、PythonのGDALで生成したものと、値が異なるというのです。
>>
>> 結果3132行目を細かく見ますと、
>> 実際:139.718509733734
>> 期待:139.718509733734379
>> のように、桁が3桁も違っています。値はあっているようです。
>>
>> なぜ、こんなに桁の精度が違うのでしょう?
>>
>> 該当するコードは、この辺ですが、値をPython側で明示的に処理しているわけで
>> はないので、不思議に思っています。
>> https://github.com/miurahr/fgdconv/blob/master/fgdconv/ogr2ogr.py#L82
>>
>> 三浦
>>
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>>
>>
>
> --
> Georepublic Japan Ltd.
> c/o CommunityLink
> 5-3-1 Kumoidori, Chuo Ward
> Kobe 651-0096
>
> Taro Matsuzawa
> Senior Developer
>
> eMail: taro @ georepublic.co.jp
> Web: https://georepublic.info
>
> Tel: +81 (03) 6868 5418
> Fax: +81 (03) 3374 0291
> _______________________________________________
> OSGeoJapan-discuss mailing list
> OSGeoJapan-discuss @ lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20170424/317e8bf4/attachment.html>


OSGeoJapan-discuss メーリングリストの案内