亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > python geopandas讀取、創(chuàng)建shapefile文件的方法

python geopandas讀取、創(chuàng)建shapefile文件的方法

熱門標簽:上海正規(guī)的外呼系統(tǒng)最新報價 煙臺電話外呼營銷系統(tǒng) 長春極信防封電銷卡批發(fā) 銀川電話機器人電話 外賣地址有什么地圖標注 電銷機器人錄音要學習什么 如何地圖標注公司 預覽式外呼系統(tǒng) 企業(yè)彩鈴地圖標注

shapefile是GIS中非常重要的一種數(shù)據(jù)類型,在ArcGIS中被稱為要素類(Feature Class),主要包括點(point)、線(polyline)和多邊形(polygon)。作為一種十分常見的矢量文件格式,geopandasshapefile提供了很好的讀取和寫出支持,其DataFrame結(jié)構(gòu)相當于GIS數(shù)據(jù)中的一張屬性表,使得可以直接操作矢量數(shù)據(jù)屬性表,使得在python中操作地理數(shù)據(jù)更方便。本文給大家介紹下用Python腳本中對Shapefile文件(.shp,.shx,.dbf等格式)進行讀寫操作。

開發(fā)準備

由于geopandas有好幾個依賴庫,推薦大家使用 Miniconda或是 Anaconda來安裝geopandas。

安裝命令:

conda install -c conda-forge geopandas   

國內(nèi)鏡像:

conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge geopandas                   

使用導入:import geopandas

我這里用的是geopandas 0.7的版本,版本間差異是不太大,最新0.8版本新增了一些查詢、入庫方面的特性。

shapefile文件信息的讀取

相比pyshp庫,geopandas庫的數(shù)據(jù)讀取、展示、分析、拓展的效果要更好。它可以讀取zip中的shapefile,還可以讀取GeoJson、ArcGIS中地理數(shù)據(jù)庫gdb,以及QGISGeoPackage 存放的矢量數(shù)據(jù)。

import geopandas as gpd
from matplotlib import pyplot as plt

data = gpd.read_file(r'E:\gisData\行政區(qū)劃數(shù)據(jù)2019\省.shp')#讀取磁盤上的矢量文件
#data = gpd.read_file('shapefile/china.gdb', layer='province')#讀取gdb中的矢量數(shù)據(jù)
print(data.crs)  # 查看數(shù)據(jù)對應的投影信息
print(data.head())  # 查看前5行數(shù)據(jù)
data.plot()
plt.show()#簡單展示

顯示效果:

shapefile文件的創(chuàng)建

要素類的創(chuàng)建效率很高,既能創(chuàng)建要素實體,也能寫入屬性信息和定義投影。下面先簡單介紹下三種要素類的創(chuàng)建方法。

點狀要素類的創(chuàng)建

核心代碼:

# 對應shapely.geometry中的Point,用于表示單個點,下面我們創(chuàng)建一個由若干Point對象組成
cq = geopandas.GeoSeries([geometry.Point(110, 60),
                          geometry.Point(110.5, 50.4),
                          geometry.Point(120, 55),
                          geometry.Point(107.8, 54.6),
                          geometry.Point(114.6, 50)],
                         crs='EPSG:4326',  # 指定坐標系為WGS 1984
                         index=['一號', '二號', '三號', '四號', '五號'],  # 相關(guān)的索引
                         )
# 導出數(shù)據(jù)為shapefile文件
cq.to_file('./output/{}.shp'.format(os.path.basename(__file__).replace('.py', '')),
           driver='ESRI Shapefile',
           encoding='utf-8')

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

核心代碼:

# 這里shapely.geometry.LineString([(x1, y1), (x2, y2), ...])用于創(chuàng)建多點按順序連接而成的線段
cq = geopandas.GeoSeries([geometry.LineString([(0, 0), (1, 1), (1, 0)]),
                          geometry.LineString([(0.5, 2), (0, 1), (-1, 0)])],
                         crs='EPSG:4326',
                         index=['一號線', 'b'])
cq.to_file('./output/{}.shp'.format(os.path.basename(__file__).replace('.py', '')),
           driver='ESRI Shapefile',
           encoding='utf-8')

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

核心代碼:

# 對應shapely.geometry中的Polygon,用于表示面,下面我們創(chuàng)建一個由若干Polygon對象組成
cq = geopandas.GeoSeries([geometry.Polygon([(14, 14), (13, 18), (20, 11), (18, 10)]),
                          geometry.Polygon([(0, 0), (10, 0), (10, 10), (0, 10)],
                                           [((1, 3), (5, 3), (5, 1), (1, 1)),
                                            ((9, 9), (9, 8), (8, 8), (8, 9))]),
                          geometry.Polygon([(11, 2), (11, 10), (12, 10), (12, 2)])
                          ],
                         index=['簡單面', '復雜面', 'c區(qū)'],  # 構(gòu)建一個索引字段
                         crs='EPSG:4326',  # 坐標系是:WGS 1984
                         )
cq.to_file('./output/{}.shp'.format(os.path.basename(__file__).replace('.py', '')),
           driver='ESRI Shapefile',
           encoding='utf-8')

拓展應用實例

展高程點

高程點文件存儲格式與CASS中讀取的DAT格式一致,示例:【1,ZDH ,450000.000,4100000,20002,DYG,450000.000,4100000,2000 】其中,“1”代表的是“點號”,“ZDH”代表的是“代碼”,之后的分別是“東坐標、北坐標、高程值”即“Y、X、H ”或者是“X、Y、H ”

AutoCAD中展點效果

geopandas中展點效果

實現(xiàn)代碼

# -*- coding: utf-8 -*-

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter

# 讀取數(shù)據(jù)
file_path = './data-use/高程數(shù)據(jù).csv'
rankings_colname = ['name', 'mark', 'longitude', 'latitude', 'height'];
df = pd.read_csv(file_path, header=None, names=rankings_colname)
# print(df.head(5))#輸出前五行數(shù)據(jù)查看
xy = [Point(xy) for xy in zip(df['longitude'], df['latitude'])]
pts = gpd.GeoSeries(xy)  # 創(chuàng)建點要素數(shù)據(jù)集
#保存為SHP文件
pts.to_file('./output/展高程點.shp', driver='ESRI Shapefile', encoding='utf-8')
"""fig是用來設置圖像大小參數(shù),ax是行列有多少個點"""
fig, ax = plt.subplots(figsize=(8, 6))  # 返回一個包含figure和axes對象的元組
ax = pts.plot(ax=ax,
              facecolor='white',
              edgecolor='black',
              marker='X',
              linewidth=0.5,  # 內(nèi)外符號比例系數(shù)
              markersize=12,
              label='高程點')
# 地圖標注
new_texts = [plt.text(x_ + 1, y_ + 1, text, fontsize=8) for x_, y_, text in
             zip(df['longitude'], df['latitude'], df['name'])]


# 設置坐標軸
def formatnum(x, pos):
    # return '$%.1f$x$10^{4}$' % (x / 10000)#科學計數(shù)法顯示
    return int(x)  # 取整顯示


formatter = FuncFormatter(formatnum)
ax.yaxis.set_major_formatter(formatter)

# 美觀起見隱藏頂部與右側(cè)邊框線
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.grid(True, alpha=0.4)  # 顯示網(wǎng)格,透明度為50%
ax.legend(title="圖例", loc='lower right', ncol=1, shadow=True) # 添加圖例
plt.title('展高程點', fontdict={'weight': 'normal', 'size': 20}) # 設置圖名改變圖標題字體
# 保存圖片
plt.savefig('images/展高程點.png', dpi=300, bbox_inches='tight', pad_inches=0)
plt.show()

點集轉(zhuǎn)面

將一系列點的集合轉(zhuǎn)為面狀要素類,下面以甘肅省的地震帶為例(字段對應:名稱,面索引,點索引,經(jīng)度,緯度)。

數(shù)據(jù)預覽

效果預覽

實現(xiàn)代碼

import geopandas as gpd
import pandas as pd
from shapely.geometry import Polygon
from matplotlib import pyplot as plt

raw = pd.read_excel('./data-use/甘肅省地震帶.xls')  # 原始數(shù)據(jù)
# 轉(zhuǎn)換為面要素
output = raw.groupby('id') \

    .apply(lambda df: Polygon([(x, y) for x, y in zip(df['longitude'], df['latitude'])])) \

    .to_frame(name='geometry')

# 轉(zhuǎn)換為GeoDataFrame
output = gpd.GeoDataFrame(output, crs='EPSG:4326')
output.plot()
# 地圖標注
new_longitude = raw.groupby('name', as_index=False,)['longitude'].mean()
new_latitude = raw.groupby('name', as_index=False)['latitude'].mean()
new_df = pd.merge(pd.DataFrame(new_longitude),pd.DataFrame(new_latitude))
new_texts = [plt.text(x_ , y_ , text, fontsize=8) for x_, y_, text in
             zip(new_df['longitude'], new_df['latitude'], new_df['name'])]
# 導出shapefile
output.to_file('output/地震帶.shp')  
plt.show()

創(chuàng)建緩沖區(qū)、多環(huán)緩沖區(qū)

實現(xiàn)代碼:

import os
import shapely
import geopandas as gpd
import matplotlib.pyplot as plt

polygon = shapely.geometry.Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
# 分別繪制多邊形、多邊形正向緩沖區(qū),坐標系是WGS1984,單位是度
cq = gpd.GeoSeries([polygon,
                    polygon.buffer(distance=1),
                    polygon.buffer(distance=3)],
                   crs='EPSG:4326')
# 導出數(shù)據(jù)為shapefile文件
cq.to_file('./output/{}.shp'.format(os.path.basename(__file__).replace('.py', '')),
           driver='ESRI Shapefile',
           encoding='utf-8')
ax = cq.plot(alpha=0.2)
ax.axis('off')  # 取消坐標軸的顯示
plt.show()

寫在最后

附相關(guān)完整代碼的下載,還有更多有趣的內(nèi)容,感興趣的朋友們可以自行實踐。喜歡的朋友們可以點個關(guān)注,后續(xù)將持續(xù)更新,精彩無限^ - ^

鏈接: https://pan.baidu.com/s/1g7G8sQ17-9XIhojyQ1M7Ww

提取碼: 59vz

最后給大家強烈安利一個geopandas學習博客: https://www.cnblogs.com/feffery/tag/geopandas/

以上就是python geopandas讀取、創(chuàng)建shapefile文件的方法的詳細內(nèi)容,更多關(guān)于python讀取shapefile文件的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python Pandas分組聚合的實現(xiàn)方法
  • python中pandas對多列進行分組統(tǒng)計的實現(xiàn)
  • 詳解python pandas 分組統(tǒng)計的方法
  • Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例
  • Python學習筆記之pandas索引列、過濾、分組、求和功能示例
  • Python Pandas的簡單使用教程
  • Python pandas入門系列之眾數(shù)和分位數(shù)
  • Python pandas求方差和標準差的方法實例
  • 使用Python pandas讀取CSV文件應該注意什么?
  • 利用python Pandas實現(xiàn)批量拆分Excel與合并Excel
  • python pandas分組聚合詳細

標簽:佳木斯 西寧 潮州 珠海 湖北 盤錦 上饒 宜昌

巨人網(wǎng)絡通訊聲明:本文標題《python geopandas讀取、創(chuàng)建shapefile文件的方法》,本文關(guān)鍵詞  python,geopandas,讀取,創(chuàng)建,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python geopandas讀取、創(chuàng)建shapefile文件的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于python geopandas讀取、創(chuàng)建shapefile文件的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚欧视频在线| 欧美另类videosbestsex| 青青久热| 999久久久免费精品国产牛牛| 欧美激情一区二区三区视频| 久草免费资源| 国产一区二区精品尤物| 台湾美女古装一级毛片| 成人高清视频在线观看| 亚洲精品影院| 一本伊大人香蕉高清在线观看| 日韩中文字幕在线播放| 台湾美女古装一级毛片| 高清一级片| 中文字幕一区二区三区 精品| 香蕉视频久久| 国产91丝袜在线播放0| 精品视频一区二区三区免费| 99久久精品国产国产毛片| 精品国产一区二区三区久久久蜜臀| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久99中文字幕| 高清一级片| 高清一级做a爱过程不卡视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品久久久久久免费影院| 韩国毛片免费大片| 中文字幕一区二区三区 精品| 欧美a免费| 亚洲第一视频在线播放| 久久精品欧美一区二区| 日韩一级精品视频在线观看| 午夜在线观看视频免费 成人| 日本乱中文字幕系列| 可以免费在线看黄的网站| 国产伦久视频免费观看 视频| 精品久久久久久中文| 免费一级片网站| 黄视频网站免费看| 黄色免费三级| 成人免费网站久久久| 亚洲第一页乱| 亚洲天堂一区二区三区四区| 香蕉视频一级| 999精品影视在线观看| 亚洲www美色| 亚洲www美色| 国产不卡在线播放| 亚洲天堂在线播放| 在线观看成人网| 亚洲精品影院| 日韩一级黄色| 国产不卡精品一区二区三区| 91麻豆爱豆果冻天美星空| 沈樵在线观看福利| 日韩av成人| 国产亚洲免费观看| 精品久久久久久中文| 国产极品精频在线观看| 成人高清视频免费观看| 国产亚洲免费观看| 日韩avdvd| 日本乱中文字幕系列| 韩国三级视频在线观看| 精品国产香蕉在线播出| 亚洲 欧美 成人日韩| 九九久久99| 国产不卡福利| 亚洲wwwwww| 国产精品免费久久| 日日夜夜婷婷| 精品久久久久久中文字幕2017| 黄色短视屏| 韩国三级视频网站| 成人高清免费| 成人a大片高清在线观看| 日韩专区一区| 精品视频免费在线| 色综合久久天天综合| 久久精品大片| 久久国产一区二区| 九九九在线视频| 国产精品自拍亚洲| 久久精品大片| 九九精品影院| 国产成人啪精品视频免费软件| 欧美1卡一卡二卡三新区| 国产麻豆精品hdvideoss| 亚州视频一区二区| 日韩一级黄色大片| 欧美大片一区| 二级片在线观看| 九九免费高清在线观看视频| 欧美日本免费| 台湾美女古装一级毛片| 成人影院一区二区三区| 欧美一级视| 青青久热| 久久精品免视看国产明星| 四虎影视久久久免费| 亚久久伊人精品青青草原2020| 999精品影视在线观看| 国产成人精品综合在线| 精品久久久久久中文| 韩国毛片| 日韩中文字幕在线播放| 久久精品成人一区二区三区| 免费毛片播放| 久久99青青久久99久久| 中文字幕一区二区三区精彩视频| 超级乱淫伦动漫| 九九精品影院| 精品久久久久久免费影院| 青青久热| 91麻豆精品国产高清在线| 日韩在线观看视频免费| 精品国产亚洲人成在线| 久久国产精品只做精品| 国产成a人片在线观看视频| 可以免费在线看黄的网站| 黄视频网站在线免费观看| 欧美激情一区二区三区视频 | 九九热国产视频| 国产综合91天堂亚洲国产| 日本伦理片网站| 日韩免费片| 亚洲女人国产香蕉久久精品| 黄色福利片| 精品久久久久久免费影院| 麻豆污视频| 国产视频一区二区三区四区| 日韩男人天堂| 成人影院一区二区三区| 国产高清在线精品一区a| 99热视热频这里只有精品| 九九热精品免费观看| 国产伦理精品| 日韩在线观看视频黄| 国产成人精品一区二区视频| 欧美另类videosbestsex视频 | 二级片在线观看| 午夜欧美福利| 国产国产人免费视频成69堂| 欧美激情一区二区三区视频 | 国产成人精品综合在线| 成人a大片在线观看| 免费一级片网站| 99久久精品国产麻豆| 欧美a级片免费看| 四虎影视库| 免费国产一级特黄aa大片在线| 久久福利影视| 日韩专区一区| 欧美1区| 四虎影视久久久免费| a级精品九九九大片免费看| 91麻豆爱豆果冻天美星空| 日韩一级黄色大片| 日韩专区第一页| 99久久精品国产高清一区二区| 免费一级片在线| 香蕉视频亚洲一级| 成人免费观看男女羞羞视频| 你懂的福利视频| 欧美国产日韩精品| 中文字幕97| 国产原创中文字幕| 免费一级片网站| 麻豆网站在线看| 91麻豆精品国产自产在线| 尤物视频网站在线| 精品国产一区二区三区免费| 美国一区二区三区| 日韩专区一区| 香蕉视频一级| 一级毛片视频播放| 天天做人人爱夜夜爽2020毛片| 国产亚洲精品aaa大片| 国产成人啪精品视频免费软件| 日韩专区第一页| 日日夜夜婷婷| 午夜在线亚洲| 国产伦精品一区二区三区在线观看 | 91麻豆国产福利精品| 国产成人精品综合在线| 成人高清视频在线观看| 欧美激情一区二区三区在线| 精品国产亚一区二区三区| 免费国产在线观看| 久草免费在线观看| 国产一区二区精品久久91| 国产一区二区精品尤物| 999精品视频在线| 久久99爰这里有精品国产| 亚欧成人乱码一区二区| 精品久久久久久免费影院| 日韩在线观看视频黄| 二级片在线观看| 亚飞与亚基在线观看| 久草免费在线观看|