diff --git a/Examples/Projections/GeometriesProjection.cxx b/Examples/Projections/GeometriesProjection.cxx index 3cd709dc3ed0986fc0bd1bab69551aa323963eb6..f46a84afb0aeaa10a076a75034cd74126a8dae77 100644 --- a/Examples/Projections/GeometriesProjection.cxx +++ b/Examples/Projections/GeometriesProjection.cxx @@ -35,8 +35,6 @@ #include "otbGeometriesProjectionFilter.h" #include "otbGeometriesSet.h" -// #include "otbGeometriesFileReader.h" -// #include "otbGeometriesFileWriter.h" #include "otbImage.h" #include "otbImageFileReader.h" diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt index c3710c42f7d908431eb18b031c169ca7dccec284..6849156851d2424a2e726f73a1a58717c7dca808 100644 --- a/Testing/Code/Projections/CMakeLists.txt +++ b/Testing/Code/Projections/CMakeLists.txt @@ -1136,6 +1136,37 @@ ADD_TEST(prTvVectorDataProjectionFilterPolygons ${PROJECTIONS_TESTS3} ) +#test points +ADD_TEST(prTvGeometriesProjectionFilterPoints ${PROJECTIONS_TESTS3} + --compare-ogr ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterPoints.shp + ${TEMP}/prTvGeometriesProjectionFilterPoints.shp + otbGeometriesProjectionFilter + ${INPUTDATA}/ToulousePoints-examples.shp + ${TEMP}/prTvGeometriesProjectionFilterPoints.shp +) + +#test lines +ADD_TEST(prTvGeometriesProjectionFilterLines ${PROJECTIONS_TESTS3} + --compare-ogr ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterLines.shp + ${TEMP}/prTvGeometriesProjectionFilterLines.shp + otbGeometriesProjectionFilter + ${INPUTDATA}/ToulouseRoad-examples.shp + ${TEMP}/prTvGeometriesProjectionFilterLines.shp +) + +# test polygons +ADD_TEST(prTvGeometriesProjectionFilterPolygons ${PROJECTIONS_TESTS3} + --compare-ogr ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterPolygons.shp + ${TEMP}/prTvGeometriesProjectionFilterPolygons.shp + otbGeometriesProjectionFilter + ${INPUTDATA}/Capitole-Shadows.shp + ${TEMP}/prTvGeometriesProjectionFilterPolygons.shp +) + + # test to sensor # NB: no prj file here as it is in sensor geometry IF(OTB_DATA_USE_LARGEINPUT) @@ -1645,6 +1676,7 @@ otbVectorDataProjectionFilterFromMapToGeo.cxx otbVectorDataProjectionFilterFromMapToImage.cxx otbVectorDataProjectionFilterFromGeoToMap.cxx otbVectorDataIntoImageProjectionFilterTest.cxx +otbGeometriesProjectionFilter.cxx otbGeocentricTransformNew.cxx otbGeocentricTransform.cxx otbTileMapTransform.cxx diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx new file mode 100644 index 0000000000000000000000000000000000000000..0041185ff63af71a2f4b20f41a43ff6aed1c812e --- /dev/null +++ b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx @@ -0,0 +1,74 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +/*===========================================================================*/ +/*===============================[ Includes ]================================*/ +/*===========================================================================*/ +#include "otbGeometriesProjectionFilter.h" +#include <fstream> +#include "otbGeometriesSet.h" +#include "otbStandardFilterWatcher.h" + +/*===========================================================================*/ +/*==============================[ other stuff ]==============================*/ +/*===========================================================================*/ +int otbGeometriesProjectionFilter(int argc, char * argv[]) +{ + if (argc < 3) + { + std::cout << argv[0] << " <input filename> <output filename> [<output text>]\n"; + return EXIT_FAILURE; + } + + typedef otb::GeometriesSet InputGeometriesType; + typedef otb::GeometriesSet OutputGeometriesType; + otb::ogr::DataSource::Pointer input = otb::ogr::DataSource::New( + argv[1], otb::ogr::DataSource::Modes::read); + InputGeometriesType::Pointer in_set = InputGeometriesType::New(input); + + typedef otb::GeometriesProjectionFilter GeometriesFilterType; + GeometriesFilterType::Pointer filter = GeometriesFilterType::New(); + + filter->SetInput(in_set); + + const std::string projectionRefWkt = + "PROJCS[\"UTM Zone 31, Northern Hemisphere\", GEOGCS[\"WGS 84\", DATUM[\"WGS_1984\", SPHEROID[\"WGS 84\", 6378137, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]], TOWGS84[0, 0, 0, 0, 0, 0, 0], AUTHORITY[\"EPSG\",\"6326\"]], PRIMEM[\"Greenwich\", 0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\", 0.0174532925199433, AUTHORITY[\"EPSG\",\"9108\"]], AXIS[\"Lat\", NORTH], AXIS[\"Long\", EAST], AUTHORITY[\"EPSG\",\"4326\"]], PROJECTION[\"Transverse_Mercator\"], PARAMETER[\"latitude_of_origin\", 0], PARAMETER[\"central_meridian\", 3], PARAMETER[\"scale_factor\", 0.9996], PARAMETER[\"false_easting\", 500000], PARAMETER[\"false_northing\", 0], UNIT[\"Meter\", 1]]"; + + filter->SetOutputProjectionRef(projectionRefWkt); + + otb::StandardFilterWatcher watcher(filter, "GeometriesProjection"); + + otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New( + argv[2], otb::ogr::DataSource::Modes::write); + OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output); + + filter->SetOutput(out_set); + filter->Update(); + + //Output the tree in a text file + if (argc >= 4) + { + std::ofstream file(argv[3]); + + file << "Original data\n" << in_set << "\n\n"; + + file << "Reprojected data\n" << out_set << "\n\n"; + } + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbProjectionsTests3.cxx b/Testing/Code/Projections/otbProjectionsTests3.cxx index 8c7d99bf93ef279a0a9e3d8b2391cf9afdadd0ed..36d87277b3bf90ef6d2195fe15e1eb779e553891 100644 --- a/Testing/Code/Projections/otbProjectionsTests3.cxx +++ b/Testing/Code/Projections/otbProjectionsTests3.cxx @@ -39,6 +39,7 @@ void RegisterTests() REGISTER_TEST(otbVectorDataProjectionFilterFromMapToGeo); REGISTER_TEST(otbVectorDataProjectionFilterFromMapToImage); REGISTER_TEST(otbVectorDataProjectionFilterFromGeoToMap); + REGISTER_TEST(otbGeometriesProjectionFilter); REGISTER_TEST(otbGeocentricTransformNew); REGISTER_TEST(otbGeocentricTransform); REGISTER_TEST(otbTileMapTransform);