From 3767253431c745d04e50322fbb1f9d4a7343995f Mon Sep 17 00:00:00 2001 From: Luc Hermitte <luc.hermitte@c-s.fr> Date: Fri, 22 Jun 2012 17:21:49 +0200 Subject: [PATCH] TEST: OTB-151/GeometriesProjectionFilter -- tests for VectorData duplicated for OGR geometries --- Testing/Code/Projections/CMakeLists.txt | 45 +++++++++++- .../otbGeometriesProjectionFilter.cxx | 2 +- ...GeometriesProjectionFilterFromGeoToMap.cxx | 70 +++++++++++++++++++ ...GeometriesProjectionFilterFromMapToGeo.cxx | 59 ++++++++++++++++ ...ometriesProjectionFilterFromMapToImage.cxx | 70 +++++++++++++++++++ ...metriesProjectionFilterFromMapToSensor.cxx | 70 +++++++++++++++++++ .../Code/Projections/otbProjectionsTests3.cxx | 6 +- 7 files changed, 319 insertions(+), 3 deletions(-) create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt index 749b036744..609a8ffc86 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 0041185ff6..ffdb58408b 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 0000000000..0e3d8bc63a --- /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 0000000000..91c927db4f --- /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 0000000000..d7814d6275 --- /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 0000000000..ff578f526c --- /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 298607bcc6..3ddbb05d76 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); } -- GitLab