예를 들어 다음 타일 http://a.tile.openstreetmap.org/3/4/2.png를 가져 와서 "4_2.png"로 저장합니다.
이 타일 WGS84 좌표 계산되거나 판독 될 수 있다 해당 타일 클릭 :
0 66.51326044311185 45 40.97989806962013 (West North East South)
타일을 올바르게 참조하는 방법 (gdal을 사용하여 geotiff 또는 다른 지리 참조 형식을 생성하는 방법) :
- 비트 맵을 늘일 필요는 없습니다 (= Geotiff의 픽셀은 원래 비트 맵의 픽셀과 정확히 동일합니다)
- 결과 이미지가 GIS 뷰어 / 편집기의 올바른 위치에 열립니다 (예 : TatukGIS Free Viewer )?
(질문을 명확하게하고 결론을 포함시키기 위해 2011 년 9 월 19 일에 편집 함)
내 결론 :
나는 먼저 세 번째 아이디어 (아래 참조)가 올바른 아이디어라고 생각했습니다. GIS 뷰어에서 geotiff를 열고 표시된 좌표를 예상 한 것과 비교했습니다. 두 번째 아이디어에서 나온 지오텍은 북쪽으로 2 픽셀 이동 한 것으로 보입니다. 그렇기 때문에 아이디어 3 (또는 4)을 올바른 아이디어로 생각했습니다.
그러나 훨씬 높은 줌 레벨에서 타일을 사용하면 아이디어 3의 지오 틱이 결정적으로 남쪽으로 이동합니다. 확대 / 축소 수준 3의 타일에서 좌표를 비교하는 것은 어리석은 일이었습니다. 그러한 확대 / 축소 수준의 국가 경계는 크게 단순화되어 비교 결과가 좋지 않습니다.
Dan S.가 옳았습니다. 타일 이미지는 이미 EPSG : 3857입니다. 두 번째 아이디어는 올바른 아이디어입니다 (높은 줌 레벨에서도 좋은 결과를 제공합니다)
첫 번째 아이디어 : EPSG : 4326
WGS84 좌표의 EPSG 코드는 EPSG : 4326 입니다. 따라서 gdal_translate을 사용하여 WGS84 좌표를 사용하여 타일을 geotif로 지오 레 퍼런 싱합니다 .
gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 66.51326044311185 45 40.97989806962013 -a_srs EPSG:4326 4_2.png t4326.tif
결과지도가 올바른 위치에 표시되지만 투영이 정확하지 않고 타일 중간에 이동이있을 수 있습니다. gdalwarp을 사용하여 맵을 다시 투영하여 오랜 시간 동안 노력한 후 Global Mapper 의 데모 버전을 다운로드했는데 이것이 사실 인 것 같습니다 (아이디어 3과 같은 경계이지만 타일 내부의 이동). EPSG : 4326 좌표를 사용할 수 있도록 이미지를 streched해야합니다.
두 번째 아이디어 : EPSG : 3857
이 타일은 "웹 메르카토르"투영 (별칭 Google 맵 투영)을 사용하며 EPSG 코드는 EPSG : 3857 (별칭 EPSG : 900913)입니다. gdaltransform을 사용하여 좌표를 간단히 변환합니다 .
gdaltransform -s_srs EPSG:4326 -t_srs EPSG:3857
0 66.51326044311185
0 10018754.1713946 0
45 40.97989806962013
5009377.08569731 5009377.08569731 0
미터 단위의 내 좌표는 다음과 같습니다.
0 10018754.1713946 5009377.08569731 5009377.08569731 (West North East South)
이제 gdal_translate 를 사용하여 geotiff를 생성 할 수 있습니다 .
gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 10018754.1713946 5009377.08569731 5009377.08569731 -a_srs EPSG:3857 4_2.png t3857.tif
지도의 경계가 북쪽으로 이동했기 때문에 이것이 정확하지 않다는 인상을 받았습니다. 올바른 생각 인 것 같습니다.
세 번째 아이디어 : EPSG : 3857-EPSG : 4055
"웹 메르카토르"는 WGS84 좌표를 사용하지만 구형 좌표 인 것처럼 생각합니다. 측지와 지구 중심 위도의 차이로 인해 (위도 에 대한 위키 백과 참조 ) 위도 값은 타원체 또는 구에서 동일하지 않습니다. 그 발견 EPSG을 : 4055은 WGS84에 따라 구에 구형 좌표에 대한 코드입니다.
좌표를 EPSG : 4055로 변환 :
gdaltransform -s_srs EPSG:4326 -t_srs EPSG:4055
0 66.51326044311185
0 66.3722684317026 -17964.0621483233
45 40.97989806962013
45 40.7894557844857 -9152.84527519904
해당 구면 좌표는 다음과 같습니다.
0 66.3722684317026 45 40.7894557844857 (West North East South)
그런 다음 여전히 타원체 (EPSG : 4326)에있는 좌표를 웹 메르카토르로 변환합니다.
gdaltransform -s_srs EPSG:4326 -t_srs EPSG:3857
0 66.3722684317026
0 9979483.26733298 0
45 40.7894557844857
5009377.08569731 4981335.86590183 0
결과 좌표는 idea2와 다릅니다.
0 9979483.26733298 5009377.08569731 4981335.86590183 (West North East South)
이제 좌표를지도에 써야합니다.
gdal_translate -of Gtiff -co tfw=yes -a_ullr 0 9979483.26733298 5009377.08569731 4981335.86590183 -a_srs EPSG:3857 4_2.png t3857_through_4055.tif
이 세 번째 아이디어는 최상의 결과를 제공하는 것 같습니다. 그러나 그것이 정확한지 확실하지 않습니다. 아이디어 3이 올바른 경우이 작업을 한 번에 수행 할 EPSG 코드가 있습니까?
넷째 아이디어 : EPSG : 3857 ~ towgs84 = 0,0,0,0,0,0,0
gdal (그리고 분명히 epsg도)은 EPSG : 3857을 다음과 같이 정의합니다 :
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs
spacereference.org는 다음과 같습니다.
+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
patialreference.org의 정의를 사용하면 한 단계에서 올바른 좌표 를 얻습니다 (아직 "올바른"좌표는 아니지만 적어도 아이디어 3과 동일합니다).
gdaltransform -s_srs EPSG:4326 -t_srs "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
0 66.51326044311185
0 9979483.26733298 -17964.0621483233
45 40.97989806962013
5009377.08569731 4981335.86590183 -9152.84527519904
EPSG : 3857의 정의에 왜 그러한 차이가 있습니까?