真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python地圖柵格化實(shí)例

Python地圖柵格化實(shí)例

引言

shapefileGIS中的一種非常重要的數(shù)據(jù)類型,由ESRI開發(fā)的空間數(shù)據(jù)開放格式,目前該數(shù)據(jù)格式已經(jīng)成為了GIS領(lǐng)域的開放標(biāo)準(zhǔn)。目前絕大多數(shù)開源以及收費(fèi)的GIS軟件都支持該數(shù)據(jù)類型。事實(shí)上,shapefile文件指的一種文件存儲(chǔ)的方法,實(shí)際上該種文件是由多個(gè)文件組成的。組成一個(gè)shapefile有三種文件必不可少, '.shp','.shx','.dbf'文件。

成都創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括做網(wǎng)站、成都網(wǎng)站建設(shè)、電商網(wǎng)站制作開發(fā)、小程序開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

geopandas對(duì)shapefile提供了很好的讀取與寫出支持。geopandas庫(kù)允許對(duì)幾何類型進(jìn)行空間操作,其中DataFrame結(jié)構(gòu)相當(dāng)于GIS數(shù)據(jù)中的一張屬性表,使得可以直接操作矢量數(shù)據(jù)屬性表,使得python中操作地理數(shù)據(jù)更加方便。本實(shí)例通過(guò)geopandas實(shí)現(xiàn)對(duì)地理數(shù)據(jù)的操作。

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

由于geopandas庫(kù)的安裝需要一些前提庫(kù),因此需要先安裝一些庫(kù)

pip install pipwin
pipwin install gdal
pipwin install fiona
pip install geopandas

實(shí)測(cè)以上方法可以成功在windows下安裝(注:如果在Anaconda下安裝geopandas更為方便)

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

下載地址

該數(shù)據(jù)是一段GPS掃描數(shù)據(jù),包含經(jīng)緯度。

代碼實(shí)例

環(huán)境引入
import geopandas as gp
import matplotlib.pyplot as plt
from shapely import geometry
import math
GPS數(shù)據(jù)處理
lake_original_path = 'data.txt'
lake_original_data = ''
lake_points = []
# 讀取文件
with open(lake_original_path) as f:
    lake_original_data = f.read()
# 處理經(jīng)緯度坐標(biāo) 并以Point的形式添加到list中
for xy in lake_original_data.split(';'):
    x, _, y = xy.partition(',')
    x = float(x.strip()) / 100
    y = float(y.strip()) / 100
    lake_points.append(geometry.Point(y, x))
創(chuàng)建要素
# 創(chuàng)建線狀要素
lake_line = geometry.LineString(lake_points)
# crs指定坐標(biāo)系
lake_ = gp.GeoSeries(lake_line, crs='EPSG:4326')
# 保存shp文件
lake_.to_file("boundary.shp", driver='ESRI Shapefile', encoding='utf-8')
# 記錄邊界條件 用于構(gòu)建柵格
x_min, y_min, x_max, y_max = lake_line.bounds[:4]
# 繪圖
lake_.plot()
plt.show()

構(gòu)建柵格
# 柵格大小
GRID_WIDTH = 0.009 * 2 / 100
grid_rows_num = int(math.ceil((y_max - y_min) / float(GRID_WIDTH)))
grid_columns_num = int(math.ceil((x_max - x_min) / float(GRID_WIDTH)))
grids = []
for r in range(grid_rows_num):
    for c in range(grid_columns_num):
        grid_4coords = []
        # 左上角
        x_lt = x_min + c * GRID_WIDTH
        y_lt = y_max - r * GRID_WIDTH
        # 右上角
        x_rt = x_lt + GRID_WIDTH
        y_rt = y_lt
        # 左下角
        x_lb = x_lt
        y_lb = y_lt - GRID_WIDTH
        # 右下角
        x_rb = x_rt
        y_rb = y_lb
        # 兩個(gè)三角形拼接一個(gè)柵格
        grid_4coords.append(geometry.Point(x_lt,y_lt))
        grid_4coords.append(geometry.Point(x_rt,y_rt))
        grid_4coords.append(geometry.Point(x_rb,y_rb))
        grid_4coords.append(geometry.Point(x_lb,y_lb))
        grid_4coords.append(geometry.Point(x_lt,y_lt))
        # 創(chuàng)建一個(gè)網(wǎng)格
        grids.append(geometry.LineString(grid_4coords))
grid_ = gp.GeoSeries(grids)
grid_.to_file('E:\\just\\海韻湖智能技術(shù)實(shí)驗(yàn)場(chǎng)\\data\\grids.shp',driver='ESRI Shapefile', encoding='utf-8')
grid_.plot()
plt.show()

要素疊加
# 要素疊加
elements = [lake_line]
elements += grids
elements_ = gp.GeoSeries(elements)
elements_.to_file('elements.shp', driver='ESRI Shapefile', encoding='utf-8')
elements_.plot()
plt.show()

參考鏈接

python-geopandas讀取、創(chuàng)建shapefile文件、geopandas學(xué)習(xí)教程

GeoPandas官方文檔

基于arcpy實(shí)現(xiàn)導(dǎo)出區(qū)域內(nèi)網(wǎng)格中心坐標(biāo)功能

gepandas安裝問(wèn)題


當(dāng)前名稱:Python地圖柵格化實(shí)例
文章分享:http://weahome.cn/article/dsogcep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部