1
GEOTIFF FAA 단면 차트에서 위도 및 경도 위치를 픽셀 위치 (x, y)로 변환하려고합니다. 참고로, 내가 일하고있는 시애틀 섹션 파일을위한 GDALInfo 출력물이 있습니다.GDAL을 사용하여 FAA 단면의 픽셀 위치 찾기
Driver: GTiff/GeoTIFF
Files: d:\programming\gps\Seattle SEC 94.tif
Size is 17869, 12333
Coordinate System is:
PROJCS["Lambert Conformal Conic",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.2572221010042,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4269"]],
PROJECTION["Lambert_Conformal_Conic_2SP"],
PARAMETER["standard_parallel_1",46.66666666666666],
PARAMETER["standard_parallel_2",41.33333333333334],
PARAMETER["latitude_of_origin",46.75],
PARAMETER["central_meridian",-121],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (-409375.329186913440000,261032.079643933710000)
Pixel Size = (42.334884781508684,-42.335597515618694)
Image Structure Metadata:
COMPRESSION=LZW
INTERLEAVE=BAND
Corner Coordinates:
Upper Left (-409375.329, 261032.080) (126d34'48.90"W, 48d58'12.69"N)
Lower Left (-409375.329, -261092.845) (126d 8'14.67"W, 44d17' 3.85"N)
Upper Right ( 347106.727, 261032.080) (116d15'59.44"W, 49d 0'18.33"N)
Lower Right ( 347106.727, -261092.845) (116d38'32.78"W, 44d19' 0.07"N)
Center ( -31134.301, -30.382) (121d24'26.75"W, 46d44'56.53"N)
다음과 같은 탐색 코드 (C++)를 아래에 작성했습니다. 위도와 경도의 변형을 수행하면 결과 픽셀 위치가 예상 한 것과 다릅니다. 예를 들어, 중심 경도 및 위도 위치를 x, y 픽셀 위치로 변환하려고 할 때.
long = 121.407431 and latitude = 46.749036 This is the center point from the GDALInfo output converted to decimal form.
내가 얻을 :
(Approx.) x = 8935 and y = 6167
은 분명히 내가 잘못 내 변환을 설정 또는 추가 번역 및/또는 스케일링이 필요했다 : 나는 예상대로
x = -6234845.2270864788 and y = 5392747.8923152313
. 다음은 C++의 탐색 코드입니다. 이 코드는 스택 오버플로와 비슷한 질문에서 파생되었지만 예상 한 결과가 아닙니다. 제공 할 수있는 도움을 주시면 감사하겠습니다.
GDALAllRegister();
GDALDataset* poDataset = (GDALDataset *)GDALOpen("D:\\programming\\gps\\Seattle SEC 94.tif", GA_ReadOnly);
const char * szProjection = poDataset->GetProjectionRef();
OGRSpatialReference dst(szProjection);
OGRSpatialReference src;
src.SetWellKnownGeogCS("WGS84");
OGRErr error = dst.Validate();
error = src.Validate();
OGRCoordinateTransformation* pTransform = OGRCreateCoordinateTransformation(&src, &dst);
// Center point of map in lattitude and longitude
double lng = 121.407431;
double lat = 46.749036;
double x = lng;
double y = lat;
pTransform->Transform(1, &x, &y);
예상치 못한 x 및 x 값.
실제 : X = -6234845.2270864788와 y = 5392747.8923152313
예상 : (. 약) X = 8935와 y = A 마지막 단계가 필요하다 6167
감사합니다. Sga! 그 고정 된 것들을 멋지게. 나는 사소한 다른 하나의 변화를 만들어야 만했다. 나는 경도를 음수 (-121.407431)로 표현해야했다. 이유는 아직 모르지만 모든 것이 지금 작동 중입니다. 나는 행복하다. 도움을 주셔서 감사합니다. – Olan
GDAL은 반구 (이 경우 'W'), '121d24'26.75'W'를 포함하는 형식으로 출력합니다. 10 진수 형식으로 변환하면 서반구의 좌표는 음수입니다 (그렇지 않으면 문자 그대로 중국에서 끝납니다). –