Możesz użyć DotSpatial, aby zrekonfigurować do długiego czasu. Jeśli czytasz w shapefile, a plik .prj jest tak, że projekcja jest znana, to wszystko co musisz zrobić, to:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Jeśli jednak plik .prj brakuje, wtedy trzeba najpierw określić projekcję takiego:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N;
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Ale jeśli na przykład nie mają shapefile i po prostu chcesz odwzorować zestaw współrzędnych z jednego do drugiego występu, można użyć narzędzia odwzorować bezpośrednio :
// interleaved x and y values, so like x1, y1, x2, y2 etc.
double[] xy = new double[]{456874.625438354,5145767.7929015327};
// z values if any. Typically this is just 0.
double[] z = new double[]{0};
// Source projection information.
ProjectionInfo source = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N;
// Destination projection information.
ProjectionInfo dest = DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984;
// Call the projection utility.
DotSpatial.Projections.Reproject.ReprojectPoints(xy, z, source, dest, 0, 1);
Ta ostatnia metoda używa takiej tablicy, aby moduł projekcji działał bez bezpośredniego odniesienia do modułu danych.
Powinieneś już powrócić do poprzedniego/dłuższego, upewnij się, że określasz poprawny SRID i projekcję. – Habib
Dzięki za pomoc. Projekcja shapefile (Shapefile.Projection) to WGS_1984_UTM_Zone_32N, od nazwy Myślę, że współrzędne są w formacie UTM, czy masz jakiś przykład konwersji? – iRubens
Daj mi znać, którego api używasz i czy możesz przeciągać i upuszczać? –