本文整理汇总了C++中OSRNewSpatialReference函数的典型用法代码示例。如果您正苦于以下问题:C++ OSRNewSpatialReference函数的具体用法?C++ OSRNewSpatialReference怎么用?C++ OSRNewSpatialReference使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OSRNewSpatialReference函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OSRNewSpatialReference
bool SpatialReference::equals(const SpatialReference& input) const
{
OGRSpatialReferenceH current =
OSRNewSpatialReference(getWKT(eCompoundOK, false).c_str());
OGRSpatialReferenceH other =
OSRNewSpatialReference(input.getWKT(eCompoundOK, false).c_str());
int output = OSRIsSame(current, other);
OSRDestroySpatialReference(current);
OSRDestroySpatialReference(other);
return (output == 1);
}
示例2: pdal_error
void ReprojectionFilter::ready(PointTableRef table)
{
if (m_inferInputSRS)
{
m_inSRS = table.spatialRef();
if (m_inSRS.getWKT().empty())
throw pdal_error("Source data has no spatial reference and none "
"is specified with the 'in_srs' option.");
}
m_in_ref_ptr = ReferencePtr(OSRNewSpatialReference(0),
OGRSpatialReferenceDeleter());
m_out_ref_ptr = ReferencePtr(OSRNewSpatialReference(0),
OGRSpatialReferenceDeleter());
int result =
OSRSetFromUserInput(m_in_ref_ptr.get(),
m_inSRS.getWKT(pdal::SpatialReference::eCompoundOK).c_str());
if (result != OGRERR_NONE)
{
std::ostringstream msg;
msg << "Invalid input spatial reference '" << m_inSRS.getWKT() <<
"'. This is usually caused by a bad value for the 'in_srs'"
"option or an invalid spatial reference in the source file.";
throw pdal_error(msg.str());
}
result = OSRSetFromUserInput(m_out_ref_ptr.get(),
m_outSRS.getWKT(pdal::SpatialReference::eCompoundOK).c_str());
if (result != OGRERR_NONE)
{
std::ostringstream msg;
msg << "Invalid output spatial reference '" << m_outSRS.getWKT() <<
"'. This is usually caused by a bad value for the 'out_srs'"
"option.";
throw pdal_error(msg.str());
}
m_transform_ptr = TransformPtr(
OCTNewCoordinateTransformation(m_in_ref_ptr.get(),
m_out_ref_ptr.get()), OSRTransformDeleter());
if (!m_transform_ptr.get())
{
std::string msg = "Could not construct CoordinateTransformation in "
"ReprojectionFilter:: ";
throw std::runtime_error(msg);
}
setSpatialReference(m_outSRS);
}
示例3: mMapUnits
QgsCoordinateReferenceSystem::QgsCoordinateReferenceSystem()
: mMapUnits( QGis::UnknownUnit )
, mIsValidFlag( 0 )
, mValidationHint( "" )
{
mCRS = OSRNewSpatialReference( NULL );
}
示例4: tmp
std::string SpatialReference::getVerticalUnits() const
{
std::string tmp("");
std::string wkt = getWKT(eCompoundOK);
const char* poWKT = wkt.c_str();
OGRSpatialReference* poSRS =
(OGRSpatialReference*)OSRNewSpatialReference(m_wkt.c_str());
if (poSRS)
{
OGR_SRSNode* node = poSRS->GetAttrNode("VERT_CS");
if (node)
{
char* units(0);
double u = poSRS->GetLinearUnits(&units);
tmp = units;
CPLFree(units);
Utils::trim(tmp);
}
}
return tmp;
}
示例5: get_wkt_of
// returned WKT string should be free by OGRFree or CPLFree
static char* get_wkt_of(int epsg_code) {
OGRSpatialReferenceH srs = OSRNewSpatialReference(NULL);
OSRImportFromEPSG(srs, epsg_code);
char* srs_wkt;
OSRExportToWkt(srs, &srs_wkt);
return srs_wkt;
}
示例6: strstr
/// Fetch the SRS as WKT
std::string SpatialReference::getWKT(WKTModeFlag mode_flag , bool pretty) const
{
std::string result_wkt = m_wkt;
if ((mode_flag == eHorizontalOnly
&& strstr(result_wkt.c_str(),"COMPD_CS") != NULL)
|| pretty)
{
OGRSpatialReference* poSRS =
(OGRSpatialReference*)OSRNewSpatialReference(result_wkt.c_str());
char *pszWKT = NULL;
if (mode_flag == eHorizontalOnly)
poSRS->StripVertical();
if (pretty)
poSRS->exportToPrettyWkt(&pszWKT, FALSE);
else
poSRS->exportToWkt(&pszWKT);
OSRDestroySpatialReference(poSRS);
result_wkt = pszWKT;
CPLFree(pszWKT);
}
return result_wkt;
}
示例7: QgsDebugMsg
bool QgsOgrLayerItem::setCrs( QgsCoordinateReferenceSystem crs )
{
QgsDebugMsg( "mPath = " + mPath );
OGRRegisterAll();
OGRSFDriverH hDriver;
OGRDataSourceH hDataSource = OGROpen( TO8F( mPath ), true, &hDriver );
if ( !hDataSource )
return false;
QString driverName = OGR_Dr_GetName( hDriver );
OGR_DS_Destroy( hDataSource );
// we are able to assign CRS only to shapefiles :-(
if ( driverName == "ESRI Shapefile" )
{
QString layerName = mPath.left( mPath.indexOf( ".shp", Qt::CaseInsensitive ) );
QString wkt = crs.toWkt();
// save ordinary .prj file
OGRSpatialReferenceH hSRS = OSRNewSpatialReference( wkt.toLocal8Bit().data() );
OSRMorphToESRI( hSRS ); // this is the important stuff for shapefile .prj
char* pszOutWkt = NULL;
OSRExportToWkt( hSRS, &pszOutWkt );
QFile prjFile( layerName + ".prj" );
if ( prjFile.open( QIODevice::WriteOnly ) )
{
QTextStream prjStream( &prjFile );
prjStream << pszOutWkt << endl;
prjFile.close();
}
else
{
QgsMessageLog::logMessage( tr( "Couldn't open file %1.prj" ).arg( layerName ), tr( "OGR" ) );
return false;
}
OSRDestroySpatialReference( hSRS );
CPLFree( pszOutWkt );
// save qgis-specific .qpj file (maybe because of better wkt compatibility?)
QFile qpjFile( layerName + ".qpj" );
if ( qpjFile.open( QIODevice::WriteOnly ) )
{
QTextStream qpjStream( &qpjFile );
qpjStream << wkt.toLocal8Bit().data() << endl;
qpjFile.close();
}
else
{
QgsMessageLog::logMessage( tr( "Couldn't open file %1.qpj" ).arg( layerName ), tr( "OGR" ) );
return false;
}
return true;
}
// It it is impossible to assign a crs to an existing layer
// No OGR_L_SetSpatialRef : http://trac.osgeo.org/gdal/ticket/4032
return false;
}
示例8:
CProjection::CProjection(CProjection const& in)
{
m_pProjPJ = NULL;
m_prjID = PRJ_NOT_INIT;
m_pSpatialReference = (OGRSpatialReference *)OSRNewSpatialReference(NULL);
if (in.IsInit())
{
operator=(in);
}
}
示例9: getWKT
bool SpatialReference::valid() const
{
std::string wkt = getWKT();
OGRSpatialReferenceH current =
OSRNewSpatialReference(wkt.c_str());
OGRErr err = OSRValidate(current);
OSRDestroySpatialReference(current);
return err == OGRERR_NONE;
}
示例10: setlocale
void QgsCoordinateReferenceSystem::setProj4String( QString theProj4String )
{
const char *oldlocale = setlocale( LC_NUMERIC, NULL );
setlocale( LC_NUMERIC, "C" );
OSRDestroySpatialReference( mCRS );
mCRS = OSRNewSpatialReference( NULL );
mIsValidFlag = OSRImportFromProj4( mCRS, theProj4String.toLatin1().constData() ) == OGRERR_NONE;
setMapUnits();
#if defined(QGISDEBUG) && QGISDEBUG>=3
debugPrint();
#endif
setlocale( LC_NUMERIC, oldlocale );
}
示例11: stoi
bool WebMapService::Layer::InitBase(libconfig::ChainedSetting& config)
{
auto crs = config["CRS"];
const int numCRS = crs.getLength();
if (numCRS > 0)
{
for (int c = 0; c < numCRS; c++)
{
supportedCRS[crs[c]] = (OGRSpatialReference*)OSRNewSpatialReference(NULL);
}
}
else
{
cout << "WebMapService::Layer: " << "At least one CRS must be defined" << endl;
return false;
}
for (auto it = supportedCRS.begin(); it != supportedCRS.end(); it++)
{
OGRErr err = OGRERR_UNSUPPORTED_SRS;
string crsString = it->first;
if (crsString.length() > 5)
{
int epsgCode = stoi(crsString.c_str() + 5); // TODO: support non-EPSG codes
err = it->second->importFromEPSG(epsgCode);
}
if (err == OGRERR_UNSUPPORTED_SRS)
{
cout << "WebMapService::Layer: " << "requested CRS is unsupported:" << crsString << endl;
return false;
}
}
// create all possible SRS transformation permutations
for (auto it1 = supportedCRS.begin(); it1 != supportedCRS.end(); it1++)
{
for (auto it2 = it1; it2 != supportedCRS.end(); it2++)
{
if (it2 == supportedCRS.end()) break;
CreateTransform(it1->second, it2->second);
CreateTransform(it2->second, it1->second);
}
}
return true;
}
示例12: OSRNewSpatialReference
Q_NOWARN_DEPRECATED_POP
bool QgsOgrLayerItem::setCrs( QgsCoordinateReferenceSystem crs )
{
if ( !( mCapabilities & SetCrs ) )
return false;
QString layerName = mPath.left( mPath.indexOf( ".shp", Qt::CaseInsensitive ) );
QString wkt = crs.toWkt();
// save ordinary .prj file
OGRSpatialReferenceH hSRS = OSRNewSpatialReference( wkt.toLocal8Bit().data() );
OSRMorphToESRI( hSRS ); // this is the important stuff for shapefile .prj
char* pszOutWkt = nullptr;
OSRExportToWkt( hSRS, &pszOutWkt );
QFile prjFile( layerName + ".prj" );
if ( prjFile.open( QIODevice::WriteOnly ) )
{
QTextStream prjStream( &prjFile );
prjStream << pszOutWkt << endl;
prjFile.close();
}
else
{
QgsMessageLog::logMessage( tr( "Couldn't open file %1.prj" ).arg( layerName ), tr( "OGR" ) );
return false;
}
OSRDestroySpatialReference( hSRS );
CPLFree( pszOutWkt );
// save qgis-specific .qpj file (maybe because of better wkt compatibility?)
QFile qpjFile( layerName + ".qpj" );
if ( qpjFile.open( QIODevice::WriteOnly ) )
{
QTextStream qpjStream( &qpjFile );
qpjStream << wkt.toLocal8Bit().data() << endl;
qpjFile.close();
}
else
{
QgsMessageLog::logMessage( tr( "Couldn't open file %1.qpj" ).arg( layerName ), tr( "OGR" ) );
return false;
}
return true;
}
示例13: _setSourceCrsFromWKT
static QString _setSourceCrsFromWKT(const QString& wkt)
{
QString ret;
OGRSpatialReferenceH hSRS = OSRNewSpatialReference(NULL);
QByteArray arr = wkt.toUtf8();
const char* raw_data = arr.constData();
if (OSRImportFromWkt(hSRS, const_cast<char**>(&raw_data)) == OGRERR_NONE)
{
char * ppszReturn = 0;
if (OSRExportToProj4(hSRS, &ppszReturn) == OGRERR_NONE && ppszReturn != 0)
{
ret = ppszReturn;
}
}
OSRDestroySpatialReference(hSRS);
return ret;
}
示例14: _setSourceCrsFromESRI
static QString _setSourceCrsFromESRI(const QString& wkt)
{
QString ret;
QString wkt2("ESRI::" + wkt);
OGRSpatialReferenceH hSRS = OSRNewSpatialReference(NULL);
QByteArray arr = wkt2.toUtf8();
if (OSRSetFromUserInput(hSRS, arr.constData()) == OGRERR_NONE)
{
char * ppszReturn = 0;
if (OSRExportToProj4(hSRS, &ppszReturn) == OGRERR_NONE && ppszReturn != 0)
{
ret = ppszReturn;
}
}
OSRDestroySpatialReference(hSRS);
return ret;
}
示例15: ensure
void object::test<4>()
{
ensure("SRS handle is NULL", nullptr != srs_);
err_ = OSRSetGS(srs_, -117.0, 100000.0, 100000);
ensure_equals("OSRSetGS failed", err_, OGRERR_NONE);
err_ = OSRSetGeogCS(srs_, "Test GCS", "Test Datum", "WGS84",
SRS_WGS84_SEMIMAJOR, SRS_WGS84_INVFLATTENING,
nullptr, 0, nullptr, 0);
ensure_equals("OSRSetGeogCS failed", err_, OGRERR_NONE);
err_ = OSRSetTOWGS84(srs_, 1, 2, 3, 0, 0, 0, 0);
ensure_equals("OSRSetTOWGS84 failed", err_, OGRERR_NONE);
const int coeffSize = 7;
double coeff[coeffSize] = { 0 };
const double expect[coeffSize] = { 1, 2, 3, 0, 0, 0, 0 };
err_ = OSRGetTOWGS84(srs_, coeff, 7);
ensure_equals("OSRSetTOWGS84 failed", err_, OGRERR_NONE);
ensure("GetTOWGS84 result is wrong",
std::equal(coeff, coeff + coeffSize, expect));
OSRSetLinearUnits(srs_, "Metre", 1);
char* proj4 = nullptr;
err_ = OSRExportToProj4(srs_, &proj4);
ensure_equals("OSRExportToProj4 failed", err_, OGRERR_NONE);
OGRSpatialReferenceH srs2 = nullptr;
srs2 = OSRNewSpatialReference(nullptr);
err_ = OSRImportFromProj4(srs2, proj4);
ensure_equals("OSRImportFromProj4 failed", err_, OGRERR_NONE);
err_ = OSRGetTOWGS84(srs2, coeff, 7);
ensure_equals("OSRSetTOWGS84 failed", err_, OGRERR_NONE);
ensure("GetTOWGS84 result is wrong",
std::equal(coeff, coeff + coeffSize, expect));
OSRDestroySpatialReference(srs2);
CPLFree(proj4);
}