Python写一个读取shp文件并显示的代码
时间: 2024-05-05 20:20:24 浏览: 280
以下是 Python 读取 shp 文件并显示的代码:
``` python
import shapefile
import matplotlib.pyplot as plt
# 读取shp文件
sf = shapefile.Reader("file.shp")
# 获取shape对象
shapes = sf.shapes()
# 获取bbox边界
bbox = shapes[0].bbox
# 获取记录
records = sf.records()
# 获取字段名
fields = sf.fields
# 绘制图形
fig, ax = plt.subplots()
for shape in shapes:
x, y = zip(*shape.points)
ax.plot(x, y)
plt.show()
```
请确认这个代码是否满足您的要求。
相关问题
读取shp文件,并显示地图 python
在Python中读取和显示shp文件需要使用 GIS 库,例如Geopandas和Folium。 Geopandas可以使处理地理数据更加容易,而Folium则是一个基于leaflet.js的交互式地图库。
首先,我们需要安装Geopandas和Folium。可以使用pip命令进行安装,例如:
```
pip install geopandas
pip install folium
```
接下来,我们需要导入必要的库:
```python
import geopandas as gpd
import folium
from folium.plugins import HeatMap
```
然后,我们可以使用Geopandas读取shp文件:
```python
shapefile = gpd.read_file('myshapefile.shp')
```
接着,我们可以使用Folium将数据可视化。使用`folium.Map()`函数初始化一个基本地图。然后,我们可以像下面这样把数据添加到地图上:
```python
# 创建Folium地图
map = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加shpfile的地图层
folium.GeoJson(shapefile).add_to(map)
# 显示地图
map
```
如果我们想在地图上添加热力图,我们可以使用Folium的`HeatMap()`函数:
```python
# 创建Folium地图
map = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加shpfile的地图层
folium.GeoJson(shapefile).add_to(map)
# 创建并添加热力图
HeatMap(data).add_to(map)
# 显示地图
map
```
这是一个简单的例子,可以根据自己的需求进一步设置和自定义地图。
python 写一个GIS界面,可以加载显示本地shp数据
以下是一个简单的Python GIS界面代码,可以加载和显示本地shp数据:
```python
from tkinter import *
import shapefile
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class GIS_GUI:
def __init__(self, master):
self.master = master
master.title("Python GIS")
# 创建加载按钮
self.load_button = Button(master, text="Load", command=self.load_shp)
self.load_button.pack()
# 创建绘图区域
self.figure = plt.figure(figsize=(6, 6))
self.canvas = FigureCanvasTkAgg(self.figure, master=self.master)
self.canvas.get_tk_widget().pack()
def load_shp(self):
# 打开文件选择对话框,选择本地shp文件
file_path = filedialog.askopenfilename(filetypes=[("Shapefile", "*.shp")])
# 读取shp文件
sf = shapefile.Reader(file_path)
# 获取shp文件中的所有图形
shapes = sf.shapes()
# 绘制shp文件中的所有图形
for shape in shapes:
x, y = zip(*shape.points)
self.figure.gca().plot(x, y)
# 更新绘图
self.canvas.draw()
root = Tk()
gis = GIS_GUI(root)
root.mainloop()
```
说明:
- 导入了`tkinter`、`shapefile`和`matplotlib`模块。
- 创建了一个名为`GIS_GUI`的类,这个类包含了一个`load_shp`方法,用于加载和显示shp数据。
- 在`__init__`方法中创建了一个窗口,并添加了一个名为`Load`的按钮和一个绘图区域。
- 在`load_shp`方法中,打开文件选择对话框,选择本地shp文件,并读取其中的图形数据。
- 使用matplotlib绘制shp文件中的所有图形,并更新绘图区域。
注意:在运行代码前,需要先安装`shapefile`和`matplotlib`模块。
阅读全文