8

ジオ ポイントの正しいデータ型が必要でした。

google map APIで取得して表示するので、

  • 42.761819,11.104863
  • 41.508577、-101.953125

使用事例:

  • ユーザーが地図をクリック
  • djangoはこの点を追加データで保存します
  • 次に訪問するジャンゴで、このポイントを地図上に表示します

したがって、ポイント間の距離などのハックはありません。

DB: ポストグル 8

ジャンゴ: 1.4

4

5 に答える 5

3

緯度と経度を保存するようです。これにはDecimalFieldを使用し、各数値を個別に保存します。

于 2012-07-10T20:26:04.993 に答える
3

DecimalField に関するdjangoのドキュメントから:

DecimalField.max_digits

数値で許可される最大桁数。この数は decimal_places 以上である必要があることに注意してください。

DecimalField.decimal_places

数値とともに格納する小数点以下の桁数。

これはPython Decimalを参照しています

正確なデータ型と精度を適切に選択するには、次のことを考慮する必要があります。

  1. 可能な最小値 (緯度は 0 (下) から (-) 90 度まで) _ _.
  2. 可能な最大値 (経度は 0 (下) から (-) 180 度までの範囲) _ _ _.
  3. 精度 (decimal_places) とは何ですか? Google マップのズーム レベルに影響することに注意してください。

ところで、理解を深めるために、計算がどのように行われるか (Python コード) を知っておくとよいでしょう。

def deg_to_dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]

def decimal(deg,min,sec): 
    if deg < 0:
       dec= -1.0 * deg + 1.0 * min/60.0 + 1.0 * sec/3600.0
       return -1.0 * dec
    else:
        dec=1.0 * deg + 1.0 * min/60.0 + 1.0 * sec/3600.0;

    return dec
于 2013-11-11T03:50:59.537 に答える
1

私はdjangoのセットアップで経度と緯度を使用しています。

私のモデルには以下が含まれます:

long_position   = models.DecimalField (max_digits=8, decimal_places=3)
lat_position   = models.DecimalField (max_digits=8, decimal_places=3)

精度を高めるには、decimal_places をより多くしたい場合があります。

Google Map API メソッドで表示する場合は、モデルを参照し、Python コードを記述して次のように出力します。

output = some_long_position + "," + some_lati_position
于 2012-07-10T22:21:39.357 に答える