導航:首頁 > 文件目錄 > qgis中文件格式

qgis中文件格式

發布時間:2023-12-12 10:38:53

A. 如何將shp格式地圖文件轉換成planet格式vector、clutter、heights等文件

1、打開QGIS軟體,將shp文件拖拽到文件的窗口中
2、在左側的功能窗口上,右鍵點擊圖層(如datagrid),顯示屬性窗口,其中有一些shp文件的基本信息
3、在General的tab頁面下,可以看到圖層的Data source encoding,默認都是選擇System,在不確定shp文件的編碼情況下,可以先默認System;
shp文件在使用過程中,編碼一般就是(UTF-8,GB2312,GBK,Default),在選擇的情況下也在這幾種編碼里切換;
4、選完編碼後,關閉屬性窗口,在圖層上點擊右鍵,打開Open Attribute Table,就可以看到屬性表裡的內容,假如屬性表裡是亂碼,重復上一步去選擇shp的編碼,一直到屬性表不亂碼,即可知道shp文件的編碼。
5、確認了shp文件的編碼,就可以對shp文件進行另存為了,一般都是保存成utf-8字元集的文件;右鍵點擊圖層,選擇save as,在彈出的確認窗口上,選擇Format為Esri shapefile,當然也可以保存成其他QGIS支持的格式,輸入文件名即可保存。

B. qgis 怎麼導入線文件csv

添加一個新的欄位到shp文件中,並且從Excel里導入數據到該欄位。原shp文件里的欄位ID應該與Excel里的欄位ID一一對應才能正確的導入。下圖分別是shp的欄位和Excel的欄位
將class欄位添加到shp中去:

(1)從Excel中讀取數據(為了讀取方便,存為.csv或者txt文件)

[cpp] view plain
QStringList readFromCSV(QString mfilename)
{
QStringList readlist;
if (mfilename !="")
{
QFileInfo csvFI(mfilename);
QString ext = csvFI.suffix();
if ( ext == "csv" || ext == "txt")
{
QFile *importFile = new QFile(mfilename);
if ( !importFile->open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::information(NULL, "error", "Cannot open import file !", QMessageBox::Yes | QMessageBox::No);
return readlist;
}
readlist.clear();
QTextStream readIn(importFile);//讀入文件
while ( !readIn.atEnd()) //讀取每一行
{
readlist.push_back(readIn.readLine());
}

importFile->close();
}
}
return readlist;
}
返回的readlist是所有行的數據,下面要根據Id來將每一行後面的class欄位插入shp文件

(2)插入class欄位及值到shp
首先要創建新欄位名,然後再插入值

[cpp] view plain
bool ImportLandInfo::insertInfo(QString mShpfile)
{

QgsVectorLayer * newLayer;

newLayer = new QgsVectorLayer(mShpfile, fileinfo.baseName(), "ogr");
if ( newLayer != NULL)
{
qDebug("newLayer is valid");
}
else
{
return false;
}
QStringList readlist = readFromCSV(「F:\\data.csv」);//Excel文件

//創建新欄位
QList<QgsField> newFieldList;
QStringList fields = readlist.at(0).split(",", QString::SkipEmptyParts); //得到Excel的欄位名
for (int i = 0; i < fields.count(); ++i)
{
QString fieldname;
if ( fields.at(i) == "Id" )
{
continue;
}
else
{
fieldname = fields.at(i);
}
QgsField shpField( fieldname, QVariant::String);
newFieldList.push_back( shpField );

}
QgsVectorDataProvider* vectorProvider = newLayer->dataProvider();
vectorProvider->addAttributes( newFieldList );

//新欄位中插入值
QMap<int, int> idmap = generateIdIndex(); //由原shp圖層得到QMap<ID, featureId>
int fieldIndex = -1; //每個待插入欄位的索引號
int IdIndex = -1; // ID欄位的索引號
for (int j = 0; j < readlist.count(); ++j)
{
QString filed;
QgsChangedAttributesMap changeMap;
QgsAttributeMap changeAttributeMap;

QStringList field = readlist.at( j ).split(",", QString::SkipEmptyParts);
for ( int k = 0; k < field.count(); ++k)
{
if ( field.at(k) == "Id" )
{
IdIndex = k;
continue;
}
if ( j == 0) //第一行時是計算欄位在屬性表中的index
{
fieldIndex = vectorProvider->fieldNameIndex( field.at(k) );
break;
}
else //不是第一行則插入
{
changeAttributeMap.insert( fieldIndex + k - 1, QVariant( field.at(k) ) );
}
}
if ( j == 0)
{
continue;
}
int ID = field.at(IdIndex).toInt();

QMap<int, int>::iterator i = idmap.find( ID); //找到指定ID對應的要素id(featureId)
int featureId = i.value();
changeMap.insert( featureId, changeAttributeMap );
vectorProvider->changeAttributeValues( changeMap );
}
delete vectorProvider;
return true;
}
generateIdIndex()是為了得到Id對應的FeatureID,因為屬性欄位Id和要素的FeatureID是不一致的。

[cpp] view plain
QMap<int, int> ImportLandInfo::generateIdIndex()
{
QMap<int, int> idMap;
QgsVectorLayer * orignalLayer;
QFileInfo fileinfo(moriginalShpfile);
orignalLayer = new QgsVectorLayer(moriginalShpfile, fileinfo.baseName(), "ogr");
if ( orignalLayer != NULL)
{
qDebug("newLayer is valid");
}
QgsVectorDataProvider* vectorProvider = orignalLayer->dataProvider();
QgsFeature feature;

int idIndex = vectorProvider->fieldNameIndex( "Id" );
int count = orignalLayer->featureCount();
for ( int i = 0; i < count; ++i)
{
orignalLayer->featureAtId( i, feature);
const QgsAttributeMap &attributes = feature.attributeMap();
int id = -1;
id = attributes[ idIndex].toInt();
idMap.insert( id, feature.id());
}
return idMap;
}

這樣欄位class的值就添加到shp中去了

閱讀全文

與qgis中文件格式相關的資料

熱點內容
文件夾正裝 瀏覽:279
剛復制的文件找不到怎麼辦 瀏覽:724
試運行適用於哪些體系文件 瀏覽:987
ghost文件復制很慢 瀏覽:967
傑德原車導航升級 瀏覽:240
編程dest是什麼意思 瀏覽:935
linux埠鏡像 瀏覽:820
iphone5屏幕清塵 瀏覽:157
機頂盒密碼怎麼改 瀏覽:672
w7系統下載32位教程 瀏覽:618
pcb文件包括哪些內容 瀏覽:598
g00文件 瀏覽:607
用bat程序刪除程序 瀏覽:516
dnf鬼泣90版本打安圖恩 瀏覽:668
245倒角編程怎麼計算 瀏覽:599
可以買生活用品的app有哪些 瀏覽:175
cad在c盤產生的文件夾 瀏覽:541
聯想手機解鎖工具 瀏覽:696
瑞銀3887win10 瀏覽:833
學網路編程哪個好 瀏覽:805

友情鏈接