中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

貴州省交通建設(shè)工程質(zhì)量監(jiān)督局網(wǎng)站大數(shù)據(jù)精準(zhǔn)營銷案例

貴州省交通建設(shè)工程質(zhì)量監(jiān)督局網(wǎng)站,大數(shù)據(jù)精準(zhǔn)營銷案例,丹陽網(wǎng)站建設(shè)開發(fā),電商網(wǎng)站 知名案例前言創(chuàng)建地圖布局是 GIS 作業(yè)結(jié)束時(shí)的一項(xiàng)常見任務(wù)。 它用于呈現(xiàn)最終結(jié)果的輸出,作為與用戶交流的一種方式,以便從地圖中獲取信息、知識(shí)或見解。 在包括 QGIS 在內(nèi)的任何 GIS 軟件中制作地圖布局都非常容易。 但另一方面,當(dāng)我們必須生成如此大…

前言

創(chuàng)建地圖布局是 GIS 作業(yè)結(jié)束時(shí)的一項(xiàng)常見任務(wù)。 它用于呈現(xiàn)最終結(jié)果的輸出,作為與用戶交流的一種方式,以便從地圖中獲取信息、知識(shí)或見解。 在包括 QGIS 在內(nèi)的任何 GIS 軟件中制作地圖布局都非常容易。 但另一方面,當(dāng)我們必須生成如此大量的地圖時(shí),這可能是一項(xiàng)乏味的工作。 此外,在制作布局圖時(shí),我們經(jīng)常會(huì)重復(fù)添加一些常見的制圖項(xiàng)目,例如比例尺、圖例、地圖標(biāo)題等。 那么,如果我們可以自動(dòng)生成呢? 當(dāng)然,加快地圖布局速度會(huì)帶來很多好處。

在本 PyQGIS 教程中,我將討論如何在 QGIS 中使用 Python 腳本自動(dòng)制作地圖布局。 在本教程中,您將學(xué)習(xí)如何將地圖添加到布局中,然后添加一些項(xiàng)目,如地圖標(biāo)題、圖例、指北針、比例尺和圖片。

1、數(shù)據(jù)準(zhǔn)備

進(jìn)行布局之前的第一步是在 QGIS 地圖畫布中準(zhǔn)備地圖。 對(duì)于本教程,我準(zhǔn)備了一張溫哥華市的街道地圖,如圖 1 所示。您可以準(zhǔn)備自己的地圖,但如果您想像我的一樣,可以從 Vancouver Open Data 和 Cartodb Dark basemap 下載街道數(shù)據(jù) 使用 Tile+ 插件將其添加到地圖畫布中。

圖 1. 在 QGIS 中準(zhǔn)備地圖

2、自動(dòng)化地圖布局組合

現(xiàn)在讓我們使用 Python 自動(dòng)構(gòu)建地圖布局。 首先定義一個(gè)當(dāng)前項(xiàng)目實(shí)例,并使用以下代碼啟動(dòng)一個(gè)默認(rèn)設(shè)置為 A4 紙張大小的打印布局。

project=QgsProject.instance()
layout=QgsPrintLayout(project)
layout.initializeDefaults()

上面的代碼將動(dòng)態(tài)創(chuàng)建一個(gè)布局頁面。 如果要將其添加到項(xiàng)目中,請(qǐng)使用此代碼。

layout.setName("Street Map Layout")
project.layoutManager().addLayout(layout)

該布局將添加到項(xiàng)目的布局中,如圖 2 所示。

圖 2. 項(xiàng)目布局

(1)將地圖框添加到布局

我們創(chuàng)建了一個(gè)空布局。 現(xiàn)在讓我們添加地圖項(xiàng)。 首先,我們將使用此代碼將地圖框添加到布局中。

map=QgsLayoutItemMap(layout)
map.setRect(10,10,10,10)
map.zoomToExtent(iface.mapCanvas().extent())
map.attemptMove(QgsLayoutPoint(5,20,QgsUnitTypes.LayoutMillimeters))
map.attemptResize(QgsLayoutSize(285,180, QgsUnitTypes.LayoutMillimeters))

在第一行中,我們使用 QgsLayoutItemMap 類定義了一個(gè)地圖布局項(xiàng)。 然后在第二行中設(shè)置了一個(gè)矩形框架,它有四個(gè)整數(shù)參數(shù)。 它是什么數(shù)字并不重要,它只是用來確定形狀的。 接下來是使用 zoomToExtent 方法將地圖畫布縮放到一定程度的方法。 在第四行中,我們使用 attemptMove 方法將地圖移動(dòng)到位置 (x,y)。 地圖布局坐標(biāo)使用屏幕坐標(biāo),原點(diǎn)在頁面左上角,最大坐標(biāo)在頁面右下角。 最后,我們使用 attemptResize 調(diào)整地圖框的大小,其大小以 QgsUnitTypes 中定義的毫米為單位。

執(zhí)行代碼,我們將得到如圖 3 所示的地圖布局。

圖 3. 帶有地圖框的布局

(2)添加地圖標(biāo)題

現(xiàn)在讓我們?yōu)榈貓D添加一個(gè)標(biāo)題,讓人們知道它是關(guān)于什么的。 要添加標(biāo)題,我們使用 QgsLayoutItemLabel 類。 接下來,我們使用 setText 方法設(shè)置文本,在第三行中,我們使用 setFont 確定字體類型、大小和粗細(xì)。 在圖 4 中可以看到標(biāo)題已添加到地圖布局中。

title=QgsLayoutItemLabel(layout)
title.setText("Vancouver City Street Map")
title.setFont(QFont("Arial",28,QFont.Bold))
title.adjustSizeToText()
layout.addLayoutItem(title)
title.attemptMove(QgsLayoutPoint(80,5,QgsUnitTypes.LayoutMillimeters))

(3)添加圖例

正如您在地圖中看到的,街道網(wǎng)絡(luò)使用不同的顏色來區(qū)分每條街道的用途。 在地圖布局中,可以在圖例項(xiàng)中找到數(shù)據(jù)的信息。 下面的代碼用于添加街道圖例。 數(shù)據(jù)層是使用 mapLayerByName 方法通過名稱從當(dāng)前項(xiàng)目的實(shí)例中選擇的。 在第二行和第三行中,所選圖層被添加到 QGIS 圖層樹中。

在圖 5 中可以看到街道圖例已添加到地圖布局中。

layer = QgsProject.instance().mapLayersByName('Street Types')
root = QgsLayerTree()
root.addLayer(layer[0])
legend = QgsLayoutItemLegend(layout)
legend.model().setRootGroup(root)
legend.setLinkedMap(map)
layout.addLayoutItem(legend)
legend.attemptMove(QgsLayoutPoint(8,140,QgsUnitTypes.LayoutMillimeters))

圖 5. 帶有圖例的布局

(4)添加比例尺

為了給用戶一個(gè)實(shí)際大小的透視圖,應(yīng)該在布局中添加一個(gè)比例尺。 要添加比例,使用 QgsLayoutItemScaleBar 類。 要確定比例尺的類型,請(qǐng)應(yīng)用 setStyle 方法。 有一些比例尺類型,例如:數(shù)字、單框、雙框、中間線刻度線、向下刻度線和向上刻度線。 第 3-4 行用于自定義刻度的字體。 比例尺的默認(rèn)顏色是黑色,這與底圖非常相似。 我在第 5 行中使用 setFillColor 方法將其更改為藍(lán)色。

scale=QgsLayoutItemScaleBar(layout)
scale.setStyle('Single Box')
scale.setFont(QFont("Arial",15))
scale.setFontColor(QColor("White"))
scale.setFillColor(QColor("Blue"))
scale.applyDefaultSize(QgsUnitTypes.DistanceMeters)
scale.setMapUnitsPerScaleBarUnit(1000.0)
scale.setNumberOfSegments(2)
scale.setUnitsPerSegment(1*1000.0)
scale.setUnitLabel("Km")
scale.setLinkedMap(map)
layout.addLayoutItem(scale)
scale.attemptMove(QgsLayoutPoint(5,70,QgsUnitTypes.LayoutMillimeters))

第 6 行中的 QgsDefaultSize 用于定義比例尺的單位。 當(dāng)我們想要定義一個(gè)不同于地圖畫布單元的單元時(shí)使用此方法。 例如,地圖畫布以度為單位,但我們希望以米為單位進(jìn)行縮放,因此我們使用 QgsUnitTypes.DistanceMeters。 要格式化比例尺,如比例尺單位、段數(shù)、每段單位(包括單位標(biāo)簽),請(qǐng)參見第 7-10 行。

(5)添加指南針

將添加到地圖布局中的下一個(gè)項(xiàng)目是地圖方向的指北針。 要添加指北針,可以使用 QgsLayoutItemPicture。 下面代碼中的第二行是設(shè)置圖片格式,為此我使用了SVG格式。 可以使用setPicturePath 方法來指定圖片的路徑。 在第五行中,圖片的大小被調(diào)整為 500x500 像素。

north=QgsLayoutItemPicture(layout)
north.setMode(QgsLayoutItemPicture.FormatSVG)
north.setPicturePath("/usr/share/qgis/svg/arrows/NorthArrow_04.svg")
north.attemptMove(QgsLayoutPoint(8, 25, QgsUnitTypes.LayoutMillimeters))
north.attemptResize(QgsLayoutSize(*[500,500], QgsUnitTypes.LayoutPixels))
layout.addLayoutItem(north)

(6)將布局導(dǎo)出為 PDF 或圖像

在結(jié)束本教程之前,讓我們將布局導(dǎo)出為 PDF 或圖像。 要導(dǎo)出為 PDF 或圖像,使用 QgsLayoutExporter 類。 必須首先指定相應(yīng)導(dǎo)出文件的路徑和名稱。 根據(jù)輸出格式,我們使用 exportToPdf 或 exportToImage 方法,如下面的代碼所示。

output_path="/QGIS/layout-export-pyqgis"
exporter=QgsLayoutExporter(layout)#EXPORT TO PDF
pdf_path=output_path+'/pdf_map.pdf'
exporter.exportToPdf(pdf_path,QgsLayoutExporter.PdfExportSettings())#EXPORT TO IMAGE
img_path=p+'/img_map.png'
exporter.exportToImage(img_path,QgsLayoutExporter.ImageExportSettings())

這就是本教程關(guān)于如何使用 Python 在 QGIS 中自動(dòng)化地圖布局的全部內(nèi)容。 我們已經(jīng)學(xué)習(xí)了如何添加最常見的地圖項(xiàng)目,如地圖框、標(biāo)題、比例尺、圖例、指北針

http://m.risenshineclean.com/news/60787.html

相關(guān)文章:

  • 做網(wǎng)站好的網(wǎng)站建設(shè)公司百度世界500強(qiáng)排名
  • 做微信活動(dòng)是做網(wǎng)站還是做小程序好百度地圖導(dǎo)航2022最新版
  • 淘寶做首頁熱點(diǎn)的什么網(wǎng)站微信營銷軟件哪個(gè)好用
  • 網(wǎng)站開發(fā) 網(wǎng)絡(luò)工程 哪個(gè)好設(shè)計(jì)網(wǎng)頁的軟件
  • 做公眾號(hào)還是網(wǎng)站百度一下你就知道了主頁
  • 網(wǎng)站建設(shè)維護(hù)php網(wǎng)上互聯(lián)網(wǎng)推廣
  • 貴司不斷優(yōu)化網(wǎng)站建設(shè)軟文世界平臺(tái)
  • 企業(yè)網(wǎng)站免費(fèi)建站程序百度官網(wǎng)app下載安裝
  • 廈門的企業(yè)網(wǎng)站國際新聞今日頭條
  • 英文商務(wù)網(wǎng)站制作百度互聯(lián)網(wǎng)營銷是什么
  • 網(wǎng)站備案信息核驗(yàn)單填寫成都網(wǎng)絡(luò)推廣優(yōu)化
  • 做百度移動(dòng)端網(wǎng)站優(yōu)web成品網(wǎng)站源碼免費(fèi)
  • 如何注冊公司網(wǎng)站免費(fèi)注冊百度競價(jià)排名服務(wù)
  • wordpress+更新+慢贛州seo
  • 什么軟件可以做app軟件seo是什么職業(yè)做什么的
  • 福田慶三baby案例照批量優(yōu)化網(wǎng)站軟件
  • 網(wǎng)站建設(shè)培訓(xùn)招生長尾詞挖掘
  • 安平誰做網(wǎng)站好百度快速收錄軟件
  • 專業(yè)APP客戶端做網(wǎng)站抖音推廣
  • 設(shè)計(jì)師網(wǎng)站prinestsem推廣競價(jià)托管公司
  • 網(wǎng)站建設(shè)與管理初級(jí)教學(xué)搜索引擎優(yōu)化排名品牌
  • 西寧網(wǎng)站seo價(jià)格電商平臺(tái)哪個(gè)最好最可靠
  • 深圳網(wǎng)站公司好軟件培訓(xùn)機(jī)構(gòu)排行榜
  • dw做的網(wǎng)站與瀏覽器不匹配西安seo報(bào)價(jià)
  • 做中醫(yī)藥網(wǎng)站有前景嗎視頻網(wǎng)站建設(shè)
  • iis7 網(wǎng)站用戶權(quán)限長沙網(wǎng)絡(luò)推廣公司
  • phpstorm做網(wǎng)站搜索引擎優(yōu)化seo名詞解釋
  • 哪家外貿(mào)網(wǎng)站做的好寧波網(wǎng)站推廣方案
  • wordpress輸入密碼訪問湖南有實(shí)力seo優(yōu)化
  • hostinger wordpress惠州seo關(guān)鍵詞排名