使用fiona与shapely提取上海与苏州、上海与嘉兴、苏州与嘉兴的城市边界线,并分别计算三条边界线的长度。 画出上海、苏州、嘉兴的城市边界,对三个城市的两两边界线使用不同的颜色样式画出,文字标记三个城市。
时间: 2024-05-16 21:15:38 浏览: 11
首先需要获取上海、苏州和嘉兴的城市边界线数据,可以从开放数据平台获取相应的 shapefile 文件。然后使用 fiona 库读取 shapefile 文件,使用 shapely 库提取边界线并计算长度。最后使用 matplotlib 库画出城市边界图。
以下是示例代码:
```python
import fiona
from shapely.geometry import shape, LineString
import matplotlib.pyplot as plt
# 读取 shapefile 文件
shanghai = fiona.open('path/to/shanghai.shp')
suzhou = fiona.open('path/to/suzhou.shp')
jiaxing = fiona.open('path/to/jiaxing.shp')
# 获取上海边界线并计算长度
shanghai_boundary = shape(shanghai[0]['geometry'])
shanghai_length = shanghai_boundary.length
# 获取苏州边界线并计算长度
suzhou_boundary = shape(suzhou[0]['geometry'])
suzhou_length = suzhou_boundary.length
# 获取嘉兴边界线并计算长度
jiaxing_boundary = shape(jiaxing[0]['geometry'])
jiaxing_length = jiaxing_boundary.length
# 画出城市边界图
fig, ax = plt.subplots(figsize=(10, 10))
ax.set_aspect('equal')
# 画出上海边界线,并使用不同的颜色和样式
shanghai_boundary_line = LineString(shanghai_boundary.exterior.coords)
ax.plot(*shanghai_boundary_line.xy, color='blue', linestyle='-', linewidth=2)
ax.text(shanghai_boundary.centroid.x, shanghai_boundary.centroid.y, 'Shanghai', fontsize=12, ha='center', va='center')
# 画出苏州边界线,并使用不同的颜色和样式
suzhou_boundary_line = LineString(suzhou_boundary.exterior.coords)
ax.plot(*suzhou_boundary_line.xy, color='green', linestyle='--', linewidth=2)
ax.text(suzhou_boundary.centroid.x, suzhou_boundary.centroid.y, 'Suzhou', fontsize=12, ha='center', va='center')
# 画出嘉兴边界线,并使用不同的颜色和样式
jiaxing_boundary_line = LineString(jiaxing_boundary.exterior.coords)
ax.plot(*jiaxing_boundary_line.xy, color='red', linestyle=':', linewidth=2)
ax.text(jiaxing_boundary.centroid.x, jiaxing_boundary.centroid.y, 'Jiaxing', fontsize=12, ha='center', va='center')
plt.show()
# 输出三条边界线的长度
print('Shanghai boundary length:', shanghai_length)
print('Suzhou boundary length:', suzhou_length)
print('Jiaxing boundary length:', jiaxing_length)
```
运行以上代码即可得到上海、苏州和嘉兴的城市边界图及边界线长度。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)