Skip to content
Commits on Source (9)
......@@ -23,7 +23,7 @@ which is a new feature), and is now an integral part of PROJ.
A unified database of geodetic objects, coordinate reference systems and their
metadata, and coordinate operations between those CRS is now available in a
SQLite3 database file, proj.db. This includes definitions imported from the
IOGP EPSG dataset (v9.5.5 release), the IGNF (French national mapping agency)
IOGP EPSG dataset (v9.6.0 release), the IGNF (French national mapping agency)
geodetic registry and the ESRI projection engine database. PROJ is now the
reference software in the "OSGeo C stack" for this CRS and coordinate operation
database, whereas previously this functionality was spread over PROJ, GDAL and
......
......@@ -37,6 +37,14 @@ set(PACKAGE_TARNAME "proj")
set(PACKAGE_URL "https://proj4.org")
set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}")
configure_file(cmake/proj_config.cmake.in src/proj_config.h)
# check if a second proj_config.h exists (created by ./configure)
# as this is within CMake's C_INCLUDES / CXX_INCLUDES
set(AUTOCONF_PROJ_CONFIG_H "${CMAKE_SOURCE_DIR}/src/proj_config.h")
if(EXISTS ${AUTOCONF_PROJ_CONFIG_H})
message(WARNING "Autoconf's ${AUTOCONF_PROJ_CONFIG_H} may interfere "
"with this CMake build. Run 'make distclean' in the "
"source directory before CMake's build.")
endif()
configure_file(cmake/proj_config.cmake.in src/proj_config.h)
......@@ -23,14 +23,7 @@ ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
# for data install testing the PROJ_LIB envVar
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
if(WIN32)
set(DEFAULT_BIN_SUBDIR bin)
set(DEFAULT_LIB_SUBDIR local/lib)
set(DEFAULT_DATA_SUBDIR share)
set(DEFAULT_INCLUDE_SUBDIR local/include)
set(DEFAULT_DOC_SUBDIR share/doc/proj)
set(DEFAULT_CMAKE_SUBDIR local/lib/cmake/${PROJECT_NAME_LOWER})
elseif(UNIX)
if(UNIX)
include(GNUInstallDirs)
set(DEFAULT_BIN_SUBDIR ${CMAKE_INSTALL_BINDIR})
set(DEFAULT_LIB_SUBDIR ${CMAKE_INSTALL_LIBDIR})
......@@ -39,7 +32,7 @@ elseif(UNIX)
set(DEFAULT_DOC_SUBDIR ${CMAKE_INSTALL_DOCDIR})
set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER})
else()
# Common locatoins for Unix and Mac OS X
# Common locations for Unix and Mac OS X
set(DEFAULT_BIN_SUBDIR bin)
set(DEFAULT_LIB_SUBDIR lib)
set(DEFAULT_DATA_SUBDIR share/proj)
......
......@@ -423,6 +423,7 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1216','SRB_VRS12','EPSG
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1219','MVGC','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1218','MGD-2000','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1218','MTRF-2000','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1205','Zero Depth Point (ZDP)','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1039','NZVD2009','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1035','REGCAN95','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6761','HTRS96','EPSG');
......
......@@ -47,6 +47,12 @@ INSERT INTO "axis" VALUES('EPSG','1526','Easting','E','North along 90°W','EPSG'
INSERT INTO "axis" VALUES('EPSG','1044','Starboard','x','Starboard','EPSG','1045',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1045','Forward','y','Ahead','EPSG','1045',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1046','Platform Down','z','Downward','EPSG','1045',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1042','Local northing','n','north','EPSG','1047',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1043','Local easting','e','east','EPSG','1047',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1049','Local northing','n','north','EPSG','1048',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1050','Local easting','e','east','EPSG','1048',2,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1051','Local depth','d','down','EPSG','1049',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1053','Local depth','d','down','EPSG','1050',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1','Easting','E','east','EPSG','4400',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','2','Northing','N','north','EPSG','4400',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','3','Easting','E','east','EPSG','4401',1,'EPSG','9062');
......
......@@ -22,6 +22,10 @@ INSERT INTO "coordinate_system" VALUES('EPSG','1042','Cartesian',3);
INSERT INTO "coordinate_system" VALUES('EPSG','1043','vertical',1);
INSERT INTO "coordinate_system" VALUES('EPSG','1044','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','1045','Cartesian',3);
INSERT INTO "coordinate_system" VALUES('EPSG','1047','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','1048','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','1049','vertical',1);
INSERT INTO "coordinate_system" VALUES('EPSG','1050','vertical',1);
INSERT INTO "coordinate_system" VALUES('EPSG','4400','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','4401','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','4402','Cartesian',2);
......
......@@ -7,6 +7,18 @@ INSERT INTO "other_transformation" VALUES('PROJ','CRS84_TO_EPSG_4326','OGC:CRS84
-- alias of EPSG:3857
INSERT INTO "projected_crs" VALUES('EPSG','900913','Google Maps Global Mercator',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','3856','EPSG','3544',NULL,1);
-- Remove supression entry of EPSG:8371 ("RGF93 to NGF IGN69 height (2)", using RAF09.mnt) by
-- EPSG:8885 ("RGF93 to NGF IGN69 height (3)", using RAF18.tac), since
-- we have only RAF09.mnt in proj-datumgrid-europe
-- Our code to remove superseded operations should probably take into account grid availability
DELETE FROM "supersession" WHERE superseded_table_name = 'grid_transformation' AND
superseded_auth_name = 'EPSG' AND
superseded_code = '8371' AND
replacement_table_name = 'grid_transformation' AND
replacement_auth_name = 'EPSG' AND
replacement_code = '8885' AND
source = 'EPSG';
-- Define the allowed authorities, and their precedence, when researching a
-- coordinate operation
......
......@@ -26,6 +26,12 @@ INSERT INTO grid_packages VALUES ('proj-datumgrid-europe',
1,
1);
INSERT INTO grid_packages VALUES ('proj-datumgrid-oceania',
'Package with grids of interest for Oceania',
'https://download.osgeo.org/proj/proj-datumgrid-oceania-latest.zip',
1,
1);
-- not released yet at the time of writing
INSERT INTO grid_packages VALUES ('proj-datumgrid-world',
'Package with grids of global extent (too large to be included in proj-datumgrid)',
......@@ -142,6 +148,53 @@ INSERT INTO grid_alternatives(original_grid_name,
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
-- Continental USA VERTCON: NGVD (19)29 height to NAVD (19)88 height
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('vertconw.94',
'vertconw.gtx',
'GTX',
'vgridshift',
0,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('vertconc.94',
'vertconc.gtx',
'GTX',
'vgridshift',
0,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('vertcone.94',
'vertcone.gtx',
'GTX',
'vgridshift',
0,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
-- EGM models
INSERT INTO grid_alternatives(original_grid_name,
......@@ -239,6 +292,74 @@ INSERT INTO grid_alternatives(original_grid_name,
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
-- Faroe islands height models
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('fvr09.gtx',
'fvr09.gtx', -- no change. Just document the package
'GTX',
'vgridshift',
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
-- Sweden height models
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('SWEN17_RH2000.gtx',
'SWEN17_RH2000.gtx', -- no change. Just document the package
'GTX',
'vgridshift',
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
-- Ireland: OSGM15 height, Malin head datum -> ETRS89 ellipsoidal heights
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('OSGM15_Malin.gri',
'OSGM15_Malin.gtx',
'GTX',
'vgridshift',
1,
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
-- Northern Ireland: OSGM15 height, Belfast height -> ETRS89 ellipsoidal heights
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('OSGM15_Belfast.gri',
'OSGM15_Belfast.gtx',
'GTX',
'vgridshift',
1,
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
----------------------------
-- US GEOID12B height models
----------------------------
......@@ -255,7 +376,7 @@ INSERT INTO grid_alternatives(original_grid_name,
'g2012bu0.gtx',
'GTX',
'vgridshift',
0,
1,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
......@@ -271,7 +392,7 @@ INSERT INTO grid_alternatives(original_grid_name,
'g2012ba0.gtx',
'GTX',
'vgridshift',
0,
1,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
......@@ -287,7 +408,7 @@ INSERT INTO grid_alternatives(original_grid_name,
'g2012bp0.gtx',
'GTX',
'vgridshift',
0,
1,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
......@@ -303,7 +424,7 @@ INSERT INTO grid_alternatives(original_grid_name,
'g2012bg0.gtx',
'GTX',
'vgridshift',
0,
1,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
......@@ -319,7 +440,7 @@ INSERT INTO grid_alternatives(original_grid_name,
'g2012bs0.gtx',
'GTX',
'vgridshift',
0,
1,
'proj-datumgrid-north-america',
NULL, NULL, NULL, NULL);
......@@ -597,3 +718,68 @@ INSERT INTO grid_alternatives(original_grid_name,
1,
'proj-datumgrid-europe',
NULL, NULL, NULL, NULL);
----------------------------
-- Australian grids
----------------------------
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('A66 National (13.09.01).gsb',
'A66_National_13_09_01.gsb',
'NTv2',
'hgridshift',
0,
'proj-datumgrid-oceania',
NULL, NULL, NULL, NULL);
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('National 84 (02.07.01).gsb',
'National_84_02_07_01.gsb',
'NTv2',
'hgridshift',
0,
'proj-datumgrid-oceania',
NULL, NULL, NULL, NULL);
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('GDA94_GDA2020_conformal.gsb',
'GDA94_GDA2020_conformal.gsb',
'NTv2',
'hgridshift',
0,
'proj-datumgrid-oceania',
NULL, NULL, NULL, NULL);
INSERT INTO grid_alternatives(original_grid_name,
proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
VALUES ('GDA94_GDA2020_conformal_and_distortion.gsb',
'GDA94_GDA2020_conformal_and_distortion.gsb',
'NTv2',
'hgridshift',
0,
'proj-datumgrid-oceania',
NULL, NULL, NULL, NULL);
-- This file is hand generated.
-- Denmark
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5799_TO_EPSG_4937','DVR90 height to ETRS89',
NULL,NULL,
......@@ -21,3 +23,29 @@ INSERT INTO "grid_transformation" VALUES(
NULL,
'EPSG','8666','Geoid (height correction) model file','dnn.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,0);
-- Faroe Islands
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5317_TO_EPSG_4937','FVR09 height to ETRS89',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5317', -- source CRS (FVR09 height)
'EPSG','4937', -- target CRS (ETRS89)
'EPSG','3248', -- area of use: Faroe Islands - onshore
NULL,
'EPSG','8666','Geoid (height correction) model file','fvr09.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,0);
-- Sweden
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5613_TO_EPSG_4377','RH2000 height to SWEREF99',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5613', -- source CRS (RH2000 height)
'EPSG','4377', -- target CRS (SWEREF99)
'EPSG','3313', -- area of use: Sweden onshore
NULL,
'EPSG','8666','Geoid (height correction) model file','SWEN17_RH2000.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,0);
......@@ -1047,7 +1047,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8681','MGI 1901 to WGS 84 (1
INSERT INTO "helmert_transformation" VALUES('EPSG','8688','MGI 1901 to WGS 84 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8689','MGI 1901 to Slovenia 1996 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8822','MTRF-2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8818','EPSG','4326','EPSG','1206',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8823','MGI 1901 to WGS 84 (12)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8823','MGI 1901 to WGS 84 (13)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8824','Ain el Abd to MTRF-2000 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','8818','EPSG','3303',5.0,-61.15,-315.86,-3.51,'EPSG','9001',0.41,0.74,-3.52,'EPSG','9104',1.36,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8828','RGPF to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4687','EPSG','4326','EPSG','1098',0.5,0.072,-0.507,-0.245,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8829','Tahiti 79 to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4690','EPSG','4687','EPSG','3124',0.5,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
......@@ -1082,6 +1082,13 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8878','ITRF90 to ETRF2014 (1
INSERT INTO "helmert_transformation" VALUES('EPSG','8879','ITRF89 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','8401','EPSG','1298',0.0,-30.4,-35.5,130.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-8.19,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8880','ITRF2014 to ETRF2014 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8401','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8886','SVY21 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4757','EPSG','4326','EPSG','1210',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8889','BGS2005 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7798','EPSG','4258','EPSG','1056',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8890','BGS2005 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7798','EPSG','4326','EPSG','1056',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8891','LKS92 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4661','EPSG','4258','EPSG','1139',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8892','LKS94 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4669','EPSG','4258','EPSG','1145',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8893','SRB_ETRS89 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8685','EPSG','4258','EPSG','3534',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8894','SRB_ETRS89 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8685','EPSG','4326','EPSG','3534',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','8895','CHTRF95 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4151','EPSG','4258','EPSG','1286',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','10085','Trinidad 1903 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4302','EPSG','4326','EPSG','1339',3.0,-61.0,285.2,471.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','10086','JAD69 to WGS 72 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4322','EPSG','3342',15.0,48.0,208.0,382.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "helmert_transformation" VALUES('EPSG','10089','Aratu to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2962',7.0,-163.466,317.396,-147.538,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
......
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.5.5');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-01-21');
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.6.0');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-02-22');
......@@ -206,8 +206,10 @@ INSERT INTO "vertical_crs" VALUES('EPSG','8266','GVR2000 height',NULL,NULL,'EPSG
INSERT INTO "vertical_crs" VALUES('EPSG','8267','GVR2016 height',NULL,NULL,'EPSG','6499','EPSG','1200','EPSG','4454',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8357','Baltic 1957 height',NULL,NULL,'EPSG','6499','EPSG','1202','EPSG','1306',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8358','Baltic 1957 depth',NULL,NULL,'EPSG','6498','EPSG','1202','EPSG','1306',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8378','EPSG example wellbore local vertical CRS',NULL,NULL,'EPSG','1049','EPSG','1205','EPSG','4393',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8434','Macao height',NULL,NULL,'EPSG','6499','EPSG','1210','EPSG','1147',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8675','N43 height',NULL,NULL,'EPSG','6499','EPSG','1213','EPSG','4522',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8690','SVS2010 height',NULL,NULL,'EPSG','6499','EPSG','1215','EPSG','3307',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8691','SRB_VRS12 height',NULL,NULL,'EPSG','6499','EPSG','1216','EPSG','3534',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8841','MVGC height',NULL,NULL,'EPSG','6499','EPSG','1219','EPSG','3303',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8897','EPSG example wellbore local vertical CRS (ft)',NULL,NULL,'EPSG','1050','EPSG','1205','EPSG','4393',0);
......@@ -70,6 +70,7 @@ INSERT INTO "vertical_datum" VALUES('EPSG','1190','Landshaedarkerfi Islands 2004
INSERT INTO "vertical_datum" VALUES('EPSG','1199','Greenland Vertical Reference 2000',NULL,NULL,'EPSG','4461',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1200','Greenland Vertical Reference 2016',NULL,NULL,'EPSG','4454',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1202','Baltic 1957',NULL,NULL,'EPSG','1306',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1205','EPSG example wellbore vertical datum',NULL,NULL,'EPSG','4393',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1210','Macao Height Datum',NULL,NULL,'EPSG','1147',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1213','Helsinki 1943',NULL,NULL,'EPSG','4522',0);
INSERT INTO "vertical_datum" VALUES('EPSG','1215','Slovenian Vertical System 2010',NULL,NULL,'EPSG','3307',0);
......
proj (6.0.0~rc2-1~exp1) experimental; urgency=medium
* New upstream release candidate.
* Drop patches, included upstream.
* Update 6.0.0~rc1 symbols for other architectures.
* Drop unused lintian override for binary-without-manpage.
* Add patch to fix spelling errors.
* Update 6.0.0~rc2 symbols for amd64.
-- Bas Couwenberg <sebastic@debian.org> Sat, 23 Feb 2019 12:41:22 +0100
proj (6.0.0~rc1-1~exp3) experimental; urgency=medium
* Add upstream patch to implement fuzzy proj string comparison.
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
Description: Slack tolerance in deg->rad unitconvert test
Author: Kristian Evers <kristianevers@gmail.com>
Origin: https://github.com/OSGeo/proj.4/commit/a8cbe0c66974871f5a7bd7ef94001ebf461ac7ea
Bug: https://github.com/OSGeo/proj.4/issues/1275
--- a/test/gie/unitconvert.gie
+++ b/test/gie/unitconvert.gie
@@ -26,7 +26,7 @@ accept 1 1 1 1
expect 0.5 0.5 1 1
operation proj=unitconvert xy_in=deg xy_out=rad
-tolerance 0.000000000001
+tolerance 0.0000001
accept 1 1 1 1
expect 1 1 1 1 # gie does a rad->deg conversion behind the scenes
Description: tests: implement fuzzy proj string comparison in a few problematic test cases on non-x86 arch
Author: Even Rouault <even.rouault@spatialys.com>
Origin: https://github.com/OSGeo/proj.4/commit/1b272fc9ee5d25a0cb07d6d12df13c6a77eeb7f0
Bug: https://github.com/OSGeo/proj.4/issues/1275
--- a/test/unit/Makefile.am
+++ b/test/unit/Makefile.am
@@ -2,7 +2,7 @@ AUTOMAKE_OPTIONS = subdir-objects
EXTRA_DIST = CMakeLists.txt
-noinst_HEADERS = gtest_include.h
+noinst_HEADERS = gtest_include.h test_primitives.hpp
AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/test @GTEST_CFLAGS@ @SQLITE3_CFLAGS@
AM_CXXFLAGS = @CXX_WFLAGS@ @NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG@
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -28,6 +28,8 @@
#include "gtest_include.h"
+#include "test_primitives.hpp"
+
#include "proj/common.hpp"
#include "proj/coordinateoperation.hpp"
#include "proj/coordinatesystem.hpp"
@@ -991,10 +993,12 @@ TEST(factory, AuthorityFactory_test_uom_
auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
// This tests conversion from unit of measure EPSG:9110 DDD.MMSSsss
auto crs = factory->createProjectedCRS("2172");
- EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=sterea +lat_0=53.0019444444444 +lon_0=21.5027777777778 "
- "+k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +units=m "
- "+no_defs +type=crs");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ crs->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=sterea +lat_0=53.0019444444444 +lon_0=21.5027777777778 "
+ "+k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +units=m "
+ "+no_defs +type=crs");
}
// ---------------------------------------------------------------------------
--- a/test/unit/test_operation.cpp
+++ b/test/unit/test_operation.cpp
@@ -28,8 +28,12 @@
#include "gtest_include.h"
+#include "test_primitives.hpp"
+
// to be able to use internal::replaceAll
+#ifndef FROM_PROJ_CPP
#define FROM_PROJ_CPP
+#endif
#include "proj/common.hpp"
#include "proj/coordinateoperation.hpp"
@@ -4861,11 +4865,13 @@ TEST(operation, geocentricCRS_to_geocent
authFactory->createCoordinateReferenceSystem("4896"), ctxt);
ASSERT_EQ(list.size(), 1U);
EXPECT_EQ(list[0]->nameStr(), "ITRF2000 to ITRF2005 (1)");
- EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=helmert +x=-0.0001 "
- "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
- "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
- "+t_epoch=2000 +convention=position_vector");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ list[0]->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=helmert +x=-0.0001 "
+ "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
+ "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
+ "+t_epoch=2000 +convention=position_vector");
}
// ---------------------------------------------------------------------------
@@ -4904,15 +4910,17 @@ TEST(operation,
"Conversion from ITRF2000 (geog3D) to ITRF2000 (geocentric) + "
"ITRF2000 to ITRF2005 (1) + "
"Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)");
- EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
- "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m "
- "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 "
- "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
- "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
- "+t_epoch=2000 +convention=position_vector +step +inv "
- "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad "
- "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ list[0]->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m "
+ "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 "
+ "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
+ "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
+ "+t_epoch=2000 +convention=position_vector +step +inv "
+ "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad "
+ "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -4930,13 +4938,15 @@ TEST(operation, geogCRS_to_geocentricCRS
EXPECT_EQ(list[0]->nameStr(),
"Conversion from ITRF2000 (geog3D) to ITRF2000 (geocentric) + "
"ITRF2000 to ITRF2005 (1)");
- EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
- "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m "
- "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 "
- "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
- "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
- "+t_epoch=2000 +convention=position_vector");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ list[0]->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m "
+ "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 "
+ "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
+ "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
+ "+t_epoch=2000 +convention=position_vector");
}
// ---------------------------------------------------------------------------
@@ -4954,13 +4964,15 @@ TEST(operation, geocentricCRS_to_geogCRS
EXPECT_EQ(list[0]->nameStr(),
"ITRF2000 to ITRF2005 (1) + "
"Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)");
- EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=helmert +x=-0.0001 "
- "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
- "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
- "+t_epoch=2000 +convention=position_vector +step +inv "
- "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad "
- "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ list[0]->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=pipeline +step +proj=helmert +x=-0.0001 "
+ "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
+ "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
+ "+t_epoch=2000 +convention=position_vector +step +inv "
+ "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad "
+ "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -4984,21 +4996,23 @@ TEST(operation, esri_projectedCRS_to_geo
"(geocentric) + Inverse of ITRF2000 to NAD83(CORS96) (1) + "
"ITRF2000 to ITRF2005 (1) + "
"Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)");
- EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=unitconvert +xy_in=us-ft +z_in=us-ft "
- "+xy_out=m +z_out=m +step +inv +proj=lcc +lat_0=33.75 +lon_0=-79 "
- "+lat_1=34.3333333333333 +lat_2=36.1666666666667 "
- "+x_0=609601.219202438 +y_0=0 +ellps=GRS80 +step +proj=cart "
- "+ellps=GRS80 +step +inv +proj=helmert +x=0.9956 +y=-1.9013 "
- "+z=-0.5215 +rx=0.025915 +ry=0.009426 +rz=0.011599 +s=0.00062 "
- "+dx=0.0007 +dy=-0.0007 +dz=0.0005 +drx=6.7e-05 +dry=-0.000757 "
- "+drz=-5.1e-05 +ds=-0.00018 +t_epoch=1997 "
- "+convention=coordinate_frame +step +proj=helmert +x=-0.0001 "
- "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
- "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
- "+t_epoch=2000 +convention=position_vector +step +inv +proj=cart "
- "+ellps=GRS80 +step +proj=unitconvert +xy_in=rad +z_in=m "
- "+xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
+ EXPECT_PRED_FORMAT2(
+ ComparePROJString,
+ list[0]->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=pipeline +step +proj=unitconvert +xy_in=us-ft +z_in=us-ft "
+ "+xy_out=m +z_out=m +step +inv +proj=lcc +lat_0=33.75 +lon_0=-79 "
+ "+lat_1=34.3333333333333 +lat_2=36.1666666666667 "
+ "+x_0=609601.219202438 +y_0=0 +ellps=GRS80 +step +proj=cart "
+ "+ellps=GRS80 +step +inv +proj=helmert +x=0.9956 +y=-1.9013 "
+ "+z=-0.5215 +rx=0.025915 +ry=0.009426 +rz=0.011599 +s=0.00062 "
+ "+dx=0.0007 +dy=-0.0007 +dz=0.0005 +drx=6.7e-05 +dry=-0.000757 "
+ "+drz=-5.1e-05 +ds=-0.00018 +t_epoch=1997 "
+ "+convention=coordinate_frame +step +proj=helmert +x=-0.0001 "
+ "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 "
+ "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 "
+ "+t_epoch=2000 +convention=position_vector +step +inv +proj=cart "
+ "+ellps=GRS80 +step +proj=unitconvert +xy_in=rad +z_in=m "
+ "+xy_out=deg +z_out=m +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
--- /dev/null
+++ b/test/unit/test_primitives.hpp
@@ -0,0 +1,99 @@
+/******************************************************************************
+ *
+ * Project: PROJ
+ * Purpose: Test ISO19111:2018 implementation
+ * Author: Even Rouault <even dot rouault at spatialys dot com>
+ *
+ ******************************************************************************
+ * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ****************************************************************************/
+
+#include "gtest_include.h"
+
+#ifndef FROM_PROJ_CPP
+#define FROM_PROJ_CPP
+#endif
+
+#include "proj/internal/internal.hpp"
+
+#include <cmath>
+#include <cstdlib>
+
+using namespace osgeo::proj::internal;
+
+static ::testing::AssertionResult ComparePROJString(const char* m_expr,
+ const char* n_expr,
+ const std::string& m,
+ const std::string& n) {
+ //if (m == n) return ::testing::AssertionSuccess();
+ auto mTokens = split(m, ' ');
+ auto nTokens = split(n, ' ');
+ if( mTokens.size() == nTokens.size() )
+ {
+ bool success = true;
+ for( size_t i = 0; i < mTokens.size(); i++ )
+ {
+ auto mSubTokens = split(mTokens[i], '=');
+ auto nSubTokens = split(nTokens[i], '=');
+ if( mSubTokens.size() != nSubTokens.size() ) {
+ success = false;
+ break;
+ }
+ if( mSubTokens.size() == 2 && nSubTokens.size() == 2 ) {
+ if( mSubTokens[0] != nSubTokens[0] ) {
+ success = false;
+ break;
+ }
+ double mValue = 0.0;
+ bool mIsDouble = false;
+ try {
+ mValue = c_locale_stod(mSubTokens[1]);
+ mIsDouble = true;
+ } catch( const std::exception &) {}
+ double nValue = 0.0;
+ bool nIsDouble = false;
+ try {
+ nValue = c_locale_stod(nSubTokens[1]);
+ nIsDouble = true;
+ } catch( const std::exception &) {}
+ if( mIsDouble != nIsDouble ) {
+ success = false;
+ break;
+ }
+ if( mIsDouble ) {
+ success = std::abs(mValue - nValue) <= 1e-14 * std::abs(mValue);
+ } else {
+ success = mSubTokens[1] == nSubTokens[1];
+ }
+ if( !success ) {
+ break;
+ }
+ }
+ }
+
+ if( success ) {
+ return ::testing::AssertionSuccess();
+ }
+ }
+
+ return ::testing::AssertionFailure() << m_expr << " and " << n_expr
+ << " (" << m << " and " << n << ") are different";
+}
0001-Slack-tolerance-in-deg-rad-unitconvert-test.patch
0001-tests-implement-fuzzy-proj-string-comparison-in-a-fe.patch
spelling-errors.patch
Description: Fix spelling errors.
* specfied -> specified
Author: Bas Couwenberg <sebastic@debian.org>
Forwarded: https://github.com/OSGeo/proj.4/pull/1286
--- a/man/man1/projinfo.1
+++ b/man/man1/projinfo.1
@@ -144,7 +144,7 @@ only used for coordinate operation compu
.TP
.B \-\-spatial\-test contains|intersects
Specify how the area of use of coordinate operations found in the database
-are compared to the area of use specfied explicitly with \fI\%\-\-area\fP or \fI\%\-\-bbox\fP,
+are compared to the area of use specified explicitly with \fI\%\-\-area\fP or \fI\%\-\-bbox\fP,
or derivedi implictly from the area of use of the source and target CRS.
By default, projinfo will only keep coordinate operations whose are of use
is strictly within the area of interest (\fBcontains\fP strategy).
# https://github.com/OSGeo/proj.4/issues/1272
binary-without-manpage usr/bin/projinfo