0

私はDjangoに不動産サイトを構築していて、住所を含むさまざまな情報を格納するHomeモデルを持っています。データベースバックエンドはMySQLを使用しています。

検索のようなYelpを作成したい。

  • ユーザーが郵便番号または都市名を入力して、その地域のホーム結果を取得できる検索。

  • ユーザーは、ポイントから半径(5 mi、10 mi ...)を選択して、より多くの/より少ない結果を取得することもできます。

  • 検索結果はグーグルマップに表示され、ユーザーはズームイン/ズームアウトしてマップ内の新しい検索結果を取得できます。

Geo Djangoはここにぴったりですか?上記の問題を解決するためのドキュメントがあまり見つからないため、GeoDjangoを使用している人はそれほど多くないと思います。

公式ドキュメントを数時間見た後 、私の問題に関連する例を実際に見つけることができず、MySQLを使用して既存のWebサイトとどれだけうまく統合できるかわかりません。たぶん、私の単純な場所の使用には洗練されすぎていますか?

Geo Djangoが適しているかどうか、本当に興味があります。そうであれば、もっと積極的かつ深く調べていきます。そうでない場合は、自分で作成してみます。

GeoDjangoまたはシステムの構築方法に関するガイダンスやヒントは非常に役立ち、非常に高く評価されます。

4

4 に答える 4

3

GeoDjangoはそのようなものを処理できます。Homeモデルが次のようになっているとします。

from django.contrib.gis.db.models import PointField

class Home(Model):
    location = PointField()
    .. etc

Home次のように、ポイントからxマイル以内のすべてのモデルをフェッチできます。

from django.contrib.gis.measure import D
from django.contrib.gis.geos import Point

Home.objects.filter(location__distance_lte=(Point([...]), D(mi=x)))

Point基本的に、フィルターに与える必要があるのは、ジオメトリ(この場合)と距離(Dオブジェクトの場合。距離を表す単位の範囲が広い)を含むタプルmiです。

また、これを処理するバックエンド関数がないため、これはMySQLでは機能しません。あなたの最善の策はPostgreSQLです。

于 2011-06-03T16:41:20.173 に答える
2

同様の機能(アドレスと緯度/経度座標でいっぱいのMySQLデータベース)を備えたサイトをDjango上に構築しました。私はDjangoとGeoDjangoに精通しているコホートと話をしましたが、彼らはそれが私のプロジェクトにとって少しやり過ぎかもしれないと勧めました。

したがって、データベースの移行が非常に面倒で必要がない場合は、現在のデータベースに固執し、Haversine数式クエリを使用して場所に最も近いポイントを見つけるだけで十分な場合があります。

于 2011-06-03T22:13:49.117 に答える
0

すでにDjangoを使用している場合、GeoDjangoは非常に理にかなっています。ただし、ユースケースにLuceneを使用することも検討する必要があります。地理的なクエリを処理でき、多面的なクエリやあいまい検索(多くの家があるサイトで使用したいもの)を実行する必要がある場合は、おそらくmysqlクエリよりも優れたパフォーマンスを発揮します。

于 2011-06-05T17:30:20.603 に答える
-1

GeoDjangoは機能しますが、初心者ユーザーにとってはインストールが非常に困難です。また、GeoDjangoにはMySQLにいくつかの制限があります。私が知っているように、それはpostgresqlで最高を示しています。

geodjangoのインストールでどのような問題が発生しますか?

geodjangoのインストールプロセスを理解し始める前に、私は約10〜20時間を無駄にしました:)

于 2011-06-03T16:39:24.553 に答える