aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/factory.cpp
AgeCommit message (Collapse)Author
2021-03-15Add proj_context_get_database_structure() to dump structure of empty valid ↵Even Rouault
auxiliary DB
2021-03-15SQL export: add support for DatumEnsembleEven Rouault
2021-03-15SQL export: add publication_date and frame_reference_epoch to datumsEven Rouault
2021-03-15SQL output: add capability to restrict the authorities into which to look ↵Even Rouault
for intermediate objects
2021-03-15Add C/C++ API to get SQL statements to insert a CRS into databaseEven Rouault
2021-03-10Code cleanup: remove conditional testing of SQLITE_OPEN_URI. It is present ↵Even Rouault
in sqlite >= 3.11
2021-03-10Fix commentEven Rouault
2021-03-07typo fixesEven Rouault
2021-03-06Fix gcc 11 -Wnonnull warningsEven Rouault
``` /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp: In function 'osgeo::proj::operation::TransformationNNPtr osgeo::proj::operation::createBallparkGeographicOffset(const CRSNNPtr&, const CRSNNPtr&, const DatabaseContextPtr&)': /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:1860:36: warning: 'this' pointer is null [-Wnonnull] 1860 | ->coordinateSystem() | ^ In file included from /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:35: /proj-8.0.0/include/proj/crs.hpp:196:47: note: in a call to non-static member function 'const CoordinateSystemNNPtr& osgeo::proj::crs::SingleCRS::coordinateSystem() const' 196 | PROJ_DLL const cs::CoordinateSystemNNPtr &coordinateSystem() PROJ_PURE_DECL; | ^~~~~~~~~~~~~~~~ /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:1864:36: warning: 'this' pointer is null [-Wnonnull] 1864 | ->coordinateSystem() | ^ In file included from /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:35: /proj-8.0.0/include/proj/crs.hpp:196:47: note: in a call to non-static member function 'const CoordinateSystemNNPtr& osgeo::proj::crs::SingleCRS::coordinateSystem() const' 196 | PROJ_DLL const cs::CoordinateSystemNNPtr &coordinateSystem() PROJ_PURE_DECL; | ^~~~~~~~~~~~~~~~ /proj-8.0.0/src/iso19111/factory.cpp: In member function 'std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::operation::CoordinateOperation> > > osgeo::proj::io::AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(const CRSNNPtr&, const string&, const string&, const CRSNNPtr&, const string&, const string&, bool, bool, bool, bool, const std::vector<std::__cxx11::basic_string<char> >&, const ExtentPtr&, const ExtentPtr&) const': /proj-8.0.0/src/iso19111/factory.cpp:4724:66: warning: 'this' pointer is null [-Wnonnull] 4724 | dynamic_cast<crs::GeodeticCRS *>(sourceCRS.get())->datum(); | ^ In file included from /proj-8.0.0/src/iso19111/factory.cpp:36: /proj-8.0.0/include/proj/crs.hpp:254:54: note: in a call to non-static member function 'const GeodeticReferenceFramePtr& osgeo::proj::crs::GeodeticCRS::datum() const' 254 | PROJ_DLL const datum::GeodeticReferenceFramePtr &datum() PROJ_PURE_DECL; | ^~~~~ /proj-8.0.0/src/iso19111/factory.cpp:4726:66: warning: 'this' pointer is null [-Wnonnull] 4726 | dynamic_cast<crs::GeodeticCRS *>(targetCRS.get())->datum(); | ^ In file included from /proj-8.0.0/src/iso19111/factory.cpp:36: /proj-8.0.0/include/proj/crs.hpp:254:54: note: in a call to non-static member function 'const GeodeticReferenceFramePtr& osgeo::proj::crs::GeodeticCRS::datum() const' 254 | PROJ_DLL const datum::GeodeticReferenceFramePtr &datum() PROJ_PURE_DECL; | ^~~~~ ```
2021-03-03Reformat code with clang-format-10 from ubuntu 20.04Even Rouault
2020-12-12Split coordinateoperation.cpp in many files in iso19111/operation directoryEven Rouault
The big size of coordinateoperation.cpp could require significant amount of RAM to build it with -O2 level, and cause compiler crashes in some environments.
2020-11-30Database: add metadata with the version number of the database layout and ↵Even Rouault
check it in the code This is aimed at detecting running a PROJ version against a proj.db that is not meant to work with it. This happens sometimes in complex setups mixing PROJ versions. Hopefully this will help spotting the issue earlier.
2020-11-28createObjectsFromName(): in exact match, make looking for 'ETRS89 / UTM zone ↵Even Rouault
32N' return only the exact match
2020-11-20Remove proj_api.hKristian Evers
Removes proj_api.h from the public API. The contents of the header file has been moved to proj_internal.h verbatim and any references to proj_api.h has been changed to proj_internal.h. The documentation of proj_api.h has been removed. The only exception to this is the API migration guides which still mention the old API. Fixes #837
2020-11-01projinfo / createObjectsFromName(): support returning a datum ensembleEven Rouault
2020-11-01When reading from database, possibly return VerticalCRS with a DatumEnsembleEven Rouault
Only occurence for now is EPSG:9451 'BI height' using the 'British Isles height ensemble'
2020-11-01When reading from database, possibly return Geographic/GeodeticCRS with a ↵Even Rouault
DatumEnsemble, typically for WGS 84 and ETRS89 ('breaking change')
2020-10-25Fix typos spotted by scripts/fix_typos.shEven Rouault
2020-10-23Add logic to handle interpolationCRS in PROJBasedOperation and ↵Even Rouault
ConcatenatedOperation
2020-10-23AuthorityFactory::createCoordinateOperation(): correctly compute accuracy of ↵Even Rouault
concatenated operation when there is a conversion step
2020-10-23Database: import ESRI VERTCS that uses a (geodetic) datum to express ↵Even Rouault
ellipsoidal height
2020-10-11Database query: add ↵Even Rouault
AuthorityFactory::ObjectType::DYNAMIC_GEODETIC_REFERENCE_FRAME and DYNAMIC_VERTICAL_REFERENCE_FRAME, and make corresponding C API work
2020-10-11Database: add a frame_reference_epoch column in vertical_datum to be able to ↵Even Rouault
handle dynamic vertical datums, and instanciate them properly from database
2020-10-08createGeodeticCRS(): more DatumEnsemble compatibility in the case when ↵Even Rouault
creating from text_definition
2020-10-08Add a AuthorityFactory::createDatumEnsemble() method, and make it inherit ↵Even Rouault
from ObjectUsage as mandated by ISO 19111:2019
2020-10-08Database: add aliases for 'old' names of WGS84 and ETRS89 datums, and remove ↵Even Rouault
one hack
2020-10-08getCRSInfoList(): make it use area descriptionEven Rouault
2020-10-08Database: use extended description for extent/area of use, as done by ↵Even Rouault
epsg.org WKT export
2020-10-06Database: instanciate DynamicGeodeticReferenceFrame (things like ITRFxxx, ↵Even Rouault
WGS 84 (Gxxxx), etc.) when possible
2020-10-06Database: "minimal" update to EPSG v10.003Even Rouault
Content mostly unchanged since v9.9 This update is "minimal" in that it mostly reflects the removal of the 'area' table, replaced now by 'extent', 'scope' and 'usage' Other new aspects of EPSG v10 are left aside.
2020-08-26proj_create_vertical_crs_ex(): add a ACCURACY option to provide an explicit ↵Even Rouault
accuracy, or derive it from the grid name if it is known
2020-08-21createObjectsFromName(): add back case insensitivity when comparing namesEven Rouault
Fixes #2332 Didn't affect released versions
2020-08-07ProjectedCRS::identify(): fix to be able to identify EPSG:2154 as a ↵Even Rouault
candidate for 'RGF93_Lambert_93' (contributes to fixes https://github.com/qgis/QGIS/issues/32255) (#2315)
2020-05-25Fix identification of (one of the) ESRI WKT formulations of EPSG:3035Even Rouault
Fixes https://github.com/qgis/QGIS/issues/36111
2020-05-24Database: import scope and remarks for conversion (fixes #2237)Even Rouault
2020-05-24Database: add a same_source_target_crs column to supersession tableEven Rouault
This is in preparation for EPSG 9.8.11 import that supersedes a number of grid transformation for US transformations, but the superseded and replacement transformations don't operate on the same (source_crs, target_crs), which is a bit weird. So in that situation, ignores the supersession.
2020-05-19Add runtime checking that sqlite3 is >= 3.11Even Rouault
``` $ LD_LIBRARY_PATH=$HOME/install-sqlite-3.8.2/lib PROJ_DEBUG=1 src/projinfo -s @in.wkt -t @out.wkt --spatial-test intersects >/dev/null SQLite3 version is 3.8.2, whereas at least 3.11 should be used ```
2020-05-15AuthorityFactory::createObjectsFromName(): request SQL query to avoid ↵Even Rouault
warning about lack of object_view(table_name) index
2020-05-14createObjectsFromName(): fix when objectType = { GEOCENTRIC_CRS }Even Rouault
2020-04-17createFromCoordinateReferenceSystemCodes(): 'optimization' to avoid using ↵Even Rouault
C++ exceptions (#2160)
2020-04-14lookForGridAlternative(): fix bug with Dutch 2008 gridsEven Rouault
2020-04-14ProjectedCRS identification: deal with switched 1st/2nd std parallels for ↵Even Rouault
LCC_2SP (#2150) As switching the 2 standard parallels for Lambert Conformal Conic 2 standard parallels result in a equivalently numerical projection definition, take that into account when querying the database.
2020-03-30ESRI_WKT ingestion: make sure to identify to non-deprecated EPSG entry when ↵Even Rouault
possible (fixes #2116)
2020-03-12Add proj_get_units_from_database() (fixes #2004)Even Rouault
2020-03-06Typo fixes identified by scripts/fix_typos.shEven Rouault
2020-03-03createUnitOfMeasure(): use full double resolution for the conversion factor ↵Even Rouault
(#2011) Fixes https://github.com/OSGeo/gdal/issues/2290 where it was found that PROJ returned value for conversion factor of US Survey Foot unit wasn't at the maximum resolution, but only accurate to 15 significant digits.
2020-02-19DatabaseContext::lookForGridInfo(): use also old_proj_grid_name for lookups ↵Even Rouault
(fixes #1942)
2020-02-05Fix performance issue, affecting projinfo EPSG:7842Even Rouault
Fixes #1913 AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates() issued a complex SQL query that pushes the SQLite3 query plan optimizer to its limits. Was working reasonably with sqlite 3.11, but not with later versions. So put less constraints in the main query and do post-processing checks and auxiliary requests to avoid such issues. For some unknown reason, this slightly slows down a bit execution time of the whole test_cpp_api binary (~ 10%), but couldn't come with something better, despite trying many variations of the main SQL query. It seems that in the general case the non-filter LEFT JOIN on the supersession table helped, except on this EPSG:7842 case.
2020-01-25Implement RFC 5Even Rouault
2020-01-24createObjectsFromName(): use alias as fallback onlyEven Rouault
Fixes a regression of 6.3.0 found when creating with GDAL a TIFF with a Geographic3D CRS. As TIFF must also encode the Geographic2D CRS, the code of the Geographic2D CRS is searched from the name of the Geographic3D CRS. When doing createObjectsFromName( "ETRS89", {AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS}, false, 1), the result returned was not EPSG:4258 as expected, but EPSG:4173 IRENET95 which is registered as an alias of ETRS89. So sort results such that non-alias results are returned first.