質問

mysql の空間データ型についてはかなりの量の質問がありましたが、私の質問はより具体的な方法です。 最高 Rails MVC アーキテクチャ内でそれらを処理します。

管理者ユーザーが新しい興味のある場所、たとえばレストランを作成して情報を入力できる入力フォームがあります。人間が判読できる緯度と経度を 10 進数形式で入力することもできます。

ただし、距離の計算などには...位置データを空間点としてデータベースに保存しています。

したがって、私の質問は、Rails の MVC アーキテクチャでこれを最適に処理するにはどうすればよいでしょうか?

以下に私が考えたいくつかのアイデアがありますが、実際にはきれいなものは何もありません。

  • :after_filter メソッドを呼び出して、オブジェクトの新しいインスタンスを取得し、「GeomFromText('POINT(lat long)' ))」の機能を処理する生の SQL 更新を実行します。これに関する問題は、「緯度/経度」が作成フォームのテキストフィールドになることです。ただし、緯度/経度は実際には属性ではなく、単にmysql 空間ではない人間による入力値。

  • おそらく、その行を更新する行挿入の後に実行するトリガーをデータベースに作成しますか?まったくわかりませんが、空間点だけでなく緯度/経度も保存し、緯度/経度の小数点を含む行をデータベースに作成しない限り、これらのトリガーは緯度/経度にアクセスできないようです。 、作成後にトリガーを実行して空間を更新します。緯度/経度の列をモデルに追加した場合は、after_filter を使用してそれを行うこともできると思います。

他に何かアイデアはありますか?実際に距離計算などに空間点を使用するので、緯度/経度を保存するのは冗長だと思います...しかし、人間による編集を許可する場合は必要になるかもしれません。

役に立ちましたか?

解決

/無地緯度を使用して距離計算を行いのRailsのための geokitレールのプラグインをチェックしてくださいLNGフロートとしてカラム(及び geokit の宝石を使用します)。あなたは、データベースの地理空間能力を使用したい場合は、 GeoRuby には、などの基本的な空間機能をサポートしています列型としてポイントやラインストリング。私はこれらの助けを願っています。

他のヒント

私は、私はあまりにもそれを使用し、geokitがいいです、絶望的に同意します。

あなたはそれを自分で行いたい場合は、

は、私がafter_filterを行うが、スレッドへの更新方法を外部化します。そのように、あなたは素敵なコードとタイムリーに更新された列を保存するが、それでもながらダウン遅くはありません。

のトリガーが素敵ではありません、データベースがデータを提供しますが、ロジックを行うべきではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top