« FOMA(F904i)を使ってベトナム、タイでGPS測位できるか試してみました。 | メイン | The Documentation of UDF, distance_sphere() and distance_spheroid(), for MySQL »

MySQL向け距離関数 distance_sphere(), distance_spheroid() のドキュメント

先に distance_sphere(), distance_spheroid() for MySQL を公開しましたが、
ドキュメントがダウンロードして解凍しないと見れないのは不便だということなので、ここに置きます。
また配布物の中に日本語ドキュメントがなかったので、まずは日本語ドキュメントを。

はじめに
------------------------
このプログラムはユーザ定義関数(UDF)として、PostGISのdistance_sphere(),distance_spheroid()と同様の関数をMySQLに追加するものです。

機能
------------------------
distance_sphere(point, point)
 2つの緯度経度を結ぶ直線距離をメートルで返します。地球を半径6,370,986mの球形として計算します。distance_spheroidより速く計算できますが,正確さは劣ります。点間のみが実装されています。

distance_spheroid(point, point, spheroid)
回転楕円体を指定して2つの緯度経度を結ぶ直線距離を計算します。現在、点間のみが実装されています。

ビルド
------------------------
mysql-5.1.*-beta-GIS のソースコードとともにコンパイルします。

予め、mysql-5.1.*-beta-GISのソースコードを入手しておいてください。
(例: http://downloads.mysql.com/forge/mysql-5.1.23-beta-GIS/ )

1) この配布物に含まれているソースコードをmysql-5.1.*-beta-GIS/sql の中に置いてください。

2) mysql-5.1.*-beta-GIS のソースコードと共にコンパイルしてください。

(例)
g++ -DMYSQL_SERVER -shared -o udf_distance_spheroid.so -I../regex -I../sql -I../include spatial.cc calc_distance_spheroid.cc udf_distance_spheroid.cc

3) "udf_distance_spheroid.so" を mysqlライブラリが置かれているディレクトリに移動してください。
(例)
mv udf_distance_spheroid.so /usr/local/mysql/lib/mysql

使用方法
------------------------
1) 関数をUDFとしてMySQLに追加してください。
 (例)

mysql> CREATE FUNCTION distance_sphere RETURNS REAL SONAME "udf_distance_spheroid.so";

mysql> CREATE FUNCTION distance_spheroid RETURNS REAL SONAME "udf_distance_spheroid.so";

2) 以下のようなクエリで使ってください。
 (例)

mysql> SELECT distance_sphere(GEOMFROMTEXT('POINT(136 36)',4326),GEOMFROMTEXT('POINT(135 35)',4326)) AS dist;

mysql> SELECT distance_spheroid(GEOMFROMTEXT('POINT(136 36)',4326),GEOMFROMTEXT('POINT(135 35)',4326),'SPHEROID["GRS_1980",6378137,298.257222101]') AS dist;

トラックバック

このエントリーのトラックバックURL:
http://okilab.jp/cgi/mt_3/mt-tb.cgi/133

この一覧は、次のエントリーを参照しています: MySQL向け距離関数 distance_sphere(), distance_spheroid() のドキュメント:

» distance_sphere(), distance_spheroid() for MySQL 送信元 OKILab.jp開発日記
I release 2 functions, distance_sphere(), distance_spheroid(), for MySQL. The... [詳しくはこちら]

コメントを投稿