/ Geodjango / GEOSでkmを度に変換するにはどうすればいいですか? - python、django、gis、geodjango

Geodjango / GEOSでキロメートルを度に換算するにはどうすればいいですか? - python、django、gis、geodjango

私はGEOS APIの "buffer"メソッドを使ってGeoDjangoの点と半径に基づいた円を作成しています。 GeoDjango:ポイントと半径に基づいて円を作成する方法

あるコメント執筆者が指摘したように、半径をkm単位で度に変換する必要がありますが、どうすればよいでしょうか?それは素早い公式ですが、ギリシャ語です。

回答:

回答№1は14

答えは、地球上の場所に依存するかもしれません。 赤道付近では、1kmは約0.008度(1km / 40,000km * 360度)の緯度と経度に等しくなりますが、極の近くでは1kmは約0.008度の緯度に等しくなりますが、多くの経度になります。 (もしあなたが1km離れてポールから離れていれば、1kmの「西」は西経約57度になります。)

しかし、APIが偉大な(おそらくそれは十分です(n km / 40,000 km * 360度)、少なくとも40,000 kmは「十分に良い」です:)もっと正確な数字 ご利用いただけます.


回答№2の6

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

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

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


回答№3の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)

回答№4の場合は0

距離=度* PI *直径/ 360

地球の半径のおおよその見積もりを使用して:6378 km

1度の赤道または経度に沿って:111.317 km

1度のラチチュードにおける緯度に沿った次数は: (度* PI *直径/ 360)* cos(緯度)

だから@ 60緯度: 55 659 mである。