극지 입체화를위한 지리 변환?


16

현재 CANGRID 기후 데이터 (Surfer Grid ascii, ".grd"파일로 제공)를 ArcGIS로 가져 오기 위해 노력하고 있습니다. 격자의 크기는 95 행 x 125 열입니다. 메타 데이터 는 위도 / 경도 (왼쪽 아래), 셀 크기 (50km), 중앙 자오선 (110W) 및 원점 (60 ° N)의 극좌표 입체로 투영 된 음표를 제공합니다.

성공적으로 .grd를 ​​.ascii 및 .flt로 래스터로 변환하려고 시도한 후 GDAL을 사용하여 범위와 투영을 설정했지만 데이터 세트가 의도 한 영역의 경계와 올바르게 정렬되지 않았습니다. 아래 이미지를 참조하십시오.

이러한 정렬 결여를 설명 할 수있는 극지방 입체 영상에 대해 허용되는 지리 변환이 있습니까?

예를 들어 사용해야하는 특정 변환 계수 또는 회전이 있습니까?

데이터 세트의 예제 파일은 다음과 같습니다. "t201113.grd"

현재 GDAL에서 사용중인 코드는 다음과 같습니다.

ds = gdal.Open("t201113.grd")
array = ds.ReadAsArray()

x_rotation = 0
y_rotation = 0
xres = 1
yres = -1

llx = -129.8530
lly = 40.0451
ulx = -175.144
uly = 71.385

input_osr = osr.SpatialReference()
input_osr.ImportFromWkt(ds.GetProjection())

wgs84_osr = osr.SpatialReference()
wgs84_osr.ImportFromEPSG(4326)

wgs_to_nps_trans = osr.CoordinateTransformation(wgs84_osr, input_osr)
x, y, z = wgs_to_nps_trans.TransformPoint(llx,lly)

geo_transform = [ x, xres, x_rotation, y, y_rotation, yres ]

ncol = ds.RasterXSize
nrow = ds.RasterYSize

out_driver = gdal.GetDriverByName("HFA")
out_ds = out_driver.Create(t201113.img", ncol, nrow, 1, gdal.GDT_Float32)

out_ds.SetGeoTransform(geo_transform)

out_prj = 'PROJCS["North_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",60.0],UNIT["50_Kilometers",50000.0]]'

out_ds.SetProjection(out_prj)

out_ds.GetRasterBand(1).WriteArray(array)
out_ds.GetRasterBand(1).SetNoDataValue(1.70141e+038)
out_ds.FlushCache()
out_ds = None
`

또한 입력에 의해 정의 된 "GetProjection ()"의 투영 정보는 다음과 같습니다.

'PROJCS [ "North_Pole_Stereographic", GEOGCS [ "GCS_WGS_1984", DATUM [ "WGS_1984", SPHEROID [ "WGS_1984", 6378137.0,298.257223563]], PRIMEM [ "Greenwich", 0.0], UNIT [ "Degree", 0.0174532925199433] PROJECTION [ "Stereographic"], PARAMETER [ "False_Easting", 0.0], PARAMETER [ "False_Northing", 0.0], PARAMETER [ "Central_Meridian", 0.0], PARAMETER [ "Scale_Factor", 1.0], PARAMETER [ "Latitude_Of0.0O_in_Origin" ], UNIT [ "50_ 킬로미터", 50000.0]] '

입력 GeoTransform :

(-0.5, 1.0, 0.0, 94.5, 0.0, -1.0)

위도, 긴 그리드 좌표도 제공되며 투영 좌표계에서 볼 때 아래와 같습니다. 지오 변환이 왼쪽 하단 (노란색) 또는 오른쪽 상단 (분홍색) 좌표의 좌표로 정의되면 범위를 효과적으로 설정할 수 있지만 래스터 전체에 정렬 문제가 남아 있습니다.

여기에 이미지 설명을 입력하십시오


ArcGIS를 사용하는 경우 Stereographic North Pole로 전환하고 표준 병렬을 60.0으로 설정하십시오. ArcGIS 스테레오 그래픽 구현은 프로젝트를 어느 곳에 나 배치 할 수 있기 때문에 표준 병렬이 아닌 스케일 팩터를 사용합니다.
mkennedy

감사합니다 @mkennedy- "North Pole Stereographic"proj (WKID 102018)을 의미합니까? 이 투영법을 사용하여 원점 및 중심 자오선 값을 설정했지만 여전히 동일한 문제가 있습니다. 아마도 다른 계획을 언급하고 있습니까?
jsnider

아니요, 투영 (방법)이 Stereographic_North_Pole 인 것이 필요합니다. 우리에게 정확한 PCS가 있다고 생각하지 않습니다. 3995 또는 3413에서 수정 해보십시오.
mkennedy

1
메타 데이터는 "grid_pnt_lls.txt 파일은 각 x / y에 대한 위도 / 경도를 나열합니다 (0,0 = 그리드의 SW 코너)." 이 파일을 손에 넣으면이 그리드를 원하는 좌표계로 재 투영 할 수 있습니다.
whuber

1
벡터 레이어를 어디에서 테스트로 다운로드 할 수 있습니까?
Farid Cheraghi

답변:


2

의견이 너무 길면 @ Matej 's answer 와 함께하는 입니다.

  1. ".grd"데이터를 ArcGIS에 추가하십시오.
  2. "다른 형식으로 래스터"기능을 사용하고 .grd 파일을 ESRII GRID 형식으로 변환하십시오. ArcGIS의 대부분의 래스터 기능은이 형식으로 만 액세스 할 수 있기 때문에 중요합니다. 다른 형식에서 사용할 때는 일반적으로 속도가 너무 느립니다.

  3. 이미 투영 파일이 파일과 관련되어 있기 때문에. 새로운 변환 된 데이터를 투영하는 대신 투영을 정의하십시오. ArcToolbox> 데이터 관리 도구> 투영 및 변환> 투영 정의. 사전 정의 된 극지 스테레오 그래픽 ESRII 프로젝션으로 이동하여 해당 매개 변수가 메타 데이터에 지정된 것과 일치하는지 확인할 수 있으므로 @Matej에 따라 수정할 수 있습니다. 여기서 만 수정하는 것이 아니라 중앙 자오선과 원점 위치가 변경된 NPS 투영을 기반으로 새 투영을 생성하고 디스크에 저장 한 다음 새 투영으로 이동하여 투영을 정의 할 때 사용하십시오. 나중에 데이터 프레임의 좌표계를 설정하는 데 사용할 때 즉시 수정 기능을 사용할 수 없기 때문입니다.



1

이미지를 다시 투영해야한다고 생각하지 않습니다. 다음을 수행하십시오.

  1. 베이스 맵의 투영을 정의 (수정)
  2. 이미지를 지정된 위치로 지리 참조 (시프트)

이미지 (grd)는 이미 북극 스테레오 그래픽 투영에 있으며 이미지와 정렬 될베이스 맵을 조정하는 방법에 대한 표시 만 제공합니다.

1 단계 :

오리지널 위도 및 중앙 자오선을 조정하도록 원래 북극 입체 투영법 (WKID : 102018)을 수정하십시오.

여기에 이미지 설명을 입력하십시오

2 단계:

왼쪽 하단 모서리를 지정된 좌표 (lat, lon)로 설정하여 grd 파일을 지리 참조하십시오. 지리 참조를 업데이트하면 .gdwx 파일이 동일한 폴더에 생성됩니다. SW 코너를 (40.0451, -129.853)에 할당 할 때 파일의 내용은 다음과 같습니다.

50000
0
0
-50000
-1730620.4315
2744092.9724

편집 : 위의 세계 파일은 셀 크기를 기반으로 수동으로 수정되었으며 SW 모서리의 위치-5 번째 및 6 번째 행은 이미지의 왼쪽 상단 픽셀의 계산 된 위치를 나타냅니다. 이미지의 위치가 약간 변경되었습니다.

위의 값은 이미지를 지정된 위치로 배치 (이동)하고 배율을 정의합니다.

그리고 이것은 출력입니다. 여기에 이미지 설명을 입력하십시오

이것이 올바르게 정렬되지 않으면 이미지의 SW 코너에 제공된 좌표에 의문을 제기합니다. 이미지의 NE 코너 좌표에 액세스 할 수있는 경우 이미지를 두 개 (또는 그 이상)의 포인트 사이에서 스케일링하고 회전시키는 변환 매개 변수를 다시 계산할 수 있습니다.


.gdwx 파일은 월드 파일 입니까? 그렇다면 링크 된 위키 기사에 5 및 6 행이 왼쪽 상단 픽셀을 참조한다고합니다 . 남서쪽 (왼쪽 아래) 픽셀로 설정하는 것이 좋습니다?
Kirk Kuykendall

아니요. readme 파일에 명시된대로 SW 코너의 위치 만 지정했습니다. 파일의 구조는 월드 파일처럼 보입니다. NW 코너의 위치를 ​​계산하고 저장했을지도 모르지만 ArcMap에서 Georeferencing 도구를 사용하여 생성되었습니다.
Matej

1
예, 지금 확인했습니다. .gdwx에 저장된 위치는 왼쪽 상단입니다.
Matej
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.