여기 에서지도가 있습니다 . 지도에서 임의의 lon / lat 쌍을 픽셀로 간단히 변환 할 수 있기를 원합니다 (역 변환 기능도 가능). 지도에는 .tfw 파일과 프로젝션 정보가 제공됩니다.
0.02222222222222
0.00000000000000
0.00000000000000
-0.02222222222222
-180.00000000000000
90.00000000000000
프로젝션 정보 :
Projection: Plate Carree aka Geographic or "LatLong"
Earth ellipsoid: Sphere, radius 6370997 m
Datum: WGS84
Extent: 180 West to 180 East, 90 North to 90 South
Size: 16,200 height samples wide x 8,100 high
Resolution: 2.47 km/pixel
나는지도 제작 관련 분야에 완전히 익숙하지 않으며, 알아 낸 한 먼저 WGS84 (론 / 위도 쌍)에서 지리적 투영으로 변환해야합니다 (동일하지 않습니까?). 실제로는 같지만 위의 투영 정보의 구 반경은 6370997이며 Plate Carree 투영에서 찾은 patialreference.com 페이지와 다릅니다. 어쨌든 DotSpatial.Projections 라이브러리가 다음 코드 로이 작업을 수행 할 수 있음을 알았습니다.
var kievCoordinates = new[] { 50.4546600, 30.5238000 };
var z = new[] { 1.0 };
var wgs84 = KnownCoordinateSystems.Geographic.World.WGS1984;
var dest = new ProjectionInfo();
dest.ParseEsriString(
"PROJCS[\"WGS 84 / Plate Carree (deprecated)\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Equidistant_Cylindrical\"],PARAMETER[\"central_meridian\",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]");
Reproject.ReprojectPoints(kievCoordinates, z, wgs84, dest, 0, 1);
그런 다음 월드 파일을 사용하여 결과 좌표를 맵의 픽셀로 변환해야합니다. 다음 공식을 알고 있습니다.
그러나 세계 파일에 미터가없는 학위가있는 것 같으며 그와 함께 무엇을 해야할지 모르겠습니다. 일반적으로 올바른 일을하고 있습니까? 또는 내 데이터를 고려할 때 더 쉬운 방법이 있습니까?