本文整理汇总了C++中ITable::isValid方法的典型用法代码示例。如果您正苦于以下问题:C++ ITable::isValid方法的具体用法?C++ ITable::isValid怎么用?C++ ITable::isValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITable
的用法示例。
在下文中一共展示了ITable::isValid方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadBinaryData
bool FeatureConnector::loadBinaryData(Ilwis::IlwisObject *obj) {
if ( obj == nullptr)
return false;
FeatureCoverage *fcoverage = static_cast<FeatureCoverage *>(obj);
QString file = _odf->value("BaseMap", "AttributeTable");
ITable extTable;
if ( file != sUNDEF) {
if(!extTable.prepare(file)){
kernel()->issues()->log(file,TR(ERR_NO_INITIALIZED_1).arg(file),IssueObject::itWarning);
return false;
}
}
bool ok = false;
if (fcoverage->featureTypes() == itPOINT)
ok = loadBinaryPoints(fcoverage);
else if (fcoverage->featureTypes() == itLINE)
ok = loadBinarySegments(fcoverage);
else if (fcoverage->featureTypes() == itPOLYGON)
ok = loadBinaryPolygons(fcoverage);
if ( ok && extTable.isValid()) {
ITable attTbl = fcoverage->attributeTable();
quint32 keyIndex = attTbl->columnIndex(COVERAGEKEYCOLUMN);
for(quint32 rowExt=0; rowExt < extTable->records(); ++rowExt) {
vector<QVariant> rec = extTable->record(rowExt);
for(quint32 rowAtt = 0; rowAtt < attTbl->records(); ++rowAtt ) {
if ( attTbl->cell(keyIndex, rowAtt) == rowExt + 1) {
attTbl->record(rowAtt,rec);
}
}
}
}
return ok;
}
示例2: loadData
bool GdalFeatureConnector::loadData(IlwisObject* data, const IOOptions &){
if(!GdalConnector::loadMetaData(data, IOOptions()))
return false;
bool ok = true;
FeatureCoverage *fcoverage = static_cast<FeatureCoverage *>(data);
if ( fcoverage->isValid() ) {
ITable attTable = fcoverage->attributeTable();
if (!attTable.isValid()){
ERROR2(ERR_NO_INITIALIZED_2,"attribute table",_filename.toString());
return false;
}
fcoverage->setFeatureCount(itFEATURE, iUNDEF, FeatureInfo::ALLFEATURES); // metadata already set it to correct number, creating new features will up the count agains; so reset to 0.
OGRLayerH hLayer = getLayerHandle();
if ( hLayer) {
GdalTableLoader loader;
attTable->dataLoaded(true); // new table, dont want any loading behaviour
loader.setColumnCallbacks(attTable.ptr(), hLayer);
std::vector<QVariant> record(attTable->columnCount());
OGRFeatureH hFeature = 0;
gdal()->resetReading(hLayer);
//each FEATURE
try {
while( (hFeature = gdal()->getNextFeature(hLayer)) != NULL){
loader.loadRecord(attTable.ptr(), hFeature, record);
geos::geom::Geometry * geometry = fillFeature(fcoverage, gdal()->getGeometryRef(hFeature));
if (geometry){
auto feature = fcoverage->newFeature(geometry, false);
feature->record(record);
}else{
ERROR1("GDAL error during load of binary data: no geometry detected for feature in %1", _filename.toString());
}
gdal()->destroyFeature( hFeature );
}
} catch (FeatureCreationError& ) {
gdal()->destroyFeature( hFeature );
ok = false;
}
}
//layer envelopes/extents
Envelope bbox;
OGREnvelope envelope;//might sometimes be supported as 3D now only posssible from OGRGeometry
OGRErr err = gdal()->getLayerExtent(hLayer, &envelope , TRUE);//TRUE to FORCE
if (err != OGRERR_NONE && fcoverage->featureCount() != 0){
ERROR0(QString("Couldn't load extent of a layer from %1 after binary was loaded: %2").arg(_filename.toString()).arg(gdal()->translateOGRERR(err)));
}else{
bbox = Envelope(Coordinate(envelope.MinX,envelope.MinY),Coordinate(envelope.MaxX,envelope.MaxY));
}
fcoverage->envelope(bbox);
}
gdal()->closeFile(sourceRef().toLocalFile(), data->id());
_binaryIsLoaded = ok;
return ok;
}
示例3: storeBinaryData
bool CoverageConnector::storeBinaryData(IlwisObject *obj, IlwisTypes tp)
{
Coverage *coverage = static_cast<Coverage *>(obj);
ITable attTable = coverage->attributeTable();
if ( attTable.isValid()) {
QScopedPointer<TableConnector> conn(createTableConnector(attTable, coverage, tp));
return conn->storeBinaryData(attTable.ptr());
}
return false;
}
示例4: loadMetaData
bool CoverageConnector::loadMetaData(Ilwis::IlwisObject *data)
{
Ilwis3Connector::loadMetaData(data);
Coverage *coverage = static_cast<Coverage *>(data);
QString csyName = _odf->value("BaseMap","CoordSystem");
if ( csyName.toLower() == "latlonwgs84.csy")
csyName = "code=epsg:4326";
ICoordinateSystem csy;
if ( !csy.prepare(csyName)) {
kernel()->issues()->log(csyName,TR("Coordinate system couldnt be initialized, defaulting to 'unknown'"),IssueObject::itWarning);
QString resource = QString("ilwis://file/unknown.csy");
if (!csy.prepare(resource)) {
kernel()->issues()->log(TR("Fallback to 'unknown failed', corrupt system files defintion"));
return false;
}
}
coverage->setCoordinateSystem(csy);
QString attfile = _odf->value("BaseMap", "AttributeTable");
QString basemaptype = _odf->value("BaseMap", "Type");
// feature coverages always have an attribute table; rasters might have
if ( basemaptype != "Map" || attfile != sUNDEF) {
ITable attTable = prepareAttributeTable(attfile, basemaptype);
if (!attTable.isValid())
return false;
coverage->attributeTable(attTable);
}
QString cbounds = _odf->value("BaseMap","CoordBounds");
QStringList parts = cbounds.split(" ");
if ( parts.size() == 4) {
double minx = parts[0].toDouble();
double miny = parts[1].toDouble();
double maxx = parts[2].toDouble();
double maxy = parts[3].toDouble();
Box2D<double> env(Coordinate(minx, miny), Coordinate(maxx, maxy));
coverage->envelope(env);
} else {
kernel()->issues()->log(TR(ERR_INVALID_PROPERTY_FOR_2).arg("Coordinate boundaries", data->name()), IssueObject::itWarning);
}
return true;
}
示例5: prepareAttributeTable
ITable CoverageConnector::prepareAttributeTable(const QString& file, const QString& basemaptype) const{
ITable extTable;
if ( file != sUNDEF) {
if(!extTable.prepare(file)){
kernel()->issues()->log(file,TR(ERR_NO_INITIALIZED_1).arg(file),IssueObject::itWarning);
return ITable();
}
}
IDomain covdom;
if (!covdom.prepare("count")){
return ITable();
}
ITable attTable;
if ( basemaptype != "Map" ) {
Resource resource(QUrl(QString("ilwis://internal/%1").arg(_odf->fileinfo().baseName())), itFLATTABLE);
if(!attTable.prepare(resource)) {
ERROR1(ERR_NO_INITIALIZED_1,resource.name());
return ITable();
}
if ( extTable.isValid()) {
for(int i=0; i < extTable->columns(); ++i) {
attTable->addColumn(extTable->columndefinition(i));
}
}
} else {
attTable = extTable;
}
if ( attTable->columnIndex(FEATUREIDCOLUMN) == iUNDEF) { // external tables might already have these
attTable->addColumn(COVERAGEKEYCOLUMN,covdom);
attTable->addColumn(FEATUREIDCOLUMN,covdom);
}
bool isNumeric = _odf->value("BaseMap","Range") != sUNDEF;
if ( isNumeric) {
IDomain featuredom;
if (!featuredom.prepare("value")){
return ITable();
}
attTable->addColumn(FEATUREVALUECOLUMN,featuredom);
}
return attTable;
}
示例6: loadData
bool FeatureConnector::loadData(Ilwis::IlwisObject *obj, const IOOptions &) {
if ( obj == nullptr)
return false;
FeatureCoverage *fcoverage = static_cast<FeatureCoverage *>(obj);
QString file = _odf->value("BaseMap", "AttributeTable");
ITable extTable;
if ( file != sUNDEF) {
if(!extTable.prepare(file)){
kernel()->issues()->log(file,TR(ERR_NO_INITIALIZED_1).arg(file),IssueObject::itWarning);
return false;
}
}
bool ok = false;
try {
_binaryIsLoaded = true; // to prevent any subsequent calls to this routine while loading (which mat trigger it).
if (fcoverage->featureTypes() == itPOINT)
ok = loadBinaryPoints(fcoverage);
else if (fcoverage->featureTypes() == itLINE)
ok = loadBinarySegments(fcoverage);
else if (fcoverage->featureTypes() == itPOLYGON)
ok = loadBinaryPolygons(fcoverage);
_binaryIsLoaded = ok;
if ( ok && extTable.isValid()) {
ITable attTbl = fcoverage->attributeTable();
quint32 nrAttrCols = std::min(attTbl->columnCount(),extTable->columnCount());
// quint32 keyIndex = extTable->columnIndex(COVERAGEKEYCOLUMN);
for(quint32 rowExt=0; rowExt < extTable->recordCount(); ++rowExt) {
if ( rowExt < fcoverage->featureCount()){
vector<QVariant> rec = extTable->record(rowExt);
rec.resize(nrAttrCols); // extTable received an extra "Domain" column, which is not there (and will not be there) in attTbl
attTbl->record(rowExt,rec);
}
}
}
} catch (FeatureCreationError& ) {
}
if ( ok)
_binaryIsLoaded = true;
return ok;
}
示例7: process
void OperationWorker::process(){
try {
Operation op(_expression);
SymbolTable tbl;
ExecutionContext ctx;
if(op->execute(&ctx, tbl)){
if ( ctx._results.size() > 0){
for(auto resultName : ctx._results){
Symbol symbol = tbl.getSymbol(resultName);
if ( hasType(symbol._type, itNUMBER)){
_result += symbol._var.toDouble();
}else if ( hasType(symbol._type, itSTRING)){
_result += symbol._var.toString();
}else if ( hasType(symbol._type, (itCOVERAGE | itTABLE))){
if ( symbol._type == itRASTER){
IRasterCoverage raster = symbol._var.value<IRasterCoverage>();
if ( raster.isValid())
_result = raster->resource().url().toString();
}else if(symbol._type == itTABLE){
ITable table = symbol._var.value<ITable>();
if(table.isValid())
_result = table->resource().url().toString();
}
}
}
}
kernel()->issues()->log(QString(TR("Operation has executed succesfully")), IssueObject::itMessage);
}else {
qDebug() << "operation failed";
}
emit finished();
}catch(const ErrorObject& err){
}
emit finished();
}
示例8: storeBinaryDataTable
bool FeatureConnector::storeBinaryDataTable(IlwisObject *obj, IlwisTypes tp, const QString& baseName)
{
FeatureCoverage *fcoverage = static_cast<FeatureCoverage *>(obj);
ITable attTable = fcoverage->attributeTable();
if ( attTable.isValid() && attTable->columnCount() > 0) {
QFileInfo basename (baseName);
QScopedPointer<TableConnector> conn(createTableStoreConnector(attTable, fcoverage, tp, basename.baseName()));
IFeatureCoverage cov(fcoverage);
FeatureIterator iter(cov);
quint32 i = 0;
std::vector<quint32> recordnr(fcoverage->featureCount(tp));
for(quint32 rec=0; rec < fcoverage->featureCount(); ++rec){
if ( hasType((*iter)->geometryType(), tp))
recordnr[i++] = rec;
++iter;
};
conn->selectedRecords(recordnr);
return conn->storeBinaryData(attTable.ptr());
}
return true; // no store needed
}
示例9: storeMetaData
bool CoverageConnector::storeMetaData(IlwisObject *obj, IlwisTypes type, const DataDefinition& datadef)
{
bool ok = Ilwis3Connector::storeMetaData(obj, type);
if ( !ok)
return false;
Coverage *coverage = static_cast<Coverage *>(obj);
const ICoordinateSystem csy = coverage->coordinateSystem();
if (!csy.isValid())
return ERROR2(ERR_NO_INITIALIZED_2, "CoordinateSystem", coverage->name());
QString localName = Resource::toLocalFile(csy->source().url(),true);
if ( localName == sUNDEF) {
localName = CoordinateSystemConnector::createCsyFromCode(csy->code());
}
if ( localName == sUNDEF) {
return ERROR2(ERR_NO_INITIALIZED_2, "CoordinateSystem", coverage->name());
}
_odf->setKeyValue("BaseMap","CoordSystem", localName);
Box2D<double> bounds = coverage->envelope();
if(!bounds.isValid())
return ERROR2(ERR_NO_INITIALIZED_2, "Bounds", coverage->name());
_odf->setKeyValue("BaseMap","CoordBounds",QString("%1 %2 %3 %4").
arg(bounds.min_corner().x(),10,'f').
arg(bounds.min_corner().y(),10,'f').
arg(bounds.max_corner().x(),10,'f').
arg(bounds.max_corner().y(),10,'f'));
const IDomain dom = datadef.domain();
if (!dom.isValid())
return ERROR2(ERR_NO_INITIALIZED_2, "Domain", coverage->name());
calcStatics(obj,NumericStatistics::pBASIC);
if ( dom->ilwisType() == itNUMERICDOMAIN) {
quint16 digits = coverage->statistics().significantDigits();
qint32 delta = coverage->statistics()[NumericStatistics::pDELTA];
if ( delta >= 0 && delta < 256 && digits == 0){
if ( delta >= 0 && delta < 256 && digits == 0){
if ( datadef.domain()->code() == "boolean"){
QString domInfo = QString("bool.dom;Byte;bool;0;;");
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
_odf->setKeyValue("BaseMap","Range","0:1:offset=-1");
_odf->setKeyValue("BaseMap","Domain","bool.dom");
}
else{
QString domInfo = QString("Image.dom;Byte;image;0;;");
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
_odf->setKeyValue("BaseMap","Range","0:255:offset=0");
_odf->setKeyValue("BaseMap","MinMax","0:255");
_odf->setKeyValue("BaseMap","Domain","Image.dom");
}
}
}
else {
const NumericStatistics& stats = coverage->statistics();
int digits = stats.significantDigits();
RawConverter conv(stats[NumericStatistics::pMIN], stats[NumericStatistics::pMAX],pow(10, - digits));
QString rangeString = QString("%1:%2:%3:offset=%4").arg(stats[NumericStatistics::pMIN]).arg(stats[NumericStatistics::pMAX]).arg(conv.scale()).arg(conv.offset());
_odf->setKeyValue("BaseMap","Range",rangeString);
_odf->setKeyValue("BaseMap","Domain","value.dom");
_odf->setKeyValue("BaseMap","MinMax",QString("%1:%2").arg(stats[NumericStatistics::pMIN]).arg(stats[NumericStatistics::pMAX]));
QString domInfo = QString("value.dom;Long;value;0;-9999999.9:9999999.9:0.1:offset=0");
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
}
} if ( dom->ilwisType() == itITEMDOMAIN) {
QString source = Resource::toLocalFile(dom->source().url(), true);
if ( dom->valueType() == itTHEMATICITEM && coverage->ilwisType() == itRASTER) {
IThematicDomain themdom = dom.get<ThematicDomain>();
if ( themdom.isValid()) {
QString domInfo = QString("%1;Byte;class;%2;;").arg(source).arg(themdom->count());
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
_odf->setKeyValue("BaseMap","Domain",source);
}
} else if(dom->valueType() == itINDEXEDITEM) {
QString domName = _odf->fileinfo().fileName();
QString domInfo = QString("%1;Long;UniqueID;0;;").arg(domName);
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
_odf->setKeyValue("BaseMap","Domain",domName);
} else if ( dom->valueType() == itNAMEDITEM) {
INamedIdDomain iddom = dom.get<NamedIdDomain>();
QString domName = _odf->fileinfo().fileName();
int index;
if ( (index=domName.lastIndexOf("."))!= -1) {
domName = domName.left(index);
}
QString domInfo = QString("%1;;Int;id;%2;;").arg(domName).arg(iddom->count());
_odf->setKeyValue("BaseMap","DomainInfo",domInfo);
_odf->setKeyValue("BaseMap","Domain",domName);
iddom->connectTo(QUrl(),"domain","ilwis3", IlwisObject::cmOUTPUT);
iddom->store(Ilwis::IlwisObject::smMETADATA | Ilwis::IlwisObject::smBINARYDATA);
}
}
ITable attTable = coverage->attributeTable();
if ( attTable.isValid()) {
QScopedPointer<TableConnector> conn(createTableConnector(attTable, coverage, type));
//.........这里部分代码省略.........
示例10: storeMetaData
bool FeatureConnector::storeMetaData(FeatureCoverage *fcov, IlwisTypes type) {
if ( type == itUNKNOWN)
return true;//if type is itUNKNOWN we dont store
DataDefinition datadef;
ITable attTable = fcov->attributeTable();
QString primkey = attTable->primaryKey();
if (primkey == sUNDEF)
primkey = COVERAGEKEYCOLUMN;
int index = attTable->columnIndex(primkey);
if ( index != iUNDEF ) {
const ColumnDefinition& coldef = attTable->columndefinitionRef(index);
if ( coldef.datadef().domain<>()->ilwisType() == itITEMDOMAIN)
datadef = DataDefinition(coldef.datadef().domain(),coldef.datadef().range()->clone());
}
if ( !datadef.isValid()) {
INamedIdDomain indexdom;
indexdom.prepare();
indexdom->name(fcov->name());
NamedIdentifierRange range;
for(quint32 i=0; i < fcov->featureCount(type); ++i){
QStringList parts = Ilwis3Connector::ilwis3ClassName(type).split(" ");
QString itemname = QString("%1_%2").arg(parts[0]).arg(i);
range << itemname;
}
indexdom->setRange(range);
datadef.domain(indexdom);
QFileInfo inf ( _resource.url(true).toLocalFile());
QString filename = context()->workingCatalog()->filesystemLocation().toLocalFile() + "/" + inf.baseName() + ".dom";
indexdom->connectTo(filename,"domain","ilwis3", Ilwis::IlwisObject::cmOUTPUT);
indexdom->store();
}
bool isMulti = (fcov->featureTypes() & (fcov->featureTypes() - 1)) != 0;
QString baseName = Ilwis3Connector::outputNameFor(fcov, isMulti, type);
index = baseName.lastIndexOf(".");
if ( index != -1) {
baseName = baseName.left(index);
}
bool ok = CoverageConnector::storeMetaData(fcov, type, datadef, baseName);
if ( !ok)
return false;
if ( datadef.domain()->valueType() == itINDEXEDITEM) {
_odf->setKeyValue("Domain","Type","DomainUniqueID");
_odf->setKeyValue("DomainSort","Sorting","AlphaNumeric");
_odf->setKeyValue("DomainSort","Prefix","feature");
_odf->setKeyValue("DomainSort","Class","Domain UniqueID");
_odf->setKeyValue("DomainIdentifier","Nr",IniFile::FormatElement(fcov->featureCount(type)));
}
Envelope bounds = fcov->envelope();
if ( bounds.isNull() || !bounds.isValid())
bounds = fcov->coordinateSystem()->envelope();
_odf->setKeyValue("BaseMap","CoordBounds",QString("%1 %2 %3 %4").
arg(bounds.min_corner().x,0,'f',10).
arg(bounds.max_corner().y,0,'f',10).
arg(bounds.max_corner().x,0,'f',10).
arg(bounds.min_corner().y,0,'f',10));
QString ext = "mpa";
if ( hasType(type, itPOLYGON)){
ok = storeMetaPolygon(fcov, baseName);
}
if ( hasType(type, itLINE)){
ok = storeMetaLine(fcov, baseName);
ext = "mps";
}
if ( hasType(type, itPOINT)){
ok = storeMetaPoint(fcov, baseName);
ext = "mpp";
}
if ( attTable.isValid() && attTable->columnCount() > 0) {
QFileInfo basename (baseName);
QScopedPointer<TableConnector> conn(createTableStoreConnector(attTable, fcov, type, basename.baseName()));
std::vector<quint32> recs(_itemCount);
conn->selectedRecords(recs);
conn->storeMetaData(attTable.ptr());
}
_odf->store(ext, QFileInfo(baseName));
return ok;
}