У мене є карта від тут . Я хочу мати можливість просто перетворити довільну пару 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 і відрізняється від сторінки простореференції.com, яку я знайшов для проекції Plate Carree. У будь-якому випадку, я знайшов, що бібліотека 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);
І тоді я повинен перевести отримані координати в пікселі на карті за допомогою файлу world. Мені відомо наступна формула:
Але здається, що у світовому файлі є градуси не метри, і я не знаю, що з ними робити. Взагалі, чи я роблю правильно? Або є більш простий спосіб, враховуючи мої дані?