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

Python腳本在shape文件中的運用

2019-01-23 03:31:04楊勤信楊德宏
軟件 2018年12期
關鍵詞:區域信息

楊勤信,楊德宏

?

Python腳本在shape文件中的運用

楊勤信,楊德宏

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

對于shap文件,包含很多的地理信息,但是在實際工作學習中,并非所有信息都能被利用。利用python腳本語言,可以單獨獲取所需要的特定shapefile文件屬性信息,點位坐標信息,并且轉換為必要投影系統下的坐標。本文借助python腳本處理shapefile文件,利用某地區人口密度分布圖,生成等值區域圖,實現python與shapefile的實踐結合,為更多地理空間信息開發提供參考。

Shapefile文件;python腳本;等值區域圖;函數庫

0 引言

目前使用最普遍的地理空間格式是Esri的Shapefile文件,1998年該文件格式被正式標準化,作為一種開放規范發布。Esri特意為ArcView開發這種文件格式。是一種低端GIS產品,但是可以實現其高端產品ArcInfo的一些基本操作。Shapefile由多個文件格式,少則3種,多則可達15種不同文件。例如:.shp、.shx和.dbf等有效文件。在一些Esri的軟件中,這些數據作為一個整體,Shapefile文件對于GIS數據交換和GIS分析而言是一種基礎數據格式[1-3]。

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

1 Shapefile文件編輯

對于Shapefile文件的編輯和其他相關操作,只需要關注.shp和.dbf文件即可,二者是Shapefile文件的核心文件。.shp文件包含幾何圖形,.dbf文件包含幾何圖形所必要的屬性信息。Shapefile文件中,每一個圖形信息都含有對應的屬性列表。這些屬性信息是沒有特定編號或者標記的,如果從shapefile文件修改相關信息時,需保證與其相關的文件也做了相應修改。

1.1 shapefile文件訪問及屬性提取

在訪問shapefile文件時,利用PyShp庫,導入PyShp庫:import shapefile

Python的PyShp庫利用方法Reader(”Filed name”)打開shapefile文件。Filed name可以不使用擴展名,因為處理的數據至少包括.shp和.dbf等文件,否則會導致打開文件失敗。當成功創建一個讀取器對象后,通過.bbox方法就可以獲取文件邊框信息,.shapeType獲取文件類型(1代表點,3代表線,5代表多邊形等),.numRecords獲取記錄總數。dbf文件是一種簡單的數據庫,類似于電子表格,可以通過讀取器對象(.fields)的字段屬性查看該信息。運行結果如圖1。

圖1 屬性表

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

圖2 Shape文件

由圖2知,該shape文件是一個點shapefile文件,python腳本解析出共有298個點。

1.2 shapefile文件幾何圖形處理

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

圖3 點坐標信息

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

圖4 utm坐標信息

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

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

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

圖5 示意圖

在處理shapefile文件之前,需要將地理空間坐標系轉換到屏幕坐標[6-7],此處定義一個函數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)

打開shapefile文件并且初始化一個圖像對象,利用PIL庫的Draw方法填充不同的多邊形:

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

ight =500

idth=500

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

draw = ImageDraw.Draw(img)

繪制區域陰影和多邊形:

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))

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

通過對比,很明顯發現,圖7的讀取更加容易,范圍界限也更加明顯,這對于分析人口密度分布十分有用。

3 結束語

Shapefile文件是測繪工作者工作中經常處理的文件類型,而python腳本語言也作為ArcGIS軟件的腳本語言十分方便快捷[8-9]。隨著人工智能和大數據時代的炙熱化發展,python憑借其簡單又強大的特性,必將在編程語言中舉足輕重。應用python開發一些測繪軟件和處理一些數據文件,為實際工作提供良好的工作平臺。

圖6 人口密度圖shape文件

圖7 人口密度等值區域圖

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

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

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

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

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

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

[7] 劉南, 劉仁義. 地理信息系統[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-),男,大學本科,主要研究方向為大地測量;楊德宏(1965-),男,研究生,主要研究方向為測量數據處理與質量控制研究。

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

猜你喜歡
區域信息
永久基本農田集中區域“禁廢”
今日農業(2021年9期)2021-11-26 07:41:24
分割區域
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關于四色猜想
分區域
基于嚴重區域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
區域
民生周刊(2012年10期)2012-10-14 09:06:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 91在线播放免费不卡无毒| 91精品亚洲| 中文字幕免费视频| 亚洲第一色网站| 国产午夜精品鲁丝片| 99精品视频在线观看免费播放| 中文字幕免费播放| 亚洲福利一区二区三区| 午夜精品一区二区蜜桃| 国产成人av一区二区三区| 久久综合亚洲鲁鲁九月天| 狠狠综合久久| 午夜精品一区二区蜜桃| 欧美第一页在线| 国产午夜福利在线小视频| 成人免费午夜视频| 国产丰满成熟女性性满足视频| 国产一级毛片网站| 精品人妻一区二区三区蜜桃AⅤ| jizz亚洲高清在线观看| 无套av在线| 国产在线啪| 欧美日韩国产精品va| 再看日本中文字幕在线观看| 婷婷综合亚洲| 国产乱子伦无码精品小说| 国产免费网址| 视频在线观看一区二区| 国产亚洲精品无码专| 久久综合干| 亚洲最大看欧美片网站地址| 国产靠逼视频| 国产成人精品视频一区视频二区| 999国产精品| 欧美日韩中文国产| 日本一区二区三区精品国产| 成人免费一区二区三区| 国产91九色在线播放| 成人免费一区二区三区| 国产免费人成视频网| 国产高清免费午夜在线视频| 欧美精品在线免费| 亚洲三级a| 国产在线视频导航| 日韩高清中文字幕| 在线人成精品免费视频| 2021最新国产精品网站| 美女一级毛片无遮挡内谢| 免费人欧美成又黄又爽的视频| 亚洲人成影视在线观看| 欧美a在线| 亚洲天堂日韩在线| 青青网在线国产| 极品尤物av美乳在线观看| 国产h视频免费观看| 国产情精品嫩草影院88av| 亚洲日韩第九十九页| 超清无码一区二区三区| 久久性妇女精品免费| 夜夜操狠狠操| 欧美精品高清| 综合色天天| 无遮挡国产高潮视频免费观看| 九色视频在线免费观看| 人妻精品久久无码区| 欧美激情成人网| 日韩小视频在线播放| 九九免费观看全部免费视频| 超碰免费91| 久久久久国色AV免费观看性色| 国产靠逼视频| 久久国产av麻豆| 国产成人精品高清不卡在线| 青青青国产在线播放| 国产69精品久久| 欧美日韩一区二区在线播放| 久久精品亚洲热综合一区二区| 亚洲天堂区| 在线视频亚洲色图| 国产国模一区二区三区四区| 日韩一级毛一欧美一国产| 自拍中文字幕|