J'ai une carte d' ici . Je veux pouvoir convertir simplement une paire lon / lat arbitraire en pixels sur la carte (également la possibilité de faire une conversion inverse). Les cartes sont livrées avec le fichier .tfw et les informations de projection, la voici:
0.02222222222222
0.00000000000000
0.00000000000000
-0.02222222222222
-180.00000000000000
90.00000000000000
et infos de projection:
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
Je suis complètement nouveau dans le domaine de la cartographie, et pour autant que je sache, je devrais d'abord faire la transformation de WGS84 (paire lon / lat) en projection géographique (ne sont-ils pas les mêmes?). Il me semble que ce sont les mêmes, en fait, mais le rayon de la sphère dans les informations de projection ci-dessus est 6370997 et est différent de la page spatialreference.com que j'ai trouvée pour la projection Plate Carree. Quoi qu'il en soit, j'ai trouvé que la bibliothèque DotSpatial.Projections peut le faire pour moi, avec le code suivant:
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);
Et puis je dois traduire les coordonnées résultantes en pixels sur la carte en utilisant le fichier monde. Je connais la formule suivante:
Mais il semble qu'il y ait des degrés et non des mètres dans le fichier mondial et je ne sais pas quoi en faire. En général, est-ce que je fais les bonnes choses? Ou il existe un moyen plus simple, compte tenu de mes données?