json文件格式为{"y":115.9041400,"x":29.1664300,"label":0},用flask将聚类python代码传给前端leaflet绘制轨迹聚类图
时间: 2023-11-05 21:00:36 浏览: 80
这里提供一个简单的示例:
在Python中,你可以先定义一个函数来生成轨迹聚类数据,返回的数据格式为一个包含多个字典的列表,每个字典代表一个坐标点,格式为{"y":纬度,"x":经度,"label":聚类标签}。
```python
import random
def generate_data():
data = []
for i in range(50):
lat = random.uniform(29, 30)
lng = random.uniform(115, 116)
label = random.randint(0, 4)
data.append({"y": lat, "x": lng, "label": label})
return data
```
接下来,使用Flask框架将生成的数据传给前端:
```python
from flask import Flask, jsonify, render_template
app = Flask(__name__)
@app.route('/')
def index():
data = generate_data()
return render_template('index.html', data=data)
@app.route('/data')
def get_data():
data = generate_data()
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
```
在这里,我们定义了两个路由。`/`路由会渲染名为`index.html`的模板文件,并将生成的数据传给前端。`/data`路由会直接返回生成的数据,格式为JSON。
最后,我们在`index.html`中使用Leaflet库来绘制聚类图:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Leaflet Clustering Example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/leaflet/1.3.1/leaflet.css" />
<script src="https://cdn.jsdelivr.net/leaflet/1.3.1/leaflet.js"></script>
<script src="https://cdn.jsdelivr.net/leaflet.markercluster/1.4.1/leaflet.markercluster.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/leaflet.markercluster/1.4.1/MarkerCluster.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/leaflet.markercluster/1.4.1/MarkerCluster.Default.css" />
<style>
#map {
height: 400px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map').setView([29.16643, 115.90414], 10);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',
maxZoom: 18
}).addTo(map);
var data = {{ data|tojson }};
var markers = L.markerClusterGroup();
for (var i = 0; i < data.length; i++) {
var marker = L.marker([data[i].y, data[i].x]);
marker.bindPopup('Label: ' + data[i].label);
markers.addLayer(marker);
}
map.addLayer(markers);
</script>
</body>
</html>
```
在这里,我们使用Leaflet和Leaflet.markercluster库来绘制聚类图。首先,我们创建一个地图并添加一个图层。然后,我们从Flask传来的JSON数据中提取坐标和标签信息,添加到一个MarkerClusterGroup中。最后,我们将MarkerClusterGroup添加到地图中。
这样,当我们在浏览器中访问`http://localhost:5000/`时,就可以看到一个聚类图了。
阅读全文