999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python腳本在shape文件中的運(yùn)用

2019-01-23 03:31:04楊勤信楊德宏
軟件 2018年12期
關(guān)鍵詞:區(qū)域信息

楊勤信,楊德宏

?

Python腳本在shape文件中的運(yùn)用

楊勤信,楊德宏

(昆明理工大學(xué),云南 昆明 650093)

對(duì)于shap文件,包含很多的地理信息,但是在實(shí)際工作學(xué)習(xí)中,并非所有信息都能被利用。利用python腳本語(yǔ)言,可以單獨(dú)獲取所需要的特定shapefile文件屬性信息,點(diǎn)位坐標(biāo)信息,并且轉(zhuǎn)換為必要投影系統(tǒng)下的坐標(biāo)。本文借助python腳本處理shapefile文件,利用某地區(qū)人口密度分布圖,生成等值區(qū)域圖,實(shí)現(xiàn)python與shapefile的實(shí)踐結(jié)合,為更多地理空間信息開(kāi)發(fā)提供參考。

Shapefile文件;python腳本;等值區(qū)域圖;函數(shù)庫(kù)

0 引言

目前使用最普遍的地理空間格式是Esri的Shapefile文件,1998年該文件格式被正式標(biāo)準(zhǔn)化,作為一種開(kāi)放規(guī)范發(fā)布。Esri特意為ArcView開(kāi)發(fā)這種文件格式。是一種低端GIS產(chǎn)品,但是可以實(shí)現(xiàn)其高端產(chǎn)品ArcInfo的一些基本操作。Shapefile由多個(gè)文件格式,少則3種,多則可達(dá)15種不同文件。例如:.shp、.shx和.dbf等有效文件。在一些Esri的軟件中,這些數(shù)據(jù)作為一個(gè)整體,Shapefile文件對(duì)于GIS數(shù)據(jù)交換和GIS分析而言是一種基礎(chǔ)數(shù)據(jù)格式[1-3]。

Python自誕生以來(lái),人們使用較少。自從人工智能的興起,使得python迅速擠進(jìn)計(jì)算機(jī)語(yǔ)言前五,并且排名仍在以較大幅度上升。僅次于Java、c++、 c等幾種熱門(mén)語(yǔ)言。Python最大的特點(diǎn)就是免費(fèi)開(kāi)源跨平臺(tái),易上手且功能強(qiáng)大。其附帶的核心語(yǔ)言包及眾多模塊代碼,使得開(kāi)發(fā)更加容易。對(duì)于Shapefile文件,主要使用python的PyShp庫(kù)(也可以使用OGR庫(kù)的python綁定,但此處為了盡量使用python代碼的風(fēng)格,選擇安裝PyShp庫(kù))[4-5]。

1 Shapefile文件編輯

對(duì)于Shapefile文件的編輯和其他相關(guān)操作,只需要關(guān)注.shp和.dbf文件即可,二者是Shapefile文件的核心文件。.shp文件包含幾何圖形,.dbf文件包含幾何圖形所必要的屬性信息。Shapefile文件中,每一個(gè)圖形信息都含有對(duì)應(yīng)的屬性列表。這些屬性信息是沒(méi)有特定編號(hào)或者標(biāo)記的,如果從shapefile文件修改相關(guān)信息時(shí),需保證與其相關(guān)的文件也做了相應(yīng)修改。

1.1 shapefile文件訪問(wèn)及屬性提取

在訪問(wèn)shapefile文件時(shí),利用PyShp庫(kù),導(dǎo)入PyShp庫(kù):import shapefile

Python的PyShp庫(kù)利用方法Reader(”Filed name”)打開(kāi)shapefile文件。Filed name可以不使用擴(kuò)展名,因?yàn)樘幚淼臄?shù)據(jù)至少包括.shp和.dbf等文件,否則會(huì)導(dǎo)致打開(kāi)文件失敗。當(dāng)成功創(chuàng)建一個(gè)讀取器對(duì)象后,通過(guò).bbox方法就可以獲取文件邊框信息,.shapeType獲取文件類型(1代表點(diǎn),3代表線,5代表多邊形等),.numRecords獲取記錄總數(shù)。dbf文件是一種簡(jiǎn)單的數(shù)據(jù)庫(kù),類似于電子表格,可以通過(guò)讀取器對(duì)象(.fields)的字段屬性查看該信息。運(yùn)行結(jié)果如圖1。

圖1 屬性表

該shape文件在ArcGIS中圖形如圖2。

圖2 Shape文件

由圖2知,該shape文件是一個(gè)點(diǎn)shapefile文件,python腳本解析出共有298個(gè)點(diǎn)。

1.2 shapefile文件幾何圖形處理

點(diǎn)shapefile文件中,每一條記錄都包含一個(gè)點(diǎn),讀取每一個(gè)點(diǎn)的經(jīng)緯度(緯度在經(jīng)度之前)。采用.shape(num).points可獲取到選定點(diǎn)的坐標(biāo)信息,這里提取第200個(gè)點(diǎn)的坐標(biāo)信息如圖3。

圖3 點(diǎn)坐標(biāo)信息

此處的坐標(biāo)信息是經(jīng)緯度,可以使用python的utm庫(kù)中的.from_latlon()方法將其轉(zhuǎn)換為utm投影下的坐標(biāo)值,并獲得utm水平方向的編號(hào)和豎直方向的字母編號(hào),如圖4。

圖4 utm坐標(biāo)信息

2 shapefile文件利用python繪制某地區(qū)人口相對(duì)密度分布等值區(qū)域圖

用來(lái)顯示密度的地圖稱為等值區(qū)域圖,用陰影的深淺度來(lái)表達(dá)密度,使得閱讀更為容易,可以作為分析某區(qū)域內(nèi)點(diǎn)密度的直接參考。本文用某區(qū)域人口密度圖來(lái)解析出密度等值區(qū)域圖。

因?yàn)樘幚韴D像,所以首先要利用python自帶圖像處理庫(kù)-PIL(Python Imaging Library),PIL為了保證速度,采用的是C語(yǔ)言編寫(xiě),專門(mén)針對(duì)python做了一些優(yōu)化,正式被python調(diào)用。本文程序均由python3版本編寫(xiě),所以使用PIL庫(kù)的升級(jí)版本Pillow庫(kù)。Pillow其他方法使用此處不做贅述。本案例由shapefile文件根據(jù)每單位面積的人口得出密度比率,然后由該比率配置相應(yīng)的顏色,密度越大則顏色越深,密度越小,顏色越淺。整體開(kāi)發(fā)思路如圖5。

圖5 示意圖

在處理shapefile文件之前,需要將地理空間坐標(biāo)系轉(zhuǎn)換到屏幕坐標(biāo)[6-7],此處定義一個(gè)函數(shù)srn():

def srn(bbox, w, h, x, y):

mix, miy, xx, xy = bbox

xd = xx - mix

yd = xy - miy

xr = w/xd

yr = h/yd

px = int(w - ((xx - x) * xr))

py = int((xy - y) * yr)

return (px, py)

打開(kāi)shapefile文件并且初始化一個(gè)圖像對(duì)象,利用PIL庫(kù)的Draw方法填充不同的多邊形:

Ip = shapefile.Reader("F:Projects論文實(shí)例population")

ight =500

idth=500

img = Image.new("RGB", (idth, ight), (255, 255, 255))

draw = ImageDraw.Draw(img)

繪制區(qū)域陰影和多邊形:

pi = None

ai = None

for i, f in enumerate(Ip.fields):

if f[0] == "POPULAT11":

pi = i-1

elif f[0] == "AREASQKM":

ai = i-1

for sr in Ip.shapeRecords():

density = sr.record[pi]/sr.record[ai]

weight = min(math.sqrt(density/80.0), 1.0) * 50

R = int(200 - weight)

G = int(215 - weight)

B = int(235 - weight)

pixels = []

for x, y in sr.shape.points:

(px, py) = srn(Ip.bbox, idth, ight, x, y)

pixels.append((px, py))

draw.polygon(pixels, outline=(255, 255, 255), fill=(R, G, B))

將繪制完成的等值區(qū)域圖保存為.png文件:img.save("Exportpopulation.png")。下圖分別是shape-file文件和.png文件在ArcGIS軟件中的效果圖。

通過(guò)對(duì)比,很明顯發(fā)現(xiàn),圖7的讀取更加容易,范圍界限也更加明顯,這對(duì)于分析人口密度分布十分有用。

3 結(jié)束語(yǔ)

Shapefile文件是測(cè)繪工作者工作中經(jīng)常處理的文件類型,而python腳本語(yǔ)言也作為ArcGIS軟件的腳本語(yǔ)言十分方便快捷[8-9]。隨著人工智能和大數(shù)據(jù)時(shí)代的炙熱化發(fā)展,python憑借其簡(jiǎn)單又強(qiáng)大的特性,必將在編程語(yǔ)言中舉足輕重。應(yīng)用python開(kāi)發(fā)一些測(cè)繪軟件和處理一些數(shù)據(jù)文件,為實(shí)際工作提供良好的工作平臺(tái)。

圖6 人口密度圖shape文件

圖7 人口密度等值區(qū)域圖

[1] 田慶, 陳美陽(yáng), 田慧云. ArcGIS地理信息系統(tǒng)詳解(10. 1版)[M]. 北京: 希望電子出版社, 2014.

[2] PaulA. Zandbergen. 面向hrcGIS的Python腳本編程[M]. 北京: 人民郵電出版社, 2014.

[3] 邵保華, 田學(xué)志. 談Python在ARCGIS地理處理中的應(yīng)用[J]. 林業(yè)勘查設(shè)計(jì), 2012(2): 70-72

[4] Wesley J. Chun. Python核心編程[M]. 第2版. . 北京: 人民郵電出版社, 2008

[5] Magnus Lie Hetland. Python基礎(chǔ)教程[M]. 第2版. 北京: 人民郵電出版社, 2010.

[6] 郭仁忠. 空間分析[M]. 北京: 高等教育出版社, 2001.

[7] 劉南, 劉仁義. 地理信息系統(tǒng)[M]. 北京: 高等教育出版社. 2002.

[8] Mark Pilgrim. Diive Into Python 3[M]. 2nd ed. Berkeley: Apress, 2009.

[9] Alex Martelli, Anna Ravenscorft, David Ascher. Python Cookbook [M]. 北京: 人民郵電出版社, 2010.

Application of Python Script in Shape File

YANG Qin-xin, YANG De-hong

(Kunming University of Science and Technology, 650093)

Shap files contain a lot of geographic information, but not all information can be used in practical work and learning. Using Python scripting language, we can obtain the required attribute information of the specific ShapeFile, point coordinate information, and transform it into the coordinates of the necessary projection system. In this paper, Python script is used to process ShapeFile, and the population density distribution map of a region is used to generate an equivalent area map. The practice of Python and ShapeFile is combined to provide reference for the development of more geospatial information.

Shapefile; Python script; Equivalent area graph; Function library

TP312

A

10.3969/j.issn.1003-6970.2018.12.036

楊勤信(1993-),男,大學(xué)本科,主要研究方向?yàn)榇蟮販y(cè)量;楊德宏(1965-),男,研究生,主要研究方向?yàn)闇y(cè)量數(shù)據(jù)處理與質(zhì)量控制研究。

楊勤信,楊德宏. Python腳本在shape文件中的運(yùn)用[J]. 軟件,2018,39(12):159-161

猜你喜歡
區(qū)域信息
永久基本農(nóng)田集中區(qū)域“禁廢”
分割區(qū)域
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關(guān)于四色猜想
分區(qū)域
基于嚴(yán)重區(qū)域的多PCC點(diǎn)暫降頻次估計(jì)
展會(huì)信息
區(qū)域
民生周刊(2012年10期)2012-10-14 09:06:46
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 自拍欧美亚洲| 色妞www精品视频一级下载| 亚洲天堂视频在线观看免费| 中文无码精品A∨在线观看不卡| 亚洲精品成人片在线观看| 国产成人免费视频精品一区二区| 全裸无码专区| 亚洲综合在线网| 在线99视频| 国产欧美日韩精品综合在线| 激情無極限的亚洲一区免费| 无码AV高清毛片中国一级毛片| 一区二区三区国产| 成人免费午间影院在线观看| 精品伊人久久久香线蕉| 免费一极毛片| 四虎亚洲国产成人久久精品| 亚洲色婷婷一区二区| 真实国产乱子伦高清| 97国产成人无码精品久久久| 激情五月婷婷综合网| 欧美日韩免费在线视频| 99热这里只有精品免费国产| 老汉色老汉首页a亚洲| 99re在线免费视频| 欧美激情伊人| 国产欧美高清| 免费在线观看av| 她的性爱视频| 国产欧美日韩综合在线第一| 日韩欧美国产三级| 无遮挡国产高潮视频免费观看| 国产主播喷水| 婷婷开心中文字幕| 四虎综合网| 一区二区影院| 久久综合伊人77777| 国产女人在线视频| 国产亚洲精品自在线| 久久亚洲天堂| 国内毛片视频| 国产在线麻豆波多野结衣| 一区二区偷拍美女撒尿视频| 熟妇无码人妻| 精品日韩亚洲欧美高清a| 亚洲国产日韩欧美在线| 亚洲中文字幕手机在线第一页| 51国产偷自视频区视频手机观看 | 国产精品无码AV中文| 亚洲码一区二区三区| 国产Av无码精品色午夜| 国产午夜人做人免费视频| 国产中文一区a级毛片视频| 色欲国产一区二区日韩欧美| 欧美日韩激情| 在线不卡免费视频| 色婷婷狠狠干| 一本大道视频精品人妻| 亚洲美女久久| 在线观看国产精美视频| 国产91蝌蚪窝| 亚洲男人在线| 黄色网页在线播放| 精品无码一区二区三区电影| 激情综合婷婷丁香五月尤物| 免费在线a视频| 国产H片无码不卡在线视频| 日本欧美成人免费| 欧美亚洲中文精品三区| 精品国产福利在线| 亚洲a级在线观看| 全部免费毛片免费播放| 亚洲性日韩精品一区二区| 亚洲日韩AV无码精品| 亚洲第一在线播放| 欧美性色综合网| 久久a毛片| 亚洲精品波多野结衣| 国产精品亚洲日韩AⅤ在线观看| 一本一道波多野结衣一区二区| 99久久国产精品无码| 亚洲二区视频|