私が使用してのGeoTIFFファイルから情報を抽出していますgdalinfo
基づいてTHIS、私は以下のようになります。
Driver: GTiff/GeoTIFF
Files: myfile.tif
myfile.tif.aux.xml
Size is 953, 2824
Coordinate System is:
PROJCS["Lambert_Conformal_Conic_2SP_World_Geodetic_System_1984",
GEOGCS["GCS_World_Geodetic_System_1984",
DATUM["D_World_Geodetic_System_1984",
SPHEROID["WGS_1984",6378137,298.257223563,
AUTHORITY["EPSG","7030"]]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Lambert_Conformal_Conic_2SP"],
PARAMETER["standard_parallel_1",66],
PARAMETER["standard_parallel_2",78],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-42],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (-432678.541899999952875,9726108.134099999442697)
Pixel Size = (300.000000000000000,-300.000000000000000)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( -432678.542, 9726108.134) ( 53d58'12.29"W, 70d52'36.63"N)
Lower Left ( -432678.542, 8878908.134) ( 50d38' 9.28"W, 63d22'47.25"N)
Upper Right ( -146778.542, 9726108.134) ( 46d 6'31.44"W, 71d13'15.48"N)
Lower Right ( -146778.542, 8878908.134) ( 44d56'51.10"W, 63d37'31.84"N)
Center ( -289728.542, 9302508.134) ( 48d45'16.75"W, 67d18'24.75"N)
Band 1 Block=128x128 Type=Float32, ColorInterp=Gray
Min=0.900 Max=1.100
Minimum=0.900, Maximum=1.100, Mean=0.993, StdDev=0.025
NoData Value=-3.4028234663852886e+38
Metadata:
RepresentationType=ATHEMATIC
STATISTICS_MAXIMUM=1.1000000238419
STATISTICS_MEAN=0.99293445610505
STATISTICS_MINIMUM=0.89999997615814
STATISTICS_SKIPFACTORX=1
STATISTICS_SKIPFACTORY=1
STATISTICS_STDDEV=0.025099979310242
緯度/経度の基準に基づいて、4つのコーナーのkm距離を再現しようとしています。経度を取得することはできますが、どういうわけか私の緯度はかなり離れています...これが私がそれを行う方法です:
import geopy
from geopy import distance
from geopy.location import Point
p1 = Point('''70 52'36.63" N 53 58'12.29" W''')
p2 = Point('''0 N 53 58'12.29" W''') #Same longitude, but latitude set to 0
distance.distance(p1,p2).m # WGS84 distance in m
ベースはgdalinfo
出力をドンします、私は戻ることを期待します9726108.134
、しかし代わりに、私は出7866807.760742959
ます。投影ミスにはなりすぎだと思います。私が間違っていることの他の提案はありますか?
この例でkmを再現している場合、自分の方法で緯度をkm単位で正しく取得できることに注意してください...
距離チェックでは、次の2つの前提があります。
ただし、これらの両方は当てはまりません。これは、2つの予測の違いを説明するためのプロットです。
左側のプロットは、GeoTiffでWGS84の緑色のポリゴンとして描かれている領域を示し、右側のプロットは、再投影で同じことを示しています。ご覧のとおり、ポイント0°N、0°Eは現在7633606.089886177、2779916.995372205にあります(一方、-再投影のポイント0、0は0°N、WGS84では-42°Eになります)。さらに、WGS84では、右側に完全な長方形を形成する画像領域が歪んでいます。
簡単に言うと、予測に固有の違いがあるため、実行したチェックでは期待した結果が得られません。概算として、代わりに4つのコーンの座標を使用してチェックを行うと、結果は(ほぼ)正しいことがわかります。左上隅と左下隅を使用した例を次に示します。
p1 = geopy_Point('''70 52'36.63" N 53 58'12.29" W''')
p2 = geopy_Point('''63 22'47.25" N 50 38' 9.28" W''')
distance.distance(p1,p2).m
どちらが返されますか:
848195.724897564
これは、予想される距離(9726108.134-8878908.134 = 847200)に非常に近く、指定されたWGS84座標の丸めのためにわずかにずれています。
お役に立てれば!
編集:
WGS84から再投影に変換する方法の提案は次のとおりです。
import osr
from pyproj import Proj, transform
def reproject(x_in, y_in):
proj_in = Proj(init='epsg:4326')
osr_spat_ref = osr.SpatialReference()
osr_spat_ref.ImportFromWkt('''PROJCS["Lambert_Conformal_Conic_2SP_World_Geodetic_System_1984",
GEOGCS["GCS_World_Geodetic_System_1984",
DATUM["D_World_Geodetic_System_1984",
SPHEROID["WGS_1984",6378137,298.257223563,
AUTHORITY["EPSG","7030"]]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Lambert_Conformal_Conic_2SP"],
PARAMETER["standard_parallel_1",66],
PARAMETER["standard_parallel_2",78],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-42],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]''')
spat_ref_pyproj = osr_spat_ref.ExportToProj4()
proj_out = Proj(spat_ref_pyproj)
out = transform(proj_in, proj_out, x_in, y_in)
return out
経度と緯度の座標x_in
をy_in
それぞれととして入力するだけで、再投影された座標を取得できます。これらから、コーナーの座標を差し引くことにより、画像のどのタイルに関心があるかを判断できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加