MCPcopy Create free account
hub / github.com/OSGeo/gdal / GDALRPCOpenDEM

Function GDALRPCOpenDEM

alg/gdal_rpc.cpp:1666–1806  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1664/************************************************************************/
1665
1666static bool GDALRPCOpenDEM(GDALRPCTransformInfo *psTransform)
1667{
1668 CPLAssert(psTransform->pszDEMPath != nullptr);
1669
1670 bool bIsValid = false;
1671
1672 CPLString osPrevValueConfigOption;
1673 if (psTransform->bApplyDEMVDatumShift)
1674 {
1675 osPrevValueConfigOption =
1676 CPLGetThreadLocalConfigOption("GTIFF_REPORT_COMPD_CS", "");
1677 CPLSetThreadLocalConfigOption("GTIFF_REPORT_COMPD_CS", "YES");
1678 }
1679 CPLConfigOptionSetter oSetter("CPL_ALLOW_VSISTDIN", "NO", true);
1680 psTransform->poDS =
1681 GDALDataset::FromHandle(GDALOpen(psTransform->pszDEMPath, GA_ReadOnly));
1682 if (psTransform->poDS != nullptr &&
1683 psTransform->poDS->GetRasterCount() >= 1)
1684 {
1685 OGRSpatialReference oDEMSRS;
1686 if (psTransform->pszDEMSRS != nullptr)
1687 {
1688 oDEMSRS.SetFromUserInput(psTransform->pszDEMSRS);
1689 oDEMSRS.SetAxisMappingStrategy(OAMS_TRADITIONAL_GIS_ORDER);
1690 }
1691
1692 auto poDSSpaRefSrc = psTransform->pszDEMSRS != nullptr
1693 ? &oDEMSRS
1694 : psTransform->poDS->GetSpatialRef();
1695 if (poDSSpaRefSrc)
1696 {
1697 auto poDSSpaRef = poDSSpaRefSrc->Clone();
1698
1699 if (!psTransform->bApplyDEMVDatumShift)
1700 poDSSpaRef->StripVertical();
1701
1702 auto wkt_EPSG_4979 =
1703 "GEODCRS[\"WGS 84\",\n"
1704 " DATUM[\"World Geodetic System 1984\",\n"
1705 " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n"
1706 " LENGTHUNIT[\"metre\",1]]],\n"
1707 " PRIMEM[\"Greenwich\",0,\n"
1708 " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
1709 " CS[ellipsoidal,3],\n"
1710 " AXIS[\"geodetic latitude (Lat)\",north,\n"
1711 " ORDER[1],\n"
1712 " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
1713 " AXIS[\"geodetic longitude (Lon)\",east,\n"
1714 " ORDER[2],\n"
1715 " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
1716 " AXIS[\"ellipsoidal height (h)\",up,\n"
1717 " ORDER[3],\n"
1718 " LENGTHUNIT[\"metre\",1]],\n"
1719 " AREA[\"World (by country)\"],\n"
1720 " BBOX[-90,-180,90,180],\n"
1721 " ID[\"EPSG\",4979]]";
1722 OGRSpatialReference *poWGSSpaRef = new OGRSpatialReference(
1723 poDSSpaRef->IsCompound() ? wkt_EPSG_4979

Callers 1

Calls 15

fabsFunction · 0.85
CPLDebugFunction · 0.85
SetFromUserInputMethod · 0.80
StripVerticalMethod · 0.80
IsCompoundMethod · 0.80
FromHandleFunction · 0.50
GetRasterCountMethod · 0.45
GetSpatialRefMethod · 0.45
CloneMethod · 0.45

Tested by

no test coverage detected