我从这里有一张地图。我希望能够简单地将任意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投影中发现的spacespacereference.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);
然后,我必须使用世界文件将结果坐标转换为地图上的像素。我知道以下公式:
但似乎世界文件中没有度数,我也不知道该如何处理。通常,我在做正确的事情吗?还是根据我的数据,有一种更简单的方法?