17

この回答によると、GEOS API の「バッファ」メソッドを使用して、GeoDjango でポイントと半径に基づいて円を作成しています: GeoDjango: ポイントと半径に基づいて円を作成する方法

あるコメント投稿者が指摘したように、km 単位の半径を度数に変換する必要があります...しかし、どのように? 簡単な式だと思いますが、私にはギリシャ語です。任意のポインタに感謝します。

4

4 に答える 4

18

答えは、地球上の場所によって異なる場合があります。赤道付近では、1km はおよそ 0.008 度 (1 km / 40,000 km * 360 度) の緯度と経度に等しくなりますが、極付近では、1km はおよそ 0.008 度の緯度に等しくなりますが、経度は何度にもなる可能性があります。(極から 1 km 離れている場合、「西」に 1 km 移動すると、およそ西経 57 度になります。)

ただし、API が測定値として大円に沿った度数のみを必要とする場合は、(n km / 40,000 km * 360 度) を使用するだけで十分でしょう。少なくとも、40,000km は「私には十分」です:) より正確な数値が利用可能です

于 2011-03-07T08:29:08.587 に答える
7

緯度 1 度は、赤道で約 110.567 km、極で約 111.699 km です。

これlinkはあなたにとって興味深いかもしれません。変換は、地球の円周を 360 度で割った値に基づいています。

1 度の長さは、赤道では約 111km で、極に行くと -> 0 になります。

于 2011-03-07T10:48:35.640 に答える
4

GEOS django API のバッファは、現在の座標系で使用されている単位を使用してバッファを作成します。

すべてを 4326 (緯度/経度) で保存している場合は、KM を度に変換するためのトリッキーな方法を見つける必要があります。しかし今では、北に行けば行くほどバッファーがひどく歪んでしまいます。

より良い解決策は、ジオメトリを面積を維持する投影に再投影することです。多くの場合、そのような投影はメートル単位で追跡できます。

たとえば、北米で緩衝エリアを作成する場合、メートルを使用するこの投影法を使用できますhttp://spatialreference.org/ref/sr-org/7314/

Django GEOS API を使用してこれを行う方法の例を次に示します。

    from django.contrib.gis.geos import Point

    # Defines a point in lat/long
    p = Point(-70, 50) 

    # This projection defines lat/long coordinate system
    p.srid = 4326 

    # Transform into the 7314 projection using the OGC WKT format to define that projection
    p.transform('PROJCS["NA Lambert Azimuthal Equal Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["degree",0.0174532925199433]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["false_easting",0.0],PARAMETER["false_northing",0.0],PARAMETER["longitude_of_center",-100.0],PARAMETER["latitude_of_center",45.0],UNIT["meter",1.0]]')

    # Creates a buffered polygon of 1000 meters in radius
    poly = p.buffer(1000)
于 2013-10-18T17:32:34.950 に答える
2

距離 = 度 * PI * 直径 / 360

地球の半径の概算値を使用: 6378 km

赤道または経度での 1 度 @: 111.317 km

x 緯度での緯度に沿った 1 度は次のとおりです。(度 * PI * 直径 / 360) * cos (緯度)

したがって、@ 60 緯度: 経度方向に 55 659 m。

于 2011-03-10T16:01:12.177 に答える