Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
wiki:documentation:devguide:srs_module [2016/01/20 09:15] lubia [Coordinate Transformation] |
wiki:documentation:devguide:srs_module [2016/01/20 10:15] (current) lubia [Coordinate Transformation] |
||
|---|---|---|---|
| Line 39: | Line 39: | ||
| { | { | ||
| // ... | // ... | ||
| - | // requesting a pointer to a converter | + | te::srs::Converter converter; |
| - | std::auto_ptr<te::srs::Converter> converter(new te::srs::Converter()); | + | |
| - | converter->setSourceSRS(4326); // the SRS id for geographic coordinates over a WGS84 datum | + | converter.setSourceSRID(4326); // the SRS id for geographic coordinates over a WGS84 datum |
| - | converter->setTargetSRS(31985); // the SRS id for projected coordinates of UTM / WGS84 datum, Zone 17 South | + | converter.setTargetSRID(32723); // the SRS id for projected coordinates of UTM / WGS84 datum, Zone 23 South |
| // Converting a single coordinate | // Converting a single coordinate | ||
| - | double llX = -45.5; | + | double llX = -45.0; |
| - | double llY = -23.0; | + | double llY = 0.0; |
| double xyX; | double xyX; | ||
| double xyY; | double xyY; | ||
| - | converter->convert(llX,llY,xyX,xyY); | + | converter.convert(llX,llY,xyX,xyY); |
| - | converter->invert(xyX,xyY,llX,llY); | + | |
| - | // Converting a list of coordinates | + | std::cout.precision(10); |
| - | double* xs = new double[3]; | + | std::cout << "EPSG:4326 (" << llX << "," << llY << ") => "; |
| - | double* ys = new double[3]; | + | std::cout << "EPSG:32723 (" << xyX << "," << xyY << ")\n"; |
| - | xs[0] = -45.5; | + | llX = -44.0; |
| - | xs[1] = -45.6; | + | llY = 0.0; |
| - | xs[2] = -45.7; | + | converter.convert(llX,llY,xyX,xyY); |
| - | ys[0] = -23.0; | + | std::cout.precision(10); |
| - | ys[1] = -23.1; | + | std::cout << "EPSG:4326 (" << llX << "," << llY << ") => "; |
| - | ys[2] = -23.2; | + | std::cout << "EPSG:32723 (" << xyX << "," << xyY << ")\n"; |
| - | + | ||
| - | converter->convert(xs,ys,3,1); | + | |
| // ... | // ... | ||
| } | } | ||
| Line 86: | Line 82: | ||
| delete geom; | delete geom; | ||
| - | // ... | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | The code snippet below shows how an application can add an SRS Id, Authority code. This automatically makes the SRSID recognizable by the Converter. | ||
| - | |||
| - | <code cpp> | ||
| - | { | ||
| - | // ... | ||
| - | // Adding a new SRS ID with your PROJ4 and WKT description | ||
| - | // | ||
| - | SpatialReferenceSystemManager::getInstance().add("SIRGAS 2000 / UTM zone 25S", | ||
| - | "PROJCS[\"SIRGAS 2000 / UTM zone 25S\",GEOGCS[\"SIRGAS 2000\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_America_del_Sur_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222101],TOWGS84[0,0,0,0,0,0,0]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.01745329251994328]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",10000000],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],UNIT[\"metre\",1]]", | ||
| - | "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", | ||
| - | 31985); | ||
| - | converter->setSourceSRID(31985); | ||
| - | converter->setTargetSRID(4326); | ||
| - | |||
| - | xyX = 500000 * 0.001; // meter to kilometer | ||
| - | xyY = 10000000 * 0.001; // meter to kilometer | ||
| - | |||
| - | converter->convert(xyX,xyY,llX,llY); | ||
| // ... | // ... | ||
| } | } | ||