欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中shapefile庫讀取shapefile文件信息

 更新時間:2023年06月29日 10:03:35   作者:努力搬磚的giser  
本文主要介紹了python中shapefile庫讀取shapefile文件信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

shapefile是GIS中非常重要的一種數(shù)據(jù)類型,在ArcGIS中被稱為要素類(Feature Class),主要包括點(diǎn)(point)、線(polyline)和多邊形(polygon)。Python腳本是ArcGIS官方推薦的腳本語言,通過Python腳本能夠很方便的調(diào)用ArcGIS中的各種工具和函數(shù)批量完成所需操作。本文所介紹的這個庫(Python Shapefile Library)是一個Python庫,用于在Python腳本中對ArcGIS中的Shapefile文件(.shp,.shx,.dbf等格式)進(jìn)行讀寫操作。

開發(fā)準(zhǔn)備

安裝命令:pip install pyshp

使用導(dǎo)入:import shapefile

Shapefile文件的讀操作

通過創(chuàng)建Reader類的對象進(jìn)行shapefile文件的讀操作。

file = shapefile.Reader('shapefile name')

“幾何數(shù)據(jù)”通過Reader類的shapes( )和shape( )方法來讀取,二者的區(qū)別在于:shapes()方法不需要指定參數(shù),其返回值是一個列表,包含該文件中所有的"幾何數(shù)據(jù)"對象,而shape( )方法則需要通過指定參數(shù)返回所需要的"幾何數(shù)據(jù)"對象。

shape = file.shape(i)#讀取第i+1個要素,索引序列從0開始(參數(shù)是整數(shù)類型)
shapes = file.shapes()#讀取全部要素
# -*- coding: utf-8 -*-
import shapefile# 使用pyshp
file = shapefile.Reader("E://arcgisData//行政區(qū)劃數(shù)據(jù)//省界_region.shp")#讀取
#讀取元數(shù)據(jù)
print(str(file.shapeType))  # 輸出shp類型
print(file.encoding)# 輸出shp文件編碼
print(file.bbox)  # 輸出shp的文件范圍(外包矩形)
print(file.numRecords)  # 輸出shp文件的要素?cái)?shù)據(jù)
print(file.fields)# 輸出所有字段信息
# print(file.records())  # 輸出所有屬性表

補(bǔ)充 shp類型信息

shp屬性表字段信息

字段索引字段類型
C字符,文字
N數(shù)字,帶或不帶小數(shù)
F浮動(與“N”相同)
L邏輯,表示布爾值True / False值
D日期
M備忘錄,在GIS中沒有意義,而是xbase規(guī)范的一部分

展示單個要素
實(shí)現(xiàn)代碼:

import shapefile  # 使用pyshp
from matplotlib import pyplot as plt
file = shapefile.Reader("E://arcgisData//行政區(qū)劃數(shù)據(jù)//省界_region.shp")
border_shape = file
# 通過創(chuàng)建reader類的對象進(jìn)行shapefile文件的讀取
# border_points
border = border_shape.shapes()
# .shapes()讀取幾何數(shù)據(jù)信息,存放著該文件中所有對象的 幾何數(shù)據(jù)
# border是一個列表
border_points = border[0].points
print(border_points)# 返回第1個對象的所有點(diǎn)坐標(biāo)
# border_points = [(x1,y1),(x2,y2),(x3,y3),…]
x, y = zip(*border_points)
# x=(x1,x2,x3,…)
# y=(y1,y2,y3,…)
fig, ax = plt.subplots()  # 生成一張圖和一張子圖
# plt.plot(x,y,'k-') # x橫坐標(biāo) y縱坐標(biāo) ‘k-'線性為黑色
plt.plot(x, y, color='#6666ff', label='fungis')  # x橫坐標(biāo) y縱坐標(biāo) ‘k-'線性為黑色
ax.grid()  # 添加網(wǎng)格線
ax.axis('equal')
plt.show()

展示效果:

shapefile文件的寫操作

創(chuàng)建點(diǎn)狀要素類

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//站點(diǎn)_2")#新建數(shù)據(jù)存放位置
#創(chuàng)建兩個字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'為字段名稱,C代表數(shù)據(jù)類型為字符串,長度為40
file.point(1,1)
file.record('First','Point')
file.point(300,10)
file.record('Second','Point')
file.point(400,30)
file.record('Third','Point')
file.point(200,200)
file.record('Fourth','Point')
#寫入數(shù)據(jù)
file.close()

創(chuàng)建線狀要素類

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//polyline")#新建數(shù)據(jù)存放位置
#創(chuàng)建兩個字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'為字段名稱,C代表數(shù)據(jù)類型為字符串,長度為40
file.line([[[1,5],[5,5],[5,1],[3,3],[1,1]]])
file.record('First','polyline')
file.line([[[1,500],[300,30],[1,16]]])
file.record('Second','polyline')
#寫入數(shù)據(jù)
file.close()

創(chuàng)建面狀要素類

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//polygon")#新建數(shù)據(jù)存放位置
#創(chuàng)建兩個字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'為字段名稱,C代表數(shù)據(jù)類型為字符串,長度為40
file.poly([[[1,5],[5,5],[5,1],[3,3],[1,1]]])
file.record('First','polygon')
file.poly([[[1,500],[300,30],[1,16],[1,500]]])
file.record('Second','polygon')
#寫入數(shù)據(jù)
file.close()

到此這篇關(guān)于python中shapefile庫讀取shapefile文件信息的文章就介紹到這了,更多相關(guān)python讀取shapefile文件信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python處理變量交換與字符串及判斷的小妙招

    python處理變量交換與字符串及判斷的小妙招

    本文記錄一些 Python 日常編程中的小妙招,并使用 IPython 進(jìn)行交互測試,讓我們更好的了解和學(xué)習(xí) Python 的一些特性,對大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-09-09
  • python使用PyGame繪制圖像并保存為圖片文件的方法

    python使用PyGame繪制圖像并保存為圖片文件的方法

    這篇文章主要介紹了python使用PyGame繪制圖像并保存為圖片文件的方法,涉及Python使用PyGame操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Python設(shè)計(jì)模式中的狀態(tài)模式你了解嗎

    Python設(shè)計(jì)模式中的狀態(tài)模式你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python設(shè)計(jì)模式中的狀態(tài)模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 用python寫的一個wordpress的采集程序

    用python寫的一個wordpress的采集程序

    在學(xué)習(xí)python的過程中,經(jīng)過不斷的嘗試及努力,終于完成了第一個像樣的python程序,雖然還有很多需要優(yōu)化的地方,但是目前基本上實(shí)現(xiàn)了我所要求的功能,需要的朋友可以參考下
    2016-02-02
  • Python全棧之學(xué)習(xí)CSS(1)

    Python全棧之學(xué)習(xí)CSS(1)

    這篇文章主要為大家介紹了Python全棧之CSS,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 理解Python中的絕對路徑和相對路徑

    理解Python中的絕對路徑和相對路徑

    本篇文章主要介紹了理解Python中的絕對路勁和相對路徑 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • django中只使用ModleForm的表單驗(yàn)證

    django中只使用ModleForm的表單驗(yàn)證

    這篇文章主要介紹了django中只使用ModleForm的表單驗(yàn)證的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解

    Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解

    今天小編就為大家分享一篇關(guān)于Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Python遍歷numpy數(shù)組的實(shí)例

    Python遍歷numpy數(shù)組的實(shí)例

    下面小編就為大家分享一篇Python遍歷numpy數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python基礎(chǔ)教程之輸入輸出和運(yùn)算符

    Python基礎(chǔ)教程之輸入輸出和運(yùn)算符

    這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之輸入輸出和運(yùn)算符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論