用python写一个GIS界面,界面有一个按钮,点击按钮可以选择加载本地dwg和shp文件进行显示
时间: 2024-05-09 13:20:29 浏览: 171
以下是一个简单的Python代码,可以创建一个基本的GIS界面,包括一个按钮,可以选择加载本地DWG和SHP文件进行显示。
首先,需要安装必要的库,如PyQt5、matplotlib和GDAL。可以使用以下命令进行安装:
```
pip install PyQt5 matplotlib GDAL
```
然后,可以使用以下代码创建一个基本的GIS界面:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog
from osgeo import ogr
import matplotlib.pyplot as plt
class GISApp(QWidget):
def __init__(self):
super().__init__()
self.title = 'GIS App'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.button = QPushButton('Select Files', self)
self.button.setToolTip('Select DWG or SHP files')
self.button.move(20, 20)
self.button.clicked.connect(self.selectFiles)
self.show()
def selectFiles(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
files, _ = QFileDialog.getOpenFileNames(self, "Select Files", "", "DWG (*.dwg);;SHP (*.shp)", options=options)
if files:
for file in files:
self.displayFile(file)
def displayFile(self, file):
if file.endswith('.shp'):
driver = ogr.GetDriverByName('ESRI Shapefile')
dataSource = driver.Open(file, 0)
layer = dataSource.GetLayer()
x_min, x_max, y_min, y_max = layer.GetExtent()
fig, ax = plt.subplots()
ax.set_xlim(x_min, x_max)
ax.set_ylim(y_min, y_max)
for feature in layer:
geometry = feature.GetGeometryRef()
x = []
y = []
for i in range(geometry.GetPointCount()):
x.append(geometry.GetX(i))
y.append(geometry.GetY(i))
ax.plot(x, y)
plt.show()
elif file.endswith('.dwg'):
# TODO: Add DWG support
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
gisApp = GISApp()
sys.exit(app.exec_())
```
在这个代码中,我们创建了一个名为`GISApp`的QWidget类,它包含一个名为`button`的QPushButton。当用户点击按钮时,会调用`selectFiles`方法,该方法打开文件对话框,允许用户选择要加载的DWG或SHP文件。选择文件后,`displayFile`方法将被调用,该方法根据文件扩展名选择正确的库来加载文件内容。对于SHP文件,我们使用GDAL库打开文件,并使用Matplotlib库在一个新的窗口中显示图形。
注意:这只是一个非常简单的示例代码,可以根据需要进行修改和扩展。还有很多其他的库和技术可以用于创建更复杂和功能强大的GIS应用程序。
阅读全文
相关推荐


















