È possibile utilizzare DotSpatial per riproiettare a lat long. Se stai leggendo in shapefile e il file .prj c'è così che la proiezione è nota, quindi tutto quello che dovete fare è:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Se invece il file .prj manca, allora si avrà necessario definire prima la proiezione come:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N;
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Ma se, per esempio, non si dispone di uno shapefile e si desidera solo per riproiettare un insieme di coordinate da una proiezione all'altra, è possibile utilizzare l'utilità reproject direttamente :
// 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);
Quest'ultimo metodo utilizza un array come quello in modo che il modulo di proiezione possa funzionare senza avere un riferimento diretto al modulo dati.
Si dovrebbe già tornare lat/long, assicurarsi di specificare lo SRID e la proiezione corretti. – Habib
Grazie per l'aiuto. La proiezione shapefile (Shapefile.Projection) è WGS_1984_UTM_Zone_32N, dal nome penso che le coordinate siano in formato UTM, hai qualche esempio di conversione? – iRubens
Fammi sapere quale API stai usando e sei in grado di eseguire il trascinamento della selezione? –