Products
GG网络技术分享 2025-11-13 11:54 1
根据上文内容,
栅格计算器是地理信息系统中常用的工具,用于处理栅格数据。

Python给了丰有钱的库和工具来处理栅格数据, 比方说GDAL、NumPy、Matplotlib和PyQt5等。
下文代码示例展示了怎么用Python编写一个轻巧松的GIS栅格计算器, 实现了加、减、乘、除四种基本计算功Neng。
python import gdal import numpy as np import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog, QGridLayout, QLabel, QLineEdit, QPushButton
class RasterCalculator: def init: super.init self.initUI
def initUI:
self.setWindowTitle
self.input1Label = QLabel
self.input1LineEdit = QLineEdit
self.input2Label = QLabel
self.input2LineEdit = QLineEdit
self.outputLabel = QLabel
self.outputLineEdit = QLineEdit
self.addButton = QPushButton
self.subButton = QPushButton
self.mulButton = QPushButton
self.divButton = QPushButton
grid = QGridLayout
grid.setSpacing
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
grid.addWidget
self.setLayout
self.addButton.clicked.connect
self.subButton.clicked.connect
self.mulButton.clicked.connect
self.divButton.clicked.connect
def add:
input1 = self.input1LineEdit.text
input2 = self.input2LineEdit.text
output = self.outputLineEdit.text
self.calculate
def sub:
input1 = self.input1LineEdit.text
input2 = self.input2LineEdit.text
output = self.outputLineEdit.text
self.calculate
def mul:
input1 = self.input1LineEdit.text
input2 = self.input2LineEdit.text
output = self.outputLineEdit.text
self.calculate
def div:
input1 = self.input1LineEdit.text
input2 = self.input2LineEdit.text
output = self.outputLineEdit.text
self.calculate
def calculate:
try:
input1_ds = gdal.Open
input2_ds = gdal.Open
input1_band = input1_ds.GetRasterBand
input2_band = input2_ds.GetRasterBand
input1_data = input1_band.ReadAsArray.astype
input2_data = input2_band.ReadAsArray.astype
if operator == '+':
result = input1_data + input2_data
elif operator == '-':
result = input1_data - input2_data
elif operator == '*':
result = input1_data * input2_data
elif operator == '/':
result = input1_data / input2_data
else:
raise Exception
output_ds = gdal.GetDriverByName.Create
output_ds.GetRasterBand.WriteArray
output_ds.SetProjection)
output_ds.SetGeoTransform)
input1_ds = None
input2_ds = None
output_ds = None
plt.imshow
plt.show
except Exception as e:
print
if name == 'main': app = QApplication window = RasterCalculator window.show app.exec_
该代码示例用PyQt5创建图形用户界面 GDAL读取栅格数据,NumPy进行计算,Matplotlibkan得出来后来啊。
用户Neng。
Demand feedback