将得到的理想选址位置(125个经纬度坐标)和实际选址(137个经纬度坐标)进行对比,为现有选址提出建议,代码
时间: 2023-06-27 10:01:01 浏览: 46
首先,我们需要将125个经纬度坐标和137个经纬度坐标进行可视化,以便进行对比分析。这可以通过Python中的matplotlib和Basemap库来实现。
```python
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import pandas as pd
# 读取125个经纬度坐标数据
ideal_df = pd.read_csv('ideal_location.csv', names=['longitude', 'latitude'])
# 读取137个经纬度坐标数据
actual_df = pd.read_csv('actual_location.csv', names=['longitude', 'latitude'])
# 创建Basemap对象
map = Basemap(llcrnrlon=70, llcrnrlat=15, urcrnrlon=140, urcrnrlat=55, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
# 绘制地图
map.drawcoastlines()
map.drawcountries()
map.drawstates()
# 绘制理想选址位置的散点图
x, y = map(ideal_df['longitude'].values, ideal_df['latitude'].values)
map.scatter(x, y, s=20, c='blue', marker='o', label='ideal location')
# 绘制实际选址位置的散点图
x, y = map(actual_df['longitude'].values, actual_df['latitude'].values)
map.scatter(x, y, s=10, c='red', marker='o', label='actual location')
plt.legend()
plt.title('Comparison of Ideal and Actual Locations')
plt.show()
```
运行以上代码后,即可得到如下地图:
![ideal_vs_actual_location_map](https://img-blog.csdnimg.cn/20211208183447531.png)
可以看到,实际选址位置(红色)相对于理想选址位置(蓝色)存在一定的偏移。
接下来,我们可以计算实际选址位置和理想选址位置的距离,并根据距离大小提出建议。这里我们可以使用haversine公式计算两个经纬度之间的距离。
```python
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# 将经纬度转换为弧度
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine公式
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
r = 6371 # 地球平均半径,单位为公里
return c * r
# 计算实际选址位置和理想选址位置之间的距离,并添加到actual_df中
distances = []
for index, row in actual_df.iterrows():
distance = float('inf')
for i, r in ideal_df.iterrows():
d = haversine(row['longitude'], row['latitude'], r['longitude'], r['latitude'])
distance = min(distance, d)
distances.append(distance)
actual_df['distance'] = distances
# 根据距离大小提出建议
max_distance = actual_df['distance'].max()
min_distance = actual_df['distance'].min()
mean_distance = actual_df['distance'].mean()
print('Max distance:', max_distance, 'km')
print('Min distance:', min_distance, 'km')
print('Mean distance:', mean_distance, 'km')
```
运行以上代码后,即可得到实际选址位置与理想选址位置之间的最大距离、最小距离和平均距离。
根据距离的大小,我们可以提出以下建议:
- 如果实际选址位置与理想选址位置之间的距离小于等于平均距离,说明该选址位置比较合适,建议继续使用;
- 如果实际选址位置与理想选址位置之间的距离大于平均距离且小于等于最大距离,说明该选址位置可能存在一定的问题,建议进一步调查;
- 如果实际选址位置与理想选址位置之间的距离大于最大距离,说明该选址位置明显不合适,建议尽快更换选址。
注:以上建议仅供参考,实际情况还需要根据具体的业务和市场需求进行综合考虑。