1. 程式人生 > >QGis 圖層屬形設定

QGis 圖層屬形設定

QGis 載入的圖層包括向量圖層和柵格圖層,向量圖層中通常有點、線、面三種常用的圖層。載入後的圖層顯示的風格各異,但是我們可以對他們的不同的風格進行設定使其看起來很好看。
看一下設定的效果:

點圖層
這裡寫圖片描述
線圖層
這裡寫圖片描述
面圖層
這裡寫圖片描述

1.點圖層設定關鍵程式碼:
獲取點圖層的各種屬性:

    QgsSingleSymbolRendererV2* render = (QgsSingleSymbolRendererV2*)pointVectorLayer->rendererV2();
    QgsMarkerSymbolV2* markSym = (QgsMarkerSymbolV2*)render->symbol();

    QgsSymbolLayerV2List symList = markSym->symbolLayers();
    QgsSvgMarkerSymbolLayerV2* svgMarker = (QgsSvgMarkerSymbolLayerV2*)symList.at(0
); svgPath = svgMarker->path();//SVG路徑 double size = svgMarker->size();//SVG大小 double minScale = pointVectorLayer->minimumScale();//最小顯示比例 double maxScale = pointVectorLayer->maximumScale();//最大顯示比例 QgsPalLayerSettings layerSetting = QgsPalLayerSettings::fromLayer(pointVectorLayer); bool
bShowLabel = layerSetting.enabled;//是否顯示標籤 fontColor = layerSetting.textColor;//字型顏色 int fontSize = layerSetting.textFont.pointSize();//字型大小 bool bBufferShow = layerSetting.bufferDraw;//輪廓顯示 bufColor = layerSetting.bufferColor;//輪廓顏色 bool bShadowShow = layerSetting.shadowDraw;//陰影顯示 int
shadowAngle = layerSetting.shadowOffsetAngle;//陰影角度 int shadowDis = layerSetting.shadowOffsetDist;//陰影距離

設定點圖層的屬性:

//SVG
    QgsSvgMarkerSymbolLayerV2* svgMarker = new QgsSvgMarkerSymbolLayerV2(svgPath);
    QgsSymbolLayerV2List symList;
    symList.append(svgMarker);
    QgsMarkerSymbolV2* markSym = new QgsMarkerSymbolV2(symList);
    QgsSingleSymbolRendererV2* symRenderer = new QgsSingleSymbolRendererV2(markSym);

    pointVectorLayer->setRendererV2(symRenderer);
    svgMarker->setSize(svgSize); //設定svg大小

    //設定標註
    QgsPalLayerSettings layerSetting;
    layerSetting.enabled = bShowLable;//顯示標註  

    layerSetting.fieldName = pointVectorLayer->pendingFields()[1].name();
    layerSetting.centroidWhole = true; //設定位置參考的中心點
    //設定字型
    layerSetting.textColor = fontColor;
    QFont font("Times", fontSize);
    font.setBold(true);
    layerSetting.textFont = font;

    //設定輪廓
    layerSetting.bufferDraw = bShowBuf;
    layerSetting.bufferColor = bufColor;
    layerSetting.bufferSize = 1;
    layerSetting.bufferTransp = 0.5;

    //設定陰影
    layerSetting.shadowDraw = bShowShadow;
    layerSetting.shadowOffsetAngle = shadowAngle;
    layerSetting.shadowOffsetDist = shadowDis;

    layerSetting.writeToLayer(pointVectorLayer);

    DrawManager::getInstance()->getMainCanvas()->refresh();

2.線圖層的關鍵程式碼:
獲取線圖層的各種屬性:

    QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(lineVectorLayer->rendererV2());
    QgsLineSymbolV2* lineSymbol = (QgsLineSymbolV2*)symRenderer->symbol();
    lineColor = lineSymbol->color();//線顏色
    double lineWidth = lineSymbol->width();//線寬

設定線圖層的各種屬性:

    QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(lineVectorLayer->rendererV2());
    QgsLineSymbolV2* lineSymbol = (QgsLineSymbolV2*)symRenderer->symbol();
    lineSymbol->setColor(lineColor);
    lineSymbol->setWidth(lineWidth);

    DrawManager::getInstance()->getMainCanvas()->refresh();

3.面圖層的關鍵程式碼:
獲取面圖層的屬性:

    QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(polygonVectorLayer->rendererV2());
    QgsFillSymbolV2* fillSymbol = (QgsFillSymbolV2*)symRenderer->symbol();
    fillColor = fillSymbol->color();//填充顏色
    double alpha = fillSymbol->alpha();//透明度

設定面圖層的屬性:

    QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(polygonVectorLayer->rendererV2());
    QgsFillSymbolV2* fillSymbol = (QgsFillSymbolV2*)symRenderer->symbol();
    fillSymbol->setColor(fillColor);
    fillSymbol->setAlpha((double)alpha/100);

相關推薦

QGis 設定

QGis 載入的圖層包括向量圖層和柵格圖層,向量圖層中通常有點、線、面三種常用的圖層。載入後的圖層顯示的風格各異,但是我們可以對他們的不同的風格進行設定使其看起來很好看。 看一下設定的效果: 點圖層 線圖層 面圖層 1.點圖層設定關鍵程式碼

用Construct 2製作遊戲時的和人物設定

construct2能做什麼 construct2是一款跨平臺二維遊戲開發引擎,不需要編碼,通過定義各個部件和事件完成html5的遊戲開發。 該引擎可以將開發的封裝成多種形式,如phonegap、cocoonjs,再用相應工具生成ios和android的應

C# 操作PDF (Layer)—新增、刪除設定可見性

前言 通過新增圖層,我們可以將文字、圖片、表格、圖形等元素精確定位於頁面指定位置,將這些元素進行疊放、組合形成頁面的最終效果。此外,對於頁面中已有的圖層我們也可以進行設定圖層可見性、刪除圖層等操作。在本篇文章中,將介紹如何在C#中進行PDF圖層的操作。   要點概括 1.新增圖層 線

AutoCAD中我們如何進行建立和設定管理

像我們一般做繪圖設計的小夥伴們大致都瞭解啦,AutoCAD中繪製任何物件都是在圖層上進行的。圖層就好像一張張透明的圖紙。整個圖形就相當於若干個透明圖紙上下疊加的效果。一般情況下,相同的圖層上具有相同的線型、顏色、線寬等特性。 在繪製的是過程中,我們可以根據自己的需要進行建立、設定圖層。比如

arcgis api for js 設定透明度

出於某些原因,需要知道之前設定的透明度值,發現可以通過向元素附加資料的方法來獲得資料,記錄一下 1.建立 objOpactiy = new esri.dijit.HorizontalSlider({             &nbs

Focusky教程 | 設定

當多個元素物件疊放在一起, 而又組織不好的時候, 畫面會顯得雜亂無章。 但如果進行合理的圖層設定, 按照一定的順序將物體疊放,組合起來,就會形成很好的頁面效果。在Focusky(也稱為“FS軟體”)動畫演示製作的過程中, 可以進行4種不同效果的圖層設定: 上移一層, 下移一層, 置於頂層,

安卓設定控制元件的陰影效果:效果LayerList

圖層列表 LayerDrawable 是管理其他可繪製物件陣列的可繪製物件。列表中的每個可繪製物件按照列表的順序繪製,列表中的最後一個可繪製物件繪於頂部。每個可繪製物件由單一 layer-list 元素內的 item 元素表示。 layer-list 對應的 J

openlayers4通過拖動滑動條設定顏色透明度

在GIS專案實踐過程中,需要實現各個功能區的疊加圖層實現,以及設定它們各自的透明度,功能區分為1類、2類、3類、4a類、4b類等。每個功能區的載入均是通過一個json檔案載入到map。要求可以單獨檢視某個功能區,並通過拖動滾動條可以控制每個圖層的透明度。 1.

PIE SDK地圖範圍設定事件監聽

  1. 功能簡介      地圖範圍設定的監聽就是通過IMapControlEvents介面對地圖的檢視範圍更新或者地圖的解析度發生變化進行監聽,然後做出相應的操作。     圖層事件的監聽就是通過IActiveViewEvents介面對地圖

echarts給柱的每個柱子設定不同顏色

series: [{ type: 'bar', data: [5, 20, 36, 10, 10, 20], itemStyle: {

QGis(三)查詢向量的要素屬性欄位值

當載入一個向量圖層後,如果要檢視要素的屬性欄位值,則需要實現identity的功能。可以和前面的縮放一樣,新增一個工具欄按鈕: (1)在MainWindow新增一個變數,並在Qt設計師裡新增Action: QgsMapToolSelect *mpIdentifyTool

ArcGIS API For JS 中設定顯示的方法(ArcGISDynamicMapServiceLayer)setVisibleLayers(ids, doNotRefresh?)介紹

一、我們都知道所以圖層都繼承自layer圖片,在layer圖層並沒有定義該方法,也就說該方法是子類自己定義的,並不是每個圖層都有該方法,像CSVLayer圖層有setVisibility(isVisib

Echarts 圖表外掛學習(3)-- 給柱的每個柱子設定不同顏色

1.實現的效果 2.引用Echarts 本地:<script src="../lib-v3/echarts/echarts.min.js"></script> 線上:<script src="http://echarts.baidu.c

iOS UI——通過layer設定 圖片的形變屬性(transform)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //通過uiview設定(2D效果) // self.iconView.transform=CGAffineTransform

QGis二次開發基礎 -- 向量的顯示樣式

帶座標的向量圖層作為GIS的核心資料,具有非常豐富的用途。人們往往喜歡在地圖上做各種標記,不僅美觀,而且使地圖清晰,一目瞭然。於是應運而生了使用各種各樣的圖示作為地圖示記的功能需求,在很多GIS軟體上,這早已不是什麼新鮮事了。然而在QGis二次開發的時候,同學們

QGis二次開發基礎 -- 構建管理器

為了迴應有些同學對上一篇博文的建議,這篇文章主要關注於QGis二次開發中的“圖層管理器”的實現。 使用QGis構建獨立應用系統,我相信大部分同學應該還是關注於GIS基本功能框架構建上,也就是一些基本的GIS功能,例如: 資料的顯示、漫遊瀏覽等 讀入資料的管

arcgis-api-for-js-之新增到地圖及地圖服務設定可見

1. 前言 ArcGISDynamicMapServiceLayer 類代表動態圖層,因此就有很大的屬性與方法來操作檢視服務。 2. 新增圖層到地圖 我們使用 addLayer() 方法將圖層載入到地圖中,程式碼如下: require([

QGis(四)shp向量新增新欄位

新增一個新的欄位到shp檔案中,並且從Excel裡匯入資料到該欄位。原shp檔案裡的欄位ID應該與Excel裡的欄位ID一一對應才能正確的匯入。下圖分別是shp的欄位和Excel的欄位 將class欄位新增到shp中去: (1)從Excel中讀取資料(為了讀取方便,存為.

解決QGIS 1.8屬性中文亂碼問題

QGIS 1.8版屬性資料中文顯示會變成亂碼的問題,目前有一個暫時的解決方法,就是安裝一個shapefile編碼修正Shapefile Encoding Fixer Plugin,以下是簡要的操作流程: 1.首先新增一個附加元件主機:[附加元件]->[Python附加

arcgis engine開發中標註設定

做了一個圖層標註顯示並非圖層要素對應欄位值,而作一個翻譯,網上也未找到比較詳細的說明,因此費了較長時間,這裡作一個記錄; 下面對整個設定過程作一個詳細的標註:  IFeatureLayer feaLy = curLayer as IFeatureLayer;//把需要標註