ฉันมีแผนที่จากที่นี่ ฉันต้องการที่จะสามารถแปลงคู่ 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 (คู่ lon / lat) เป็นการคาดการณ์ทางภูมิศาสตร์ (ไม่เหมือนกันหรือไม่) สำหรับฉันแล้วดูเหมือนว่าพวกมันเหมือนกัน แต่รัศมีของทรงกลมในข้อมูลการฉายภาพด้านบนคือ 6370997 และแตกต่างจากหน้า spatialreference.com ที่ฉันพบสำหรับการฉาย Plate Plate อย่างไรก็ตามฉันพบห้องสมุด 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);
จากนั้นฉันจะต้องแปลพิกัดผลลัพธ์เป็นพิกเซลบนแผนที่โดยใช้ไฟล์โลก ฉันตระหนักถึงสูตรต่อไปนี้:
แต่ดูเหมือนว่ามีองศาไม่ไฟล์เมตรในโลกและฉันไม่รู้ว่าจะทำอย่างไรกับพวกเขา โดยทั่วไปฉันทำสิ่งที่ถูกต้องหรือไม่ หรือมีวิธีที่ง่ายกว่านี้ในการรับข้อมูลของฉัน