diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt index 749b03674402d844d126785aae54fb2316fe608c..609a8ffc86cd8031b26606fa8c0b993b82daec77 100644 --- a/Testing/Code/Projections/CMakeLists.txt +++ b/Testing/Code/Projections/CMakeLists.txt @@ -1179,6 +1179,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToSensor ${PROJECTIONS_TESTS3} ${LARGEINPUT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF ${TEMP}/prTvVectorDataProjectionFilterFromMapToSensor.shp ) + +ADD_TEST(prTvGeometriesProjectionFilterFromMapToSensor ${PROJECTIONS_TESTS3} + --compare-ogr ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToSensor.shp + ${TEMP}/prTvGeometriesProjectionFilterFromMapToSensor.shp + otbGeometriesProjectionFilterFromMapToSensor + ${INPUTDATA}/ToulousePoints-examples.shp + ${LARGEINPUT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF + ${TEMP}/prTvGeometriesProjectionFilterFromMapToSensor.shp +) ENDIF(OTB_DATA_USE_LARGEINPUT) ADD_TEST(prTvVectorDataProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3} @@ -1190,6 +1200,15 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3} ${TEMP}/prTvVectorDataProjectionFilterFromMapToGeo.kml ) +ADD_TEST(prTvGeometriesProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToGeo.kml + ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml + otbGeometriesProjectionFilterFromMapToGeo + ${INPUTDATA}/ToulousePoints-examples.shp + ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml +) + ADD_TEST(prTvVectorDataProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3} --compare-ascii ${NOTOL} ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToImage.shp @@ -1200,6 +1219,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3} ${TEMP}/prTvVectorDataProjectionFilterFromMapToImage.shp ) +ADD_TEST(prTvGeometriesProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3} + --compare-ascii ${NOTOL} + ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToImage.shp + ${TEMP}/prTvGeometriesProjectionFilterFromMapToImage.shp + otbGeometriesProjectionFilterFromMapToImage + ${INPUTDATA}/ToulousePoints-examples.shp + ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif + ${TEMP}/prTvGeometriesProjectionFilterFromMapToImage.shp +) + # With QGIS the two vectordata are equal ADD_TEST(prTvVectorDataProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3} #--compare-ascii ${NOTOL} @@ -1211,6 +1240,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3} ${TEMP}/prTvVectorDataProjectionFilterFromGeoToMap.shp ) SET_TESTS_PROPERTIES(prTvVectorDataProjectionFilterFromGeoToMap PROPERTIES DEPENDS prTvVectorDataProjectionFilterFromMapToGeo) +ADD_TEST(prTvGeometriesProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3} + #--compare-ascii ${NOTOL} + #${INPUTDATA}/ToulousePoints-examples.shp + #${TEMP}/prTvGeometriesProjectionFilterFromGeoToMap.shp + otbGeometriesProjectionFilterFromGeoToMap + ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml + ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif + ${TEMP}/prTvGeometriesProjectionFilterFromGeoToMap.shp +) +SET_TESTS_PROPERTIES(prTvGeometriesProjectionFilterFromGeoToMap PROPERTIES DEPENDS prTvGeometriesProjectionFilterFromMapToGeo) @@ -1695,13 +1734,17 @@ otbVectorDataProjectionFilterFromMapToGeo.cxx otbVectorDataProjectionFilterFromMapToImage.cxx otbVectorDataProjectionFilterFromGeoToMap.cxx otbVectorDataIntoImageProjectionFilterTest.cxx -otbGeometriesProjectionFilter.cxx otbGeocentricTransformNew.cxx otbGeocentricTransform.cxx otbTileMapTransform.cxx otbVectorDataExtractROIandProjection.cxx otbGenericRSTransformGenericConversionCheckingFromGCP.cxx otbForwardBackwardProjectionConsistency.cxx +otbGeometriesProjectionFilter.cxx +otbGeometriesProjectionFilterFromMapToSensor.cxx +otbGeometriesProjectionFilterFromMapToGeo.cxx +otbGeometriesProjectionFilterFromMapToImage.cxx +otbGeometriesProjectionFilterFromGeoToMap.cxx otbGeometriesProjectionFilterFromMapToEPSG.cxx ) diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx index 0041185ff63af71a2f4b20f41a43ff6aed1c812e..ffdb58408bcabf18d9367fbf719293749cf2ae02 100644 --- a/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx +++ b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx @@ -31,7 +31,7 @@ int otbGeometriesProjectionFilter(int argc, char * argv[]) { if (argc < 3) { - std::cout << argv[0] << " <input filename> <output filename> [<output text>]\n"; + std::cerr << argv[0] << " <input filename> <output filename> [<output text>]\n"; return EXIT_FAILURE; } diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx new file mode 100644 index 0000000000000000000000000000000000000000..0e3d8bc63a6325b855a49e9a3e6ef38725146923 --- /dev/null +++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx @@ -0,0 +1,70 @@ +/*========================================================================= + + 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 "otbGeometriesSet.h" +#include "otbImage.h" +#include "otbImageFileReader.h" + +/*===========================================================================*/ +/*==============================[ other stuff ]==============================*/ +/*===========================================================================*/ +int otbGeometriesProjectionFilterFromGeoToMap(int argc, char * argv[]) +{ + if (argc < 4) + { + std::cerr << argv[0] << " <input vector filename> <input image filename>" + << " <output vector filename>\n"; + return EXIT_FAILURE; + } + + // Input Geometries set + 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); + + // Input Keywordlist (from image) + typedef otb::Image<unsigned short int, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ImageReaderType; + ImageReaderType::Pointer imageReader = ImageReaderType::New(); + imageReader->SetFileName(argv[2]); + imageReader->UpdateOutputInformation(); + + // Output Geometries Set + otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New( + argv[3], otb::ogr::DataSource::Modes::write); + OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output); + + // Filter + typedef otb::GeometriesProjectionFilter GeometriesFilterType; + GeometriesFilterType::Pointer filter = GeometriesFilterType::New(); + filter->SetInput(in_set); + filter->SetOutput(out_set); + filter->SetOutputProjectionRef(imageReader->GetOutput()->GetProjectionRef()); + filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin()); + filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing()); + + filter->Update(); + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx new file mode 100644 index 0000000000000000000000000000000000000000..91c927db4f93d28dffcbf843d0ebd3d6d223e103 --- /dev/null +++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx @@ -0,0 +1,59 @@ +/*========================================================================= + + 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 "otbGeometriesSet.h" +#include "otbImage.h" +#include "otbImageFileReader.h" + +/*===========================================================================*/ +/*==============================[ other stuff ]==============================*/ +/*===========================================================================*/ +int otbGeometriesProjectionFilterFromMapToGeo(int argc, char **argv) +{ + if (argc < 2) + { + std::cerr << argv[0] << " <input vector filename> <output vector filename>\n"; + return EXIT_FAILURE; + } + + // Input Geometries set + 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); + + // Output Geometries Set + otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New( + argv[2], otb::ogr::DataSource::Modes::write); + OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output); + + // Filter + typedef otb::GeometriesProjectionFilter GeometriesFilterType; + GeometriesFilterType::Pointer filter = GeometriesFilterType::New(); + filter->SetInput(in_set); + filter->SetOutput(out_set); + + filter->Update(); + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d7814d6275d1bdabd266ab096c56f71dd41d3901 --- /dev/null +++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx @@ -0,0 +1,70 @@ +/*========================================================================= + + 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 "otbGeometriesSet.h" +#include "otbImage.h" +#include "otbImageFileReader.h" + +/*===========================================================================*/ +/*==============================[ other stuff ]==============================*/ +/*===========================================================================*/ +int otbGeometriesProjectionFilterFromMapToImage(int argc, char * argv[]) +{ + if (argc < 4) + { + std::cerr << argv[0] << " <input vector filename> <input image filename>" + << " <output vector filename>\n"; + return EXIT_FAILURE; + } + + // Input Geometries set + 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); + + // Input Keywordlist (from image) + typedef otb::Image<unsigned short int, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ImageReaderType; + ImageReaderType::Pointer imageReader = ImageReaderType::New(); + imageReader->SetFileName(argv[2]); + imageReader->UpdateOutputInformation(); + + // Output Geometries Set + otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New( + argv[3], otb::ogr::DataSource::Modes::write); + OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output); + + // Filter + typedef otb::GeometriesProjectionFilter GeometriesFilterType; + GeometriesFilterType::Pointer filter = GeometriesFilterType::New(); + filter->SetInput(in_set); + filter->SetOutput(out_set); + filter->SetOutputProjectionRef(imageReader->GetOutput()->GetProjectionRef()); + filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin()); + filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing()); + + filter->Update(); + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ff578f526cfc21aed17161cdf54cf3bb3f3a43e2 --- /dev/null +++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx @@ -0,0 +1,70 @@ +/*========================================================================= + + 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 "otbGeometriesSet.h" +#include "otbImage.h" +#include "otbImageFileReader.h" + +/*===========================================================================*/ +/*==============================[ other stuff ]==============================*/ +/*===========================================================================*/ +int otbGeometriesProjectionFilterFromMapToSensor(int argc, char * argv[]) +{ + if (argc < 4) + { + std::cerr << argv[0] << " <input vector filename> <input image filename>" + << " <output vector filename>\n"; + return EXIT_FAILURE; + } + + // Input Geometries set + 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); + + // Input Keywordlist (from image) + typedef otb::Image<unsigned short int, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ImageReaderType; + ImageReaderType::Pointer imageReader = ImageReaderType::New(); + imageReader->SetFileName(argv[2]); + imageReader->UpdateOutputInformation(); + + // Output Geometries Set + otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New( + argv[3], otb::ogr::DataSource::Modes::write); + OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output); + + // Filter + typedef otb::GeometriesProjectionFilter GeometriesFilterType; + GeometriesFilterType::Pointer filter = GeometriesFilterType::New(); + filter->SetInput(in_set); + filter->SetOutput(out_set); + filter->SetOutputKeywordList(imageReader->GetOutput()->GetImageKeywordlist()); + filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin()); + filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing()); + + filter->Update(); + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Projections/otbProjectionsTests3.cxx b/Testing/Code/Projections/otbProjectionsTests3.cxx index 298607bcc6d96e86f7efb49ef863b4fdb2e5c6fa..3ddbb05d764469cb5b1eaaa267bf03112d492b58 100644 --- a/Testing/Code/Projections/otbProjectionsTests3.cxx +++ b/Testing/Code/Projections/otbProjectionsTests3.cxx @@ -39,7 +39,6 @@ void RegisterTests() REGISTER_TEST(otbVectorDataProjectionFilterFromMapToGeo); REGISTER_TEST(otbVectorDataProjectionFilterFromMapToImage); REGISTER_TEST(otbVectorDataProjectionFilterFromGeoToMap); - REGISTER_TEST(otbGeometriesProjectionFilter); REGISTER_TEST(otbGeocentricTransformNew); REGISTER_TEST(otbGeocentricTransform); REGISTER_TEST(otbTileMapTransform); @@ -47,6 +46,11 @@ void RegisterTests() REGISTER_TEST(otbVectorDataIntoImageProjectionFilterTest); REGISTER_TEST(otbGenericRSTransformGenericConversionCheckingFromGCP); REGISTER_TEST(otbForwardBackwardProjectionConsistency); + REGISTER_TEST(otbGeometriesProjectionFilter); + REGISTER_TEST(otbGeometriesProjectionFilterFromMapToSensor); + REGISTER_TEST(otbGeometriesProjectionFilterFromMapToGeo); + REGISTER_TEST(otbGeometriesProjectionFilterFromMapToImage); + REGISTER_TEST(otbGeometriesProjectionFilterFromGeoToMap); REGISTER_TEST(otbGeometriesProjectionFilterFromMapToEPSG); }