Tôi có một bản đồ từ đây . Tôi muốn có thể chỉ cần chuyển đổi cặp lon / lat tùy ý thành pixel trên bản đồ (cũng có khả năng thực hiện chuyển đổi ngược lại). Các bản đồ đi kèm với tập tin .tfw và thông tin trình chiếu, đây là:
0.02222222222222
0.00000000000000
0.00000000000000
-0.02222222222222
-180.00000000000000
90.00000000000000
và thông tin chiếu:
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
Tôi hoàn toàn mới đối với những thứ liên quan đến bản đồ, và theo như tôi nhận ra trước tiên tôi nên thực hiện chuyển đổi từ WGS84 (cặp lon / lat) sang phép chiếu Địa lý (chúng có giống nhau không?). Đối với tôi, dường như chúng giống nhau, nhưng bán kính hình cầu trong thông tin chiếu ở trên là 6370997 và khác với trang spatialreference.com tôi tìm thấy cho phép chiếu Car Carree. Dù sao, tôi đã tìm thấy thư viện DotSpatial.Projections có thể làm điều này cho tôi, với đoạn mã sau:
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);
Và sau đó tôi phải dịch tọa độ kết quả thành pixel trên bản đồ bằng tệp thế giới. Tôi biết công thức sau:
Nhưng có vẻ như có độ không phải là mét trong tập tin thế giới và tôi không biết phải làm gì với chúng. Nói chung, tôi đang làm đúng? Hoặc có cách dễ dàng hơn, cho dữ liệu của tôi?