gdal2tiles에서 생성 된 개별 타일에 대한 위도 경계 계산


16

동일한지도에 표시하려는 gdal2tiles를 사용하여 생성 된 여러 타일 소스가 있습니다. 따라서 타일을 제시 할 때 어떤 소스를 제공할지 결정하고 범위를 확인해야합니다.

누구든지 (gdal2tiles에 의해 생성 된 파일 구조에서) 줌, x 및 y를 기반으로 단일 타일에 대한 위도 경계를 계산하는 방법을 알고 있습니까? BTW : 계산을 돕기 위해 API에서 일부 기능을 호출해야 할 경우를 대비하여 Google Maps API v3을 사용하고 있습니다.

내가 줌, x 및 y로 순전히 제한되는 이유는 타일이지도의 오버레이에 의해 호출 될뿐만 아니라지도 외부에서 인쇄 할 수있는 일부 사용자 정의 인쇄 기능이기 때문입니다.

답변:


22

수학은 다음에 설명되어 있습니다.

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

… 명령 줄 유틸리티의 소스 코드와 온라인 데모를 포함합니다.

또한 매우 간단한 수학입니다.

function tile2long(x,z) { return (x/Math.pow(2,z)*360-180); }

function tile2lat(y,z) {
    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
    return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}

y 축에서 XYZ / Google과 TMS의 차이점에 유의하십시오.

Google지도 API V3도를 통해 당신에게 필요한 기능을 제공 .fromPointToLatLng()map.getProjection().


동일한 문제가 있으므로 위의 솔루션을 이해하려고합니다. 위의 솔루션에서 1을 의미합니까? 먼저 tile2long () 및 tile2lat ()을 사용하여 x, y를 변환하고 위도 / 경도로 확대하십시오. 2. 단계에서 생성 된 위도 / 경도를 사용하여 경계를 생성합니까? 어떻게해야합니까?
Vishal

@Petr C ++에 대한 내용이 있습니까?
Majid Hojati

타일 ​​크기를 고려하지 않습니까?
Muhammad Umer

@ petr-pridal 이것은 내가 아는 한, 타일이 영역 또는 표면이라는 점을 지적한다. 경계 상자에 코드를 제공 할 수 있습니까? 미리 감사드립니다.
허버트

이 기사 gist.github.com/tmcw/4954720 에서 TMS는 동일한 타일이지만 뒤로 색인됩니다. 이것은 변환 공식입니다 : Math.floor (Math.pow (2, z)-y-1)
Haggai


0

이것은 내 작업 코드입니다.

Google 이미지 맵 유형 오버레이의 jsfiddle 샘플

jsfiddle 다른 Google 오버레이 이미지 샘플

function tile2long(x,z) {

  return (x/Math.pow(2,z)*360-180);

}





function tile2lat(y,z) {

  var n=Math.PI-2*Math.PI*y/Math.pow(2,z);

  return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));

}





 var x = coord.x;

 var y = coord.y;

 var z = zoom;



 var NW_long = tile2long(x,z);



 var SW_long = tile2long(x,z);

 var SW_lat =  tile2lat(y+1,z);



 var NE_long = tile2long(x+1,z);

  var NE_lat =  tile2lat(y,z);







  var export_bbox = SW_long + ',' + SW_lat + ',' + NE_long + ',' + NE_lat;



     var url_param = '&format=png&size=256,256&transparent=true&f=image&bboxSR=4326&imageSR=4326';





   var url_layers =''





       var root_url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=';



     var tile_url = root_url + export_bbox + url_param + url_layers;

maptiler는 coodinate 수에서 bbox를 가져오고 확대하십시오

구글 좌표 번호 줌, 변환, 위도 등을 계산하는 방법 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.